只會web正好又是php的稽核題目,於是就把兩道題都做了。大牛們都忙著破各種路由器,破各種設備去了,我也僥倖得了個第一:
第一題,沒怎麼截圖,查看代碼如下:
主要是考mysql的一個trick。就是査詢出來的$row['id']和$id的區別。這麼說可能有點不明白,我們用一下程式碼fuzz一下mysql:
如果在name後面加上一個字元,在mysql裏査詢,如果查到的和不加這個字元查出來的行相同,則輸出。
得到了如下結果:
我們隨便挑一個跟在adog後面提交就能得到flag了。如下:
第二題,訪問pwnme.php得到如下提示:
很快就明白了是要說明在php裏===和==的意義不同。我記得之前一個php的trick,我猜這裡的程式碼是這樣:strcmp($_POST[password],'xxxx')==0。看一下php的strcmp檔案就能知道:
===
==
strcmp($_POST[password], 'xxxx')==0
password[]=xxx
訪問可得到一段源碼,yeah碰上我最愛的稽核題了:
源碼其實很簡單,就是寫入一個webshell,但檔名是跟當前秒數有關,所以大部分人想到要跑一下檔名。當然,我這個人比較懶,能不能想個方法,不要跑這該死的檔名。
這道題沒有過濾/和../,我可以直接做跳轉,將時間作為目錄名,再用../跳轉到上個目錄,這樣我的檔案就不帶時間首碼了。當然還要讓php不出錯,試了幾次,數据包如下即可:
這樣我的shell就為:http://106.120.92.162:5000/backup/“.eval($_REQUEST[a]).php
http://106.120.92.162:5000/backup/".eval($_REQUEST[a]).php