天天看点

sqli-labs-master Less-1

提示提交id值,用单引号试一下,报错:

sqli-labs-master Less-1

猜测id值在查询语句中被单引号包裹。

接下来用order by测字段数 测出3个字段。

然后看当前的数据库,构造payload:http://127.0.0.1/sqli-labs-master/Less-1/?id=1'  union select 1,1,database() %23

给我返回了这个id=1的值:

sqli-labs-master Less-1

要执行union后的语句就要让union前的查询语句不正确,加个and 1=0:

sqli-labs-master Less-1

数据库名字知道了,爆表:

sqli-labs-master Less-1

只能显示第一个,这就比较坑了,看了源码发现是有limit 0,1 不过被我%23注释掉了啊...

sqli-labs-master Less-1

原来是这个mysql_fetch_array的问题,它从结果中只取一行。

使用group_concat()这个函数,能把这个字段的所有行的结果连在一起返回。

sqli-labs-master Less-1

实际上这个函数是与group by配套使用的,但是咱们的语句没有用group by,没有依据哪个字段分组,就把所有字段都连在一起了,详情见:点击打开链接

然后就是爆列名,需要注意的是,爆users这个表,where条件table_name=后面要用users的十六进制,users十六进制是0x7573657273

sqli-labs-master Less-1

然后看内容就可以了:

sqli-labs-master Less-1

继续阅读