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

news2024/11/20 20:25:22

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

da01c6b6cab79b6985c8976a0bca638f.png

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

点击图片五折购书

c5c15859928654fcbff7904e88cead5a.gif

XFF注入攻击

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

X-Forwarded-For简称XFF头,它代表客户端真实的IP地址,通过修改X-Forwarded-For的值可以伪造客户端IP地址,在请求头中将X-Forwarded-For设置为127.0.0.1,然后访问该URL,页面返回正常,如图4-67所示。

db94c8f1c8214762292b5edb278db62a.jpeg

图4-67 

将X-Forwarded-For设置为127.0.0.1',再次访问该URL,页面返回MySQL的报错信息,结果如图4-68所示。

9cf0ad96bddd47f8f1eedfd448206c1d.jpeg

图4-68

将X-Forwarded-For分别设置为127.0.0.1' and 1=1#和127.0.0.1' and 1=2#,再次访问该URL,结果分别如图4-69和图4-70所示。

90617eac6be2070f4c8aa75b3237e093.jpeg

图4-69  

c486bf87f48dd29177760fc75b88a594.jpeg

图4-70  

通过页面的返回结果,可以判断出该地址存在SQL注入漏洞,接着使用order by判断表中的字段数量,最终测试出数据库中存在4个字段,尝试使用Union查询注入方法,语法是X-Forwarded-for:-1' union select 1,2,3,4#,如图4-71所示。

a90f2d26d9945d34e2bc034f9d46b6c4.jpeg

图4-71  

接着,使用Union注入方法完成此次注入。

8efaf60d2f8914f60dbd2bcae649dd85.gif

XFF注入代码分析

PHP中的getenv()函数用于获取一个环境变量的值,类似于$_SERVER或$_ENV,返回环境变量对应的值,如果环境变量不存在,则返回FALSE。

使用以下代码即可获取客户端IP地址。程序先判断是否存在HTTP头部参数HTTP_CLIENT_IP,如果存在,则赋给$ip;如果不存在,则判断是否存在HTTP头部参数

HTTP_X_FORWARDED_FOR。如果存在,则赋给$ip;如果不存在,则将HTTP头部参数REMOTE_ADDR赋给$ip。

<?php
    $con=mysqli_connect("localhost","root","123456","test");
    if (mysqli_connect_errno()){
       echo "连接失败: " . mysqli_connect_error();
    }




    if(getenv('HTTP_CLIENT_IP')) {
        $ip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR')) {
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR')) {
        $ip = getenv('REMOTE_ADDR');
    } else {
        $ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
    }
    
    $result = mysqli_query($con,"select * from winfo where `ip`='$ip'");
    if (!$result) {
        printf("Error: %s\n", mysqli_error($con));
        exit();
    }
    $row = mysqli_fetch_array($result);
    echo $row['username'] . " : " . $row['address'];
    echo "<br>";
?>

接下来,将$ip拼接到select语句中,然后将查询结果输出到界面上。

由于HTTP头部参数是可以伪造的,所以可以添加一个头部参数CLIENT_IP或X_FORWARDED_FOR。

当设置X_FORWARDED_FOR =-1' union select 1,2,3,4%23时,执行的SQL语句如下:

select * from winfo where `ip`='-1' union select 1,2,3,4#'

此时,SQL语句可以分为select * from winfo where `ip`='-1'和union select 1,2,3,4这两条,利用第二条语句(Union查询)就可以获取数据库中的数据。

dee82d74d1ddb8841c5892a1e3ea86f1.gif

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

欢迎各位同学关注转发~

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

19b95fb3b3718b61f7165f0f897654ff.png

766c7de3ae56df8c1c6658c64897a0a8.jpeg

a4c9036ad49896b16e873f746cff7686.jpege0c1e1f9a6e85aedc3ae9d12ec9f1298.png

9cda0a65119f4ede39cdb9fac73d8498.jpeg

76876e9447ce18266b7959abce249403.jpeg

aa3f7d1faaf11bb81a9816209938f1b6.jpeg

