存在过滤的绕过总结
- 过滤空格
常见的过滤空格的绕过方式是使用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进行注入。
分块传输
后面更新
评论 (0)