[網鼎杯 2020 朱雀組]Nmap 1


[網鼎杯 2020 朱雀組]Nmap 1

這個題目主要考察的是nmap的常用命令和escapeshell函數

Nmap 相關參數

-iL 讀取文件內容,以文件內容作為搜索目標
-o 輸出到文件
舉例

nmap -iL ip_target.txt -o result.txt

掃描ip_target.txt內包含的ip地址,輸出掃描結果至result.txt
讀取文件結果

# Nmap 6.47 scan initiated Fri Dec 24 06:48:23 2021 as: nmap -Pn -T4 -F --host-timeout 1000ms -oX xml/a9950 -iL /flag -o 22' 127.0.0.1\
Failed to resolve "flag{c5e95c66-f441-496b-ac27-699ea43d5c32}".
WARNING: No targets were specified, so 0 hosts scanned.
# Nmap done at Fri Dec 24 06:48:23 2021 -- 0 IP addresses (0 hosts up) scanned in 0.11 seconds

會提示搜索內容失敗,然后會寫出來內容是啥,從而實現任意文件讀取。

escapeshell

分為excapeshellarg()和escapeshellcmd()兩個函數

escapeshellarg()

escapeshellarg — 把字符串轉碼為可以在 shell 命令里使用的參數,保證其作為參數的安全性。

用轉義符轉義所有單引號,然后用單引號包裹,如

123' aa

經過escapeshellarg,先轉義單引號

123\' aa

再用單引號包裹

123'\'' aa

最后,escapeshellarg會將整個字符串用單引號包裹,讓字符串變成這樣

'123'\'' aa'

escapeshellcmd()

escapeshellcmd - 把字符串中可能欺騙shell命令的字符轉義, 用以保證送到system函數或者exec函數的字符串是安全的。

可以看到,不光這些字符,轉義符本身還有落單的引號也會被轉義。
這個時候,我們把傳入escapeshellarg的字符串拿過來,在經過這個函數的處理。

'123'\'' aa'

轉義后

'123'\\'' aa\'

因為轉義符被轉義,最后的引號便落單,逃逸了出去。這個時候,被輸入的字符串不再被當成單個參數處理(不再有引號包裹), 即逃出了這兩個函數。

題目


看上去是會把我們的參數拼接入nmap命令。
我們構建字符串

127.0.0.1 -iL /flag -o haha

希望讀取位於根目錄的flag文件,然后存入結果到haha中。
報錯
看了別的師傅的WP發現經過了這兩個函數的過濾,換用payload

127.0.0.1' -iL /flag -o haha

仍報錯,但可以讀取haha文件

這里要注意,參數因為經過了escapeshellcmd函數,被包裹上了引號,所以我們實際輸出結果是輸出到了haha'文件中,多了一個引號,在這里也可以看到。


免責聲明!

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



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