XCTF-高手进阶区:i-got-id-200
題目
三個文件,都是perl寫的,Files存在上傳文件,它會將上傳的文件內容打印出來
沒接觸過perl,看了別人的wp,就簡單說一下,以后學了perl再來回味
因為它會將上傳的文件內容打印出來,所以猜測后臺存在param()函數
param()函數會返回一個列表的文件但是只有第一個文件會被放入到下面的file變量中。如果我們傳入一個ARGV的文件,那么Perl會將傳入的參數作為文件名讀出來。對正常的上傳文件進行修改,可以達到讀取任意文件的目的
大佬們猜的后臺代碼
接下來就是payload了
1、先bp抓包,然后將上傳的文件名和內容復制一份粘貼,如下:
2、將filename刪去,內容修改為ARGV,讀取file.pl看看有什么(就猜它在/var/www/cgi-bin/下!)
3、根據返回的信息,可以肯定這里存在parm函數,然后我們利用bash來讀取文件,先看看/目錄下有哪些文件
4、讀取flag文件
補充
1、何為/bin/bash -c?
/bin/bash -c表示指定將命令轉為一個完整命令執行,可以理解為執行linux命令
例:
2、何為${IFS}?
$IFS是shell的特殊環境變量,是Linux下的內部區域分隔符。$IFS中存儲的值可以使空格、制表符、換行符或者其他自定義符號,可以在linux中使用${IFS}代替空格
例:
3、為什么要加|?
|:管道符左邊命令的輸出就會作為管道符右邊命令的輸入,這里為什么要加我也沒搞明白,如有知道的朋友評論告訴我,謝謝。
舉例一個常見的用法吧:
cat后輸出的內容,作為|后面內容的輸入,這里是交給grep執行
注:經測試,${IFS}和/bin/bash聯用時,不代表空格,為啥,有大佬知道的可以告訴下,我之后也去查查資料,如果知道了,會更新。
IFS更詳細的可以參考:https://www.jianshu.com/p/2d34ef30361b
總結
以上是生活随笔為你收集整理的XCTF-高手进阶区:i-got-id-200的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高血压头晕怎么办最快最有效(20几岁高血
- 下一篇: hashcat离线碰撞md5