文中详细讲解web安全之SQL注入的绕过技术,通过文中内容更加深入的掌握SQL注入绕过技术原理及使用方法,从而更好的用于渗透测试中;文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。
SQL注入绕过技术(五)
信任白名单绕过
部分WAF会自带一些文件白名单,对于这些白名单waf是不会进行拦截,所以可利用这个特点,来进行突破。 白名单通常有目录:
?a=/admin.php&name=1' union select 1,version()--+&submit=1
/phpmyadmin?name='union select 1,user()--+&submit=1
静态文件绕过
除了白名单信任文件和目录外,还有一些waf不会对静态文件进行拦截,例如 图片文件 jpg 、png 、gif 或者 css 、js 会对这些静态文件的操作不会进行检测从而绕过 waf 拦截
?/1.jpg&name='union select 1,version()--+&submit=1
?/1.jpg=/1.jpg&name='union select 1,user()--+&submit=1
?/1.css=/1.css&name='union select 1,database()--+&submit=1
pipline 绕过注入
当我们使用burp截取数据时,其中会包含一个Connection 字段,一般值为 close,apache 等容器根据这个字段决定是保持该 tcp 连接或是断开。当发送的内容太大,超过一个 http 包容量,需要分多次发送时,值会变成 keep-alive,即本次发起的 http 请求所建立的 tcp 连接不断开,直到所发送内容结束 Connection为close为止 所以我们可以利用这一特性,复制整个包信息放到第一个包后面,把第一个包的close改成keep-alive ,然后将burp自动更新Content-Length 勾去掉。 首先第一步,我们将复制整个包信息放到第一个包后面,然后修改第一个包的语句: 然后第二步,将修改的语句长度填写到第一个包中的Contest-Length中,我们可以通过将语句发送到Comparer去计算长度
id=-1 union select 1,user()--+&submit=1
最后第三步,将第一个包中的close修改成keep-alive,将burp自动更新Content-Length 勾去掉。 发送后,我们可以看出能够成功获取数据。 如果我们将自动更新Content-Length勾选,那么我们的Content-Length会发生变化,虽然在这个测试中是可以的,但在部分测试中是不能成功获取数据的。
|