最新时间注入攻击和代码分析技术

news2024/11/24 21:06:11

点击星标,即时接收最新推文

e1b83ddb3c40ebef197d180668eedd20.png

本文选自《web安全攻防渗透测试实战指南(第2版)》

点击图片五折购书

af8ba6450e725fb6d9e36d4c31ec990b.gif

时间注入攻击

时间注入攻击的测试地址在本书第2章。

访问该网址时,页面返回yes;在网址的后面加上一个单引号,即可再次访问,最后页面返回no。这个结果与Boolean注入非常相似,本节将介绍遇到这种情况时的另外一种注入方法——时间注入。它与Boolean注入的不同之处在于,时间注入是利用sleep()或benchmark()等函数让MySQL的执行时间变长。时间注入多与if(expr1,expr2,expr3)结合使用,此if语句的含义是,如果expr1是TRUE,则if()的返回值为expr2;反之,返回值为expr3。所以判断数据库库名长度的语句应如下:

if (length(database())>1,sleep(5),1)

上面这行语句的意思是,如果数据库库名的长度大于1,则MySQL查询休眠5秒,否则查询1。

而查询1需要的时间,大约只有几十毫秒。可以根据Burp Suite中页面的响应时间,判断条件是否正确,结果如图4-40所示。

0ef0656ab6a73e2acf9725974345eaf6.jpeg

图4-40  

可以看出,页面的响应时间是5005毫秒,也就是5.005秒,表明页面成功执行了sleep(5),所以长度是大于1的。尝试将判断数据库库名长度语句中的长度改为10,结果如图4-41所示。

4977a96c5ed5b374b83667828a9a5ab8.jpeg

图4-41  

可以看出,执行的时间是0.002秒,表明页面没有执行sleep(5),而是执行了select 1,所以数据库的库名长度大于10是错误的。通过多次测试,就可以得到数据库库名的长度。得出数据库库名的长度后,查询数据库库名的第一位字母。查询语句跟Boolean注入的类似,使用substr函数,修改后的语句如下:

if(substr(database(),1,1)='t',sleep(5),1)

结果如图4-42所示。

8f581784aeacb37d83f122cb68533b4a.jpeg

图4-42  

可以看出,程序延迟了5秒才返回,说明数据库库名的第一位字母是t。依此类推,即可得出完整的数据库的库名、表名、字段名和具体数据。

56e050b1e09ab5f82dbe820412abc213.gif

时间注入代码分析

在时间注入页面,程序获取GET参数ID,通过preg_match判断参数ID中是否存在Union危险字符,然后将参数ID拼接到SQL语句中。从数据库中查询SQL语句,如果有结果,则返回yes,否则返回no。当访问该页面时,代码根据数据库查询结果返回yes或no,而不返回数据库中的任何数据,所以页面上只会显示yes或no。和Boolean注入不同的是,此处没有过滤sleep等字符,代码如下:

<?php
$con=mysqli_connect("localhost","root","123456","test");
if (mysqli_connect_errno())
{
echo "连接失败: " . mysqli_connect_error();
}
$id = $_GET['id'];
if (preg_match("/union/i", $id)) {
exit("<htm><body>no</body></html>");
}
$result = mysqli_query($con,"select * from users where `id`='".$id."'");
$row = mysqli_fetch_array($result);
if ($row) {
exit("<htm><body>yes</body></html>");
}else{
exit("<htm><body>no</body></html>");
}
?>

此处仍然可以用Boolean注入或其他注入方法,下面用时间注入演示。当访问id=1' and if(ord(substring(user(),1,1))=114,sleep(3),1)%23时,执行的SQL语句如下:

select * from users where `id`='1' and if(ord(substring(user(),1,1))=114,sleep (3),1)%23

由于user()为root,root第一个字符'r'的ASCII值是114,所以SQL语句中if条件成立,执行sleep(3),页面会延迟3秒,通过这种延迟即可判断SQL语句的执行结果。

064b534dd75c232147b46e1540692fef.gif

MS08067安全实验室视频号已上线

欢迎各位同学关注转发~

—  实验室旗下直播培训课程  —

a7ee2fc8ce4ae8cbaa2dfba2648b26dc.png

5acd5b0a5ad8b3e2a54011788af95fff.jpeg

a1dc141525ffdf3ada66148b5b8d26e8.jpeged5f02563f3337d95eb30a382edce473.png

afe445a591681021b8c5d8caa936bad1.jpeg

afaffb4d15eab454ad948b1b5191a73b.jpeg

ef4ab8d0ce966b022e557d57a6641a4f.jpeg

89a2490f3526354e77a27253755a6e9b.jpeg

8e8540f297e0fbaa3e3ceba62c51886a.jpeg


和20000+位同学加入MS08067一起学习

2e413dd716d581dc1e0d375cf5582648.gif

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《从菜鸟到大师之路 Nginx 篇》

《从菜鸟到大师之路 Nginx 篇》 Nginx 简介 Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器&#xff0c;而且支持热部署&#xff0c;几乎可以做到 7 * 24 小时不间断运行&#xff0c;即使运行几个月也不需要重新启动&#xff0c;还能在不间断服务的情况下对软件版本进行…

java面试题-学成在线项目

1、详细说说你的项目吧 从以下几个方面进行项目介绍&#xff1a; 1、项目的背景&#xff0c;包括&#xff1a;是自研还是外包、什么业务、服务的客户群是谁、谁去运营等问题。 2、项目的业务流程 3、项目的功能模块 4、项目的技术架构 5、个人工作职责 6、个人负责模块的详细说…

R统计绘图-线性混合效应模型详解(理论、模型构建、检验、选择、方差分解及结果可视化)

目录 一、 基础理论 二、数据准备 三、构建线性混合效应模型(LMMs) 3.1 lme4线性混合效应模型formula 3.2 随机截距模型构建及检验 3.3 随机截距模型分析结果解释及可视化 3.4 随机斜率模型构建、检验及可视化 四、线性混合效应模型选择 4.1 多模型比较 4.2 模型最优子…

003-第一代硬件系统环境搭建

第一代硬件系统环境搭建 文章目录 第一代硬件系统环境搭建项目介绍摘要结构部分电路部分软件部分 关键字&#xff1a; Qt、 Qml、 硬件、 系统、 搭建 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language&#…

Java编程的精髓:深入理解JVM和性能优化

文章目录 Java虚拟机&#xff08;JVM&#xff09;的核心概念1. 类加载器&#xff08;Class Loader&#xff09;2. 内存区域3. 垃圾回收&#xff08;Garbage Collection&#xff09;4. 类型转换和多态 JVM性能调优1. JVM参数调整2. 内存管理3. 多线程优化4. 使用性能分析工具5. …

服务注册发现_创建服务消费者

创建cloud-consumer-order80模块 pom文件添加依赖 <dependencies><!-- 引入Eureka client依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId&…

CompletableFuture-FutureTask结合线程池提升性能

使用线程池&#xff1a; 返回计算结果&#xff1a; 2.2.3 Future编码实战和优缺点分析 优点&#xff1a;Future线程池异步多线程任务配合&#xff0c;能显著提高程序的运行效率。 缺点&#xff1a; get()阻塞---一旦调用get()方法求结果&#xff0c;一旦调用不见不散&…

GEE:哨兵时间序列遥感数据和动态阈值方法计算物候时期EOS/SOS(2)

作者:CSDN @ _养乐多_ 本文将分享和解释论文《Improved Estimates of Arctic Land Surface Phenology Using Sentinel-2 Time Series》中使用到的基于阈值估算北极地区的植被物候,特别是北极地区的植被季节开始和结束的日期(SoS和EoS)的方法和代码。该方法使用的是使用哨兵…

Pytorch(GPU)环境安装

winR:启动cmd; 输入nvidia-smi 查看cuda的配置 (1) 安装CUDA 地址&#xff1a;https://developer.nvidia.com/cuda-downloads 详细参考&#xff1a;安装CUDA与CUDNN与Pytorch&#xff08;最新超级详细图文版本2023年8月最新&#xff09;_pytorch安装cudnn_LyaJpunov的博客-C…

Zookeeper-JavaApI操作

