首先管理頁面進入到雲平台項目管理中心
發現下面可以查看源碼,點擊view-source:
這個直接就繞過去了
看第二個
第二個需要滿足$_SESSION['admin']==true才行,因此看看第三個php
滿足這個 isset($_GET[id]) && floatval($_GET[id]) !== '1' && substr($_GET[id], -1) === '9'即可讓$_SESSION['admin']==true
大概的意思就是存GET變量id,並且他的浮點數不等於1,且最后一位為9的字符串,‘1-9’即可滿足
構造payload:
http://111.198.29.45:31864/index.php?page=flag.php&id=1-9
成功繞過,然后看看第二段代碼,意思就是以post方式上傳文件,post變量file代表文件名,con代表文件內容,且后綴名經過正則過濾了,然后上傳路徑原本在根目錄下的/backup/目錄下面,由於加了個chdir()函數,因此將根目錄后面加上了/uploaded/目錄,然后在跟/backup/目錄。
最后的上傳目錄為:
/uploaded/backup/
正則的話是判斷.之后的字符,因此我們可以利用‘/.’的方式繞過,這個方式的意思是在文件名目錄下在加個空目錄,相當於沒加,因此達到繞過正則的目的。
post數據的payload為:
file=p.php/.&con=<?php phpinfo();?>
訪問/uploaded/backup/p.php
已成功上傳,那么直接寫一句話上傳,菜刀連接
找到flag.php打開后得到flag值。