REVERSE-PRACTICE-BUUCTF-7
REVERSE-PRACTICE-BUUCTF-7
- Youngter-drive
- [ACTF新生賽2020]rome
- [FlareOn4]login
- [SUCTF2019]SignIn
Youngter-drive
exe程序,運(yùn)行后提示輸入flag,有upx殼,脫殼后ida分析
main函數(shù)中獲取輸入并拷貝,開(kāi)啟了兩個(gè)線程分別運(yùn)行StartAddress和sub_41119F兩個(gè)函數(shù),sub_411190函數(shù)驗(yàn)證輸入,輸入即為flag
分析StartAddress函數(shù),input_index的初始值為29,當(dāng)input_index的值大于-1時(shí),調(diào)用sub_41112C函數(shù),然后input_index值減1,休眠100ms
分析sub_41112C函數(shù)(反編譯該函數(shù)需要先平衡棧),首先驗(yàn)證輸入均為英文字母,然后對(duì)大小寫(xiě)區(qū)分,輸入的內(nèi)容的ascii碼減去38或96的結(jié)果,作為下標(biāo),在table數(shù)組里取值,再賦給原來(lái)的位置,即對(duì)flag內(nèi)容進(jìn)行變換,實(shí)際上是大小寫(xiě)轉(zhuǎn)換
回到main函數(shù),再分析sub_41119F函數(shù)
該函數(shù)先休眠100ms,再對(duì)input_index減1,沒(méi)有對(duì)flag內(nèi)容的變換
于是可以知道,input_index初始值為29,在第一個(gè)線程作為下標(biāo)對(duì)flag內(nèi)容變換后減1,在第二個(gè)線程直接減1,相當(dāng)于減2,值為27,再回到第一個(gè)線程……于是第一個(gè)線程僅在input_index為奇數(shù)時(shí)對(duì)flag內(nèi)容進(jìn)行變換
寫(xiě)逆腳本,由于input_index初始值為29,說(shuō)明flag的內(nèi)容長(zhǎng)度為30,但是在check(sub_411190)函數(shù)中,只比較了29個(gè)字符,試出來(lái)最后一位是“E”提交成功
[ACTF新生賽2020]rome
exe程序,運(yùn)行后提示輸入,輸入錯(cuò)誤直接退出,無(wú)殼,ida分析
主邏輯在func函數(shù)中
第一個(gè)紅框是對(duì)flag的內(nèi)容變換,分大小寫(xiě),原來(lái)是大寫(xiě)字母的變換后仍然是大寫(xiě)字母,原來(lái)是小寫(xiě)字母的變換后仍然是小寫(xiě)字母,如果flag的內(nèi)容中某個(gè)字符為其他字符,則不進(jìn)行變換
第二個(gè)紅框是循環(huán)比較,驗(yàn)證flag的內(nèi)容
寫(xiě)腳本即可得到flag
[FlareOn4]login
html文件,打開(kāi)后提示輸入flag并點(diǎn)擊驗(yàn)證,右鍵->查看網(wǎng)頁(yè)源代碼
邏輯清晰,獲取輸入,輸入變換,驗(yàn)證輸入
重要的是flag.replace部分的內(nèi)容
首先判斷flag內(nèi)容中某個(gè)字符是大寫(xiě)還是小寫(xiě)字母,如果是大寫(xiě)字母,>=左邊取90,如果是小寫(xiě)字母,>=左邊取122,再判斷該字符在26個(gè)字母表中的位置,如果該字符在字母表的前半部分,則替換為字母表后半部分對(duì)應(yīng)位置的字符,同理,如果該字符在字母表的后半部分,則替換為字母表后半部分對(duì)應(yīng)位置的字符,字符的大小寫(xiě)不變
寫(xiě)逆腳本即可得到flag
[SUCTF2019]SignIn
elf文件,無(wú)殼,ida分析
main函數(shù)邏輯清晰,先獲取輸入,然后調(diào)用sub_96A函數(shù)分割輸入,例如輸入字符串的第一個(gè)字符為“f”,其十六進(jìn)制ascii碼為0x66,經(jīng)過(guò)sub_96A函數(shù),結(jié)果存儲(chǔ)到v9,有v9[0]=0x6,v9[1]=0x6,然后v9數(shù)組轉(zhuǎn)成整形作為RSA的明文m,接下來(lái)就是RSA加密和驗(yàn)證
在線網(wǎng)站或者yafu分解模數(shù)n
寫(xiě)腳本即可得到flag
總結(jié)
以上是生活随笔為你收集整理的REVERSE-PRACTICE-BUUCTF-7的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 矿卡还能活多久?谷歌揭示真相:有企业广告
- 下一篇: 【Python 必会技巧】使用 join