JavaApI操作 JavaApI操作1) Curator 介绍2) Curator API 常用操作a) 建立连接与CRUD基本操作b) Watch事件监听c) 分布式锁c.1) 介绍c.2) Zookeeper分布式锁原理c.3) 案例&#xff1a;模拟12306售票 JavaApI操作 1) Curator 介绍 Curator 是 Apache ZooKeeper 的Java客户端库。…

树结构的讲解与二叉树的基本运用

目录&#xff1a; 一&#xff0c;树的基本知识 二&#xff0c;树的类型 三&#xff0c;树的存储 四&#xff0c;树的基本运算 五&#xff0c;二叉树堆的基本运用 一&#xff0c;树的基本知识 树是一种非线性的数据结构&#xff0c;它是由n个有限结点组合而成为一个具有层次…

【1++的Linux】之进程(三)

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;什么是进程地址空间&#xff1f;二&#xff0c;进程地址空间是怎么设计的&#xff1f;三&#xff0c;为什么要有进程地址空间&#xff1f; 一&#xff0c;什…

【C++杂货铺】一颗具有搜索功能的二叉树

文章目录 一、二叉搜索树概念二、二叉搜索树的操作2.1 二叉搜索树的查找2.2 二叉搜索树的插入2.3 二叉搜索树的删除 三、二叉搜索树的实现3.1 BinarySearchTreeNode&#xff08;结点类&#xff09;3.2 BinarySearchTree&#xff08;二叉搜索树类&#xff09;3.2.1 框架3.2.2 in…

【力扣485】最大连续 1 的个数

&#x1f451;专栏内容&#xff1a;力扣刷题⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、题目描述二、题目分析1、最值模拟2、双指针 一、题目描述 题目链接&#xff1a;最大连续 1 的个数 给定一个二进制数…

辨析常见的医学数据分析(相关性分析回归分析)

目录 1 常见的三种分类结果&#xff1f; 2 什么是相关性分析&#xff1f; 相关性分析的结果怎么看&#xff1f; 3 什么是回归分析&#xff1f; 1&#xff09;前提 2&#xff09;常见的回归模型 4 对于存在对照组实验的医学病例如何分析&#xff1f; 1&#xff09;卡方检验…

万字解析30张图带你领略glibc内存管理精髓

最近在逛知乎的时候&#xff0c;看到篇帖子&#xff0c;如下&#xff1a; 看了下面所有的回答&#xff0c;要么是没有回答到点上&#xff0c;要么是回答不够深入&#xff0c;所以&#xff0c;借助本文&#xff0c;深入讲解C/C内存管理。 1 写在前面 源码分析本身就很枯燥乏味…

服务注册发现_解读Eureka注册中心UI界面

参数&#xff1a; Environment: 环境&#xff0c;默认为test&#xff0c;该参数在实际使用过程中&#xff0c;可以不用更改Data center&#xff1a; 数据中心&#xff0c;使用的是默认的是 “MyOwn”Current time&#xff1a;当前的系统时间Uptime&#xff1a;已经运行了多少时…

JavaScript系列从入门到精通系列第六篇:JavaScrip当中的运算符,主要涉及JavaScript当中的六大数据类型的四则运算

文章目录 前言 一&#xff1a;算数运算符 1&#xff1a;Number类型的四则运算 2&#xff1a;其他数据类型的四则运算 (一)&#xff1a;加法运算 (二)&#xff1a;减法运算 3&#xff1a;乘法运算 4&#xff1a;除法运算 5&#xff1a;取模运算 前言 运算符也叫操作符。…

极大似然函数和似然函数的区别

极大似然函数和似然函数 "极大似然函数"和"似然函数"是统计学和机器学习中常见的两个概念&#xff0c;它们之间的区别在于它们在不同上下文中的使用方式&#xff1a; 似然函数&#xff08;Likelihood Function&#xff09;&#xff1a; 似然函数通常表示为…

[pai-diffusion]pai的easynlp的diffusion模型训练

PAI-Diffusion模型来了&#xff01;阿里云机器学习团队带您徜徉中文艺术海洋 - 知乎作者&#xff1a;汪诚愚、段忠杰、朱祥茹、黄俊导读近年来&#xff0c;随着海量多模态数据在互联网的爆炸性增长和训练深度学习大模型的算力大幅提升&#xff0c;AI生成内容&#xff08;AI Gen…