ctfshow 紅包題第四彈

2021-10-04 00:11:30 字數 2663 閱讀 9864

進去後發現就乙個輸入框,提示我們輸入flag{}

不過輸了後沒反應,那麼審查元素看看

可以發現是呼叫的ctfshow()這個函式

在chrome的console視窗除錯下這個函式看下它幹嘛的

格式化下**方便審計

可以發現這是把js**變數名16進製制編碼後再把**邏輯複雜化

好我們來讀下這串**:

首先定義乙個變數_0x4d832a

值為乙個字典{}

字典裡有乙個鍵值對

鍵為'atkul'

值為乙個函式,其作用就是把傳來的值return回這個值的函式

用人話來講就是呼叫乙個函式

到下面這串_0x4d832a[a0_0x138e('0x5')](我們);

就是乙個字典呼叫,啥你問a0_0x138e('0x5')是啥??

問console

ok到這先好好理解上面這串最簡單的加密邏輯,因為後面這整個js都是這玩意

js指的就是這玩意,套著script的皮卻是css的字尾,佛了

理解完後就可以往下跟進了

也就是跟進我們()這個函式

ok跟進到這如果理解清楚上面說的,那麼就能很清楚第一行就是定義乙個字典

裡面的值先不細看

往下看是一堆變數,然後到乙個判斷

那麼從判斷開始一步一步往上推

兩個值_0x491b2b=呼叫_0xd8e338['uivft']這個函式,傳遞的值為getencodestring,_0x35b4d3[a0_0x138e('0xa')(0x0, 0xd)

這裡有三個函式,第二個看名字就知道幹啥的就不跟進了

第乙個就是呼叫上面字典的uivft值

就是把傳進來第二個的值當作第乙個值的實參

人話講就是getencodestring(_0x35b4d3[a0_0x138e('0xa')](0x0, 0xd))

ok那看最後乙個函式,先把16進製制轉成10(方便看)

getencodestring(_0x35b4d3[a0_0x138e('10')](0, 13))

接著看a0_0x138e('10')這個是啥就行了

放到console

這意思很明顯了,繼續往上找_0x35b4d3這個變數

跟上面用的一樣的方法a0_0x138e('0xa')也就是呼叫substr函式

繼續找_0x1f7275

反轉字串_0x1ef9ff,繼續

把兩個引數相加

這兩個引數等於

很明顯就是把getencodestring(_0x6ab3ec)+hex_md5(_0x6ab3ec)

那麼重要的就是搞清楚這個_0x6ab3ec是啥

也就是說獲取頁面輸入的getencodestring(reversestr(flag再進行兩段加密之和))

邏輯很清楚了,就是把我們輸入的flag和flag進行比較

那麼我們找到比較的這個變數就ok啦

和上面一樣的審計方式

加密後的flag找到!

那麼按照我們輸入的加密邏輯逆過來就能解密了

getencodestring(reversestr("2xsrn72z4wurn7k5ewp5nx3x6w**m72z4wxbn33zcgwzm"))

就差最後一步了getencodestring("mzwgcz33nbxw4z27mjqw6x3xn5pwe5k7nruw4z27nrsx2")

因為這是encode的函式,所以得跟進去看怎麼加密(出題人沒給decode,當時看到這一大串.以為要自己手寫,心態蹦了...)

我們可以試試用這函式加密看得到的密文是怎樣的

什麼!!?竟然是mzwgczy,

s這不就是base32嗎!!!

......好了不裝了老實分析下getencodestring吧

好了我分析完了發現是base32加密

你呢?最後解密就得到flag啦

ctfshow 紅包題第九彈 ssrf

放在剛才抓包u sss returl 後面,直接放鬆是不可以的,要url編碼 現在就用蟻劍連線 官方解釋gopher協議 gopher是internet上乙個非常有名的資訊查詢系統,它將internet上的檔案組織成某種索引,很方便地將使用者從internet的一處帶到另一處。在www出現之前,go...

ctfshow 紅包題 武穆遺書

其中buffer是你輸入的,和v4進行比較。v4首先是指向堆中的乙個指標,後來sub 401390對v4中寫值。然後就是各種亂七八糟的加密了。這個時候我就想,我能不能直接拿到比較的時候v4指向的內容是什麼呢?我就想到了od,拖進去發現不能除錯,應該是加了反除錯,我又試了試xdbg,發現也打不開。然後...

小李飛刀 刷題第四彈!

time 2019 02 01 昨晚其實刷了題來著,但是沒有解出來,哭泣!但是,今天重新寫了下,解出來咯 所以今天的題量要增加咯 我會加油的!14.最長公共字首 難度 簡單 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 我的解題 如下 class solution de...