70889079d80968e8777b9d2142835760.jpeg

864784b16a9767c268783d1fcdcc5ed7.jpeg


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

aefa65855369e5db181fe3b3385a60ba.gif

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

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

相关文章

Day 07 python学习笔记

函数 函数的传参 关键字参数 函数调用时&#xff0c;指定参数的名称&#xff0c;即为关键字参数 允许传入0个或者多个含参数名的参数关键字参数必须放在普通参数的后面 例&#xff1a; def abc(x,a,b):print(x)print(a)print(b)abc(100,b4,a2) #其中a,b作为关键字参数可以随意…

软件性能测试-初步分析性能瓶颈

完成工具使用和脚本编写后&#xff0c;剩下的流程是执行和结果分析&#xff0c;以及复测。现在来学学结果分析&#xff0c;主要是要学会判断压力的来源&#xff0c;当响应时间远远超出我们的期望&#xff0c;测试人员如何判断是由于什么导致的过载响应。 一、性能瓶颈出现的表…

Spring Security登录表单配置(3)

1、登录表单配置 1.1、快速入门 理解了入门案例之后&#xff0c;接下来我们再来看一下登录表单的详细配置&#xff0c;首先创建一个新的Spring Boot项目&#xff0c;引入Web和Spring Security依赖&#xff0c;代码如下&#xff1a; <dependency><groupId>org.sp…

竹云荣膺2023粤港澳大湾区高质量发展标杆企业

10月12日&#xff0c;由深圳市前海深港现代服务业合作区管理局指导&#xff0c;广东省粤港澳大湾区产业协同发展联合会&#xff08;简称&#xff1a;湾区产联&#xff09;、香港大湾区工商业联合会主办的“深港合作前海向前”2023粤港澳大湾区高质量发展企业发布会、香港大湾区…

[计算机提升] 环境变量

1.5 环境变量 在Windows系统中&#xff0c;环境变量是一组参数或值&#xff0c;用于配置和控制操作系统的行为。它们用来确定系统的默认设置、执行文件路径以及其他系统行为。环境变量可以被所有的应用程序和命令行工具访问和使用&#xff0c;而不需要每次手动指定路径或设置参…

SELECT COUNT(*) 会造成全表扫描吗?

前言 SELECT COUNT(*)会不会导致全表扫描引起慢查询呢&#xff1f; SELECT COUNT(*) FROM SomeTable 网上有一种说法&#xff0c;针对无 where_clause 的 COUNT(*)&#xff0c;MySQL 是有优化的&#xff0c;优化器会选择成本最小的辅助索引查询计数&#xff0c;其实反而性能…

笔记本触摸板没反应?实用技巧助你成功修复!

笔记本电脑是我们日常工作和学习的得力工具之一&#xff0c;而触摸板作为一个重要的输入设备&#xff0c;对于操作的流畅性至关重要。然而&#xff0c;有时候我们可能会遇到笔记本触摸板没反应的问题&#xff0c;这可能会导致困扰和不便。本文将介绍解决笔记本触摸板无响应问题…

SPSS|偏度和峰度|正态性分布检验|实战小练-SPSS学习(1)

目录 学习目的软件版本基础数据实战数据准备数据初探输出结果分析两个重要统计量&#xff1a;偏度和峰度正态性检验结果其他图件输出 学习目的 检验数据集是否服从正态分布。 软件版本 IBM SPSS Statistics 26。 基础数据 一组数据&#xff0c;如&#xff1a;73 76 78 77 …

ES6 Promise

1.Promise 是异步编程的一种解决方案 const promise new Promise(function(resolve, reject) {if (/* 异步操作成功 */){resolve(value);} else {reject(error);} }) 2.Promise的三种状态 待定&#xff08;pending&#xff09;: 初始状态&#xff0c;既没有被兑现&#xff…

情绪即需求

情绪即需求 心理学认为&#xff0c;每个情绪背后都藏着一个未被满足的心里需求. 模型介绍 每一个情绪背后&#xff0c;都有一个未被满足的心理需求。情绪没有好坏之分&#xff0c;存在即合理。情绪是人类不断进化的产物&#xff0c;每一种情绪都是在保护我们&#xff0c;都有其…

