学习sqli-labs之前先介绍一些函数,以便于下面的payload看的懂
group_concat函数
将查询出来的多个结果连接成一个字符串结果,用于在一个回显显示多个结果

同理的还有
concat_ws()
limit star,size用法
start:从第几条记录开始。
size:读取几条记录。


sqli-lab-1
关键代码
- $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
是被单引号包围,即字符型注入,写payload要末尾注释单引号

用concat_ws()可以加分隔符,便于判断

接下来查询当前数据库的表~ //这里有个疑问,上面用的database()只能查询当前的数据库,如果Flag是在别的数据库呢,以后想想~

注意数据库的昵称要用单引号包围,不然会报错,当然也可以把数据库的昵称转换为16进制也是可以的

用limit查找所有的表名


显然太麻烦了,因为只返回一个结果 利用之前的group_concat()将结果放在一起返回

接下来爆字段

用concat_wa()发现没用,于是用group_concat()

接下来就是爆字段内容了
paload格式为: select 字段名 from 表名

如果过滤了union呢,或者是过滤了“-”符号呢 之前参加了南邮CTF的一道sql,过滤了* 还有- 即不能union 注入
接下来利用手工报错注入