记一次渗透测试过程

收到某某测试任务,然后有了下面这一篇关于分块传输sql注入payload姿势分享以及绕过杀软上线的文章。

在对某个网站进行渗透测试时,发现一个登陆界面,在尝试弱口令无果后,加个单引号发现报错了,按照以往的经验,这个登陆界面大概率是存在注入漏洞的。

尝试利用报错注入,直接获取到数据库名称,这一看注入不就是有了吗(这里构造万能密码进行登录绕过,发现行不通),看看使用sqlmap能不能直接获取到服务器权限。

然而使用sqlmap并没有跑出来注入,不知道是什么情况,这里怀疑是网站对某些关键字符进行过滤拦截了,尝试使用分块传输进行绕过。

这里稍微说一下分块传输的原理:

在头部加入Transfer-Encoding:chunked之后,就代表该报文采用了分块编码。这时,post请求报文中的数据部分需要改为用一系列分块来传输。每个分块包含十六进制的长度值和数据,长度值独占一行,长度不包括它结尾的,也不包括分块数据结尾的,且最后需要用0独占一行表示结束。

使用分块后,默认的请求包头数据会增加请求头,告诉服务器将要用分块传输,语句经过拆分,变为零碎的数据包,WAF检测机制就不会认为此语句是一个危险的代码,在分块传输的数据包没有完全传完的时候,服务器是不做任何响应,等到全部传完后,在后台进行完整的语句拼接,带入数据库查询,从而绕过WAF的限制。

简单的来说就是把数据包分成一块一块的传过去,从而来骗过WAF。

在burp上直接利用chunked-coding-converter插件进行测试,发现分块传输是可行的。

那就直接使用sqlmap将流量代理到burp上使用分块传输进行绕过,成功获取到服务器权限:

sqlmap-rsql.txt--proxy=


转载请注明:http://www.xcqg58.com/lsqy/lsqy/26846807.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了