一起学数据结构(9)——二叉树的链式存储及相关功能实现

目录 1. 二叉树的链式存储&#xff1a; 2. 二叉树的前序遍历&#xff1a; 3. 二叉树的中序遍历&#xff1a; 4. 二叉树的后序遍历&#xff1a; 5. 统计二叉树的结点总数 6.统计二叉树的叶子结点数&#xff1a; 7. 统计二叉树第层的结点数量&#xff1a; 8. 二叉树的销毁…

如何修改模型颜色

1、模型材质颜色介绍 在3D模型中&#xff0c;材质&#xff08;Material&#xff09;是指表面质感的特性&#xff0c;包括颜色、光泽、透明度等属性。其中&#xff0c;颜色是最基本的属性之一&#xff0c;它决定了物体表面的外观和感觉。 在现代计算机图形学中&#xff0c;通常…

使用 Typhoeus 和 Ruby 编写的爬虫程序

以下是一个使用 Typhoeus 和 Ruby 编写的爬虫程序&#xff0c;用于爬取 &#xff0c;同时使用了 jshk.com.cn/get_proxy 这段代码获取代理&#xff1a; #!/usr/bin/env rubyrequire typhoeus require jsondef get_proxyurl "https://www.duoip.cn/get_proxy"respon…

CTF是黑客大赛?新手如何入门CTF?

CTF是啥 CTF 是 Capture The Flag 的简称&#xff0c;中文咱们叫夺旗赛&#xff0c;其本意是西方的一种传统运动。在比赛上两军会互相争夺旗帜&#xff0c;当有一方的旗帜已被敌军夺取&#xff0c;就代表了那一方的战败。在信息安全领域的 CTF 是说&#xff0c;通过各种攻击手…

随手记录第十话 -- 升级SpringBoot3.0 + JDK17的踩坑记录

随着有些jar包的升级&#xff0c;JDK1.8已经不是最稳定的版本了。 前段时间接触到Web3相关&#xff0c;jar包的编译最低要JDK13了&#xff0c;碰巧另一个使用Kotlin写的jar包依赖需要17了&#xff0c;那就直接上17吧&#xff0c;同时Springboot也上到3.0。 1. 框架说明 Spri…

哪个牌子的护眼灯防蓝光效果好?2023防蓝光护眼灯推荐

可以肯定的是&#xff0c;护眼灯一般可以达到护眼的效果。 看书和写字时&#xff0c;光线应适度&#xff0c;不宜过强或过暗&#xff0c;护眼灯光线较柔和&#xff0c;通常并不刺眼&#xff0c;眼球容易适应&#xff0c;可以防止光线过强或过暗导致的用眼疲劳。如果平时生活中需…

Python国庆祝福

系列文章 序号文章目录直达链接1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.csdn.net/article/details/1295031234漂浮爱心https://want…

软件开发线上维护方案

编写软件维护方案是确保软件系统长期稳定运行和满足不断变化需求的关键步骤。以下是编写软件维护方案的一般步骤和建议&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 文档概述&#xff1a; 开始文档…

Java (day 3)方法、数组、面向对象和异常

Java方法、数组、面向对象和异常 1.方法1.1 什么是方法&#xff1f;1.2 方法的定义1.3 方法的调用1.4 值传递和引用传递1.5 方法的重载1.6 命令行传参1.7 可变参数1.8 递归 2.数组2.1 数组概述2.2 数组声明创建2.3 三种初始化及内存分析和总结&#xff08;1&#xff09;java内存…

前端本地开发中,代理配置是如何解决跨域的?

文章目录 跨域&#xff08;Cross-Origin&#xff09;开发代理原理先说一下三个概念那代理到底是如何解决跨域的&#xff1f; 补充参考视频 跨域&#xff08;Cross-Origin&#xff09; 这里再说一下跨域的概念吧。 在Web开发中&#xff0c;浏览器限制了从一个不同来源&#xff…