攻防世界-web-ics-07-从0到1的解题历程writeup
題目分析
首先拿到題目描述:工控云管理系統項目管理頁面解析漏洞
找到題目入口
點擊view-source對源碼進行審計
if?(isset($_GET[page])?&&?$_GET[page]?!=?'index.php')?{??????include('flag.php');????}else?{??????header('Location:??page=flag.php');????}就是page參數不傳index.php就會包含上flag.php,如果page參數為index.php就會跳轉到page=flag.php
<?php?????if?($_SESSION['admin'])?{???????$con?=?$_POST['con'];???????$file?=?$_POST['file'];???????$filename?=?"backup/".$file;???????if(preg_match('/.+\.ph(p[3457]?|t|tml)$/i',?$filename)){??????????die("Bad?file?extension");???????}else{????????????chdir('uploaded');???????????$f?=?fopen($filename,?'w');???????????fwrite($f,?$con);???????????fclose($f);???????}?????}??????>存在session admin為true,則可通過這邊上傳木馬,但是可以發現的是,對文件名有一個正則,這個等會再看。首先看如何將session的admin設為true。
<?php??????if?(isset($_GET[id])?&&?floatval($_GET[id])?!==?'1'?&&?substr($_GET[id],?-1)?===?'9')?{????????include?'config.php';????????$id?=?mysql_real_escape_string($_GET[id]);????????$sql="select?*?from?cetc007.user?where?id='$id'";????????$result?=?mysql_query($sql);????????$result?=?mysql_fetch_object($result);??????}?else?{????????$result?=?False;????????die();??????}??????if(!$result)die("<br?>something?wae?wrong?!?<br>");??????if($result){????????echo?"id:?".$result->id."</br>";????????echo?"name:".$result->user."</br>";????????$_SESSION['admin']?=?True;??????}??????>存在參數id,且參數不為1且最后一位為9。會去執行查找項目功能。
解題流程
隨意輸入id為9查看反饋為
這邊嘗試了一下
發現1 9即可繞過。因為顯然floatval($_GET[id])?!==?'1’這是不等的,因為結果數據類型不同。然后最后一位為9.
然后本地數據庫跑一下
轉為int類型直接就是1。所以直接能查出admin的那一條記錄。
然后嘗試去上傳界面上傳getshell
<?php?????if?($_SESSION['admin'])?{???????$con?=?$_POST['con'];???????$file?=?$_POST['file'];???????$filename?=?"backup/".$file;???????if(preg_match('/.+\.ph(p[3457]?|t|tml)$/i',?$filename)){??????????die("Bad?file?extension");???????}else{????????????chdir('uploaded');???????????$f?=?fopen($filename,?'w');???????????fwrite($f,?$con);???????????fclose($f);???????}?????}??????>可以發現post兩個參數分別為con是文件內容,file為文件名。
然后嘗試繞過正則
preg_match(’/.+.ph(p[3457]?|t|tml)/i′,/i',?/i′,?filename)個人理解是。。這個需要繞過嗎,直接上傳配置文件,解析別的后綴名為php不就好了嗎。
首先存在.htaccess文件
上傳一句話木馬。
上傳覆蓋.htaccess
但是發現.jpg文件并沒有被作為可執行文件執行
那應該是
.htaccess沒有寫權限吧。
找先知上一些上傳繞過的方法
因為獲取文件后綴進行正則匹配的時候,只會匹配最后一個.后的內容,所以通過php/.繞過
蟻劍連上去發現找到flag即可
神奇的是,發現成功上傳了.htaccess文件,但是并沒有能把jpg文件解析了emmm
望大佬告知~
總結
以上是生活随笔為你收集整理的攻防世界-web-ics-07-从0到1的解题历程writeup的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 攻防世界-web-bug-从0到1的解题
- 下一篇: 攻防世界-web-i-got-id-20