攻防世界 | CAT


來自攻防世界官方WP | darkless師傅版本

題目描述

抓住那只貓

思路

打開頁面,有個輸入框輸入域名,輸入baidu.com進行測試

20190828225655.png

發現無任何回顯,輸入127.0.0.1進行測試。

20190828225750.png

發現已經執行成功,執行的是一個ping命令,一開始想的應該是命令拼接執行,但是輸入任何有關拼接的字符串都會提示invalid url

20190828225940.png

說明系統對這些字符串都進行了過濾,fuzz測試后發現只有@沒有被過濾。

20190828230310.png

且當輸入@時,會將@編碼為%40

20190828230426.png

嘗試在url處輸入寬字符,比如%bf

20190828232825.png

出現報錯信息,是一段html代碼,將這些代碼復制出來打開。

20190828232945.png

看到了熟悉的django報錯頁面,看來是將輸入的參數傳到了后端的django服務中進行解析,而django設置了編碼為gbk導致錯誤編碼了寬字符(超過了ascii碼范圍)。

到這一步后,聯系到前面的@字符沒有被過濾,然后看了大佬們的解題思路(這里太坑了,原題目上其實是由提示的)

20190828234335.png

意思是可以用@讀取文件內容。

結合django的報錯得知了項目的絕對路徑為/opt/api

20190828234553.png

這里還需要懂一些django開發的基本知識,我感覺這道題涉及的面有點廣了,django項目下一般有個settings.py文件是設置網站數據庫路徑(django默認使用的的是sqlites數據庫),如果使用的是其它數據庫的話settings.py則設置用戶名和密碼。除此外settings.py還會對項目整體的設置進行定義。

讀取settings.py文件,這里需要注意django項目生成時settings.py會存放在以項目目錄下再以項目名稱命名的文件夾下面。

20190828235147.png

同上將報錯信息已html文件打開,可看到一些敏感信息:

20190828235523.png

同樣在使用@讀取數據庫信息

20190828235757.png

在報錯信息中搜索CTF得到flag。

20190828235832.png

以上就是這道題的解法,我只能說大佬們的思路真野!

 


總結:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM