作者:AGONI
實操推薦:SQL注入
https://www.hetianlab.com/expc.do?ec=ECID172.19.104.182015060916565800001&pk_campaign=toutiao-wemedia#stu
本實驗以php和MySQL為環境,簡單展示了SQL的發生原理和利用過程,通過顯錯注入和盲注的對比,更直觀展現注入的不同利用方法。
聲明:本文僅限于技術討論與分享,嚴禁用于非法途徑。若讀者因此作出任何危害網絡安全行為后果自負,與本號及原作者無關。
教育src 700rank了想著繼續沖一波分,早日上核心,于是就有了下面這一次滲透測試的過程了。
開局一個登錄框,且存在密碼找回功能。
歸屬為某教育局
開啟burp 抓取登陸包,發現用戶密碼并未加密 ,嘗試爆破admin賬戶密碼 跑了一下發現報如下錯誤,看來爆破這條路走不通了。
于是fofq查詢了一下ip,無旁站。繼續肝下一個功能點,密碼找回
密碼找回處
可以看出這里肯定是會存在數據交互的,于是加個單引號測試一下sql,返回500
兩個單引號,返回正常,可以斷定這里是肯定存在sql注入了,抓取包丟進sqlmap中跑一下。
得出如下payload
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: #1* ((custom) POST)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: login_name=admin' AND 5698=5698 AND 'yKnB'='yKnB
Vector: AND [INFERENCE]
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: login_name=admin' AND (SELECT 3409 FROM (SELECT(SLEEP(5)))iWYb) AND 'ZAHe'='ZAHe
Vector: AND (SELECT [RANDNUM] FROM (SELECT(SLEEP([SLEEPTIME]-(IF([INFERENCE],0,[SLEEPTIME])))))[RANDSTR])
報錯與延時注入,對于接下來的滲透意義不大,繼續fuzz,嘗試按照正常邏輯找回密碼。
抓取返回包可以很明顯的看到其中存在success參數其值為false,我們將其改為true,
頁面顯示如下,flag參數不為空,這是玩ctf呢,再次重放找回密碼請求。
發現,flag的值應該是在這設定哦,but并不知曉flag的值,無從下手
行吧轉換思路,既然admin賬戶沒有設置手機號,那我去跑一下賬戶,總有設置手機的賬戶,flag出現了,現在目前不知道有何作用。轉手測試有手機號的賬戶。
隨意輸入驗證碼,點擊下一步,大概是明白了,這個flag就相當于身份id。
我們繼續抓取返回包,改success 參數為true,成功到達重置密碼界面
設置了一下新密碼,之后使用burp抓包,發現存在兩個參數flag 與pwd flag參數之前在跑用戶名的時候我們就已經獲取到了,所以這里我單獨拉出來,復制之前的flag。
Send,返回結果為true表示成功更改
成功登陸
既然成功登陸之后,就開始找上傳點了
JAVA站那就是jsp與jspx了,經過一番fuzz找到一處相冊管理
先上傳了一張圖片,獲取到了上傳路徑。
接著在構造jsp小馬嘗試上傳,目標存在waf jsp無法上傳,我是一點都不意外啊。
看了看poc中可疑的參數點,這不就是我們需要的文件路徑,以及文件名嗎,我們可以嘗試在此處更改文件后綴。
證實了猜想。
于是繼續構造poc,成功上傳,拼接之前得到的url,嘗試訪問
發現直接打印了,看來是不解析。
可以很明顯的看到這里是目錄結構,所以嘗試刪除部分目錄,重新上傳
例如
發現成功跳過目錄
繼續訪問發現還是直接打印了,不慢慢fuzz跳目錄了,我直接跳到他根目錄下面。
分析一下、這是最開始上傳到的目錄并不解析,我們可以看到其中有四層目錄
刪除其中如下兩層目錄后,還剩下
這兩層目錄所以用 ../../來跳過這兩層目錄。
結合之前的路徑,拼接訪問。
未授權,點到為止,打包提交
帶帶我代碼審計可好,好哥哥們。