web

SQL注入基础整理(二)

noob
2021-01-31 / 0 评论 / 295 阅读 / 正在检测是否收录...

存在过滤的绕过总结

  • 过滤空格
    常见的过滤空格的绕过方式是使用URL编码和//、括号等,利用%0a、%0b、%0c、%09、%a0、//进行绕过
  • 过滤SELECT
    如果是对SELECT进行替换为空,则使用嵌套的方式进行绕过,如果是仅仅对SELECT设限,则使用大小写绕过,或者是使用内联注释绕过,即/!../绕过
  • 过滤and、or等
    使用&&代替and,||代替or
  • =被过滤
    使用通配符like进行绕过,或者在判断条件<>前加!
  • 过滤大于小于号
    引用函数greatest()、least()、strcmp()、between、in关键字等,在盲注中会遇到这类问题。
  • 过滤引号
    分开讨论,如果没有过滤/则可以利用转义进行操作,如果/也被过滤则使用宽字节注入或者其他编码进行绕过。二次注入:输入的数据经过addslashes之后无法进行账户入,但是在引用该数据时,不会经过addslashes,于是可以通过该方式产生注入。
  • 字符串截断

       $conn = mysqli_connect("127.0.0.1","root","root","aaa");
       $title = addslashes($_GET['title']);
       $title = substr($title,0,10);
       echo"<center>$title<center>";
       $content = addslashes($_GET['content']);
       $sql = "INSERT INTO news VALUES(2,'$title','$content')";
       $res = mysqli_query($conn, $sql);
    

例如该php代码,可以看到对title进行截断,不超过十个字符,所以可以利用addslashes函数的作用,例如输入aaaaaaaaa',在截取时就会输出aaaaaaaaa,所以直接将$sql = "INSERT INTO news VALUES(2,'$title','$content')"的单引号转义,然后通过content进行注入。

分块传输

后面更新

5

评论 (0)

取消