REVERSE-PRACTICE-BUUCTF-6
REVERSE-PRACTICE-BUUCTF-6
- rsa
- CrackRTF
- [2019紅帽杯]easyRE
- [ACTF新生賽2020]easyre
rsa
解壓出來是.enc和.key兩個(gè)文件,.enc是密文,.key存放著公鑰信息
使用在線網(wǎng)站或者openssl解析.key文件中存放著的公鑰信息
可獲知rsa需要的模數(shù)n和公鑰e
使用在線網(wǎng)站或者yafu分解n,結(jié)果為兩個(gè)大素?cái)?shù)
寫腳本即可得到flag
CrackRTF
exe程序,運(yùn)行后提示輸入密碼,輸入錯(cuò)誤直接退出,無殼,ida分析
main函數(shù)中,要求輸入兩次密碼,先看第一個(gè)密碼
第一個(gè)密碼的部分邏輯清晰,重點(diǎn)是sub_40100A這個(gè)函數(shù)
sub_40100A函數(shù)點(diǎn)進(jìn)去,發(fā)現(xiàn)有個(gè)CryptCreateHash函數(shù)
CryptCreateHash函數(shù)詳解
重要的是這個(gè)函數(shù)的第二個(gè)參數(shù),決定了要使用的哈希算法
這里0x8004u使用的是sha(sha1)算法
寫腳本爆破,得到第一個(gè)密碼
然后是第二個(gè)密碼,和第一個(gè)密碼的邏輯差不多,不過用的是md5散列,但是沒有對第二個(gè)密碼的6個(gè)字符做任何限制,爆破不可取,往下走,發(fā)現(xiàn)拼接后的input_2作為參數(shù)傳入了sub_40100F函數(shù)
sub_40100F函數(shù)的主要邏輯用紅框標(biāo)出,即exe程序帶有的資源“AAA”和拼接后的input_2進(jìn)行異或運(yùn)算,結(jié)果寫到程序創(chuàng)建的名為“dbapp.rtf”文件中
使用工具Resource Hacker可以獲取資源“AAA”的數(shù)據(jù)
sub_401005函數(shù)就是進(jìn)行異或運(yùn)算
程序要?jiǎng)?chuàng)建并填充一個(gè)完整的rtf文件,rtf文件的文件頭必不可少,搜索或自建一個(gè)空的rtf文件用010editor打開,可以得知rtf文件的文件頭
由于第二個(gè)密碼拼接時(shí)放在input_2的前面,也就是說第二個(gè)密碼和資源“AAA”的數(shù)據(jù)異或后的結(jié)果正是rtf文件的文件頭
寫腳本得到第二個(gè)密碼,第二個(gè)密碼的長度為6,故資源“AAA”和rtf文件頭都取前6個(gè)字節(jié)異或即可得到第二個(gè)密碼,注意“\r”在python中的轉(zhuǎn)義語義,再加一個(gè)“\”
再次運(yùn)行exe程序,輸入正確的第一個(gè)和第二個(gè)密碼,在當(dāng)前目錄下生成一個(gè)“dbapp.rtf”文件,內(nèi)容即為flag
[2019紅帽杯]easyRE
elf文件,無殼,ida分析
左側(cè)函數(shù)窗找不到主邏輯函數(shù),shift+F12打開字符串窗口
發(fā)現(xiàn)一長段很像base64的字符串和base64字符表
一路交叉引用base64字符串,來到sub_4009C6函數(shù)
先看該函數(shù)中用到base64字符串的片段
邏輯是v56經(jīng)過10次base64變換,結(jié)果為已知的那個(gè)base64字符串
寫腳本得到v56,結(jié)果為一個(gè)url,打開沒發(fā)現(xiàn)和flag相關(guān)的內(nèi)容,應(yīng)該是誤導(dǎo)選手了
繼續(xù)看sub_4009C6函數(shù)的其他內(nèi)容,該函數(shù)一開始給一堆變量賦值,然后有一個(gè)異或后比較的運(yùn)算,用紅框標(biāo)出來了
寫腳本,提示說前四個(gè)字符為“flag”,也沒有對flag具體內(nèi)容的提示
sub_4009C6函數(shù)分析完后,并沒有對flag具體內(nèi)容的判斷
于是再次去字符串窗口找找有沒有其他提示的內(nèi)容
在那串base64字符串下面,有一段沒有在sub_4009C6函數(shù)中用到的數(shù)據(jù)
交叉引用來到sub_400D35函數(shù)
v5和v8相同,v8和byte_6CC0A0數(shù)組前4個(gè)字符異或的結(jié)果為“flag”,前面也提示到前4個(gè)字符為“flag”
然后v8再和byte_6CC0A0數(shù)組的全部元素異或
寫腳本,先解出v8,再循環(huán)異或得到flag
[ACTF新生賽2020]easyre
exe程序,運(yùn)行后提示輸入,輸入錯(cuò)誤直接退出,有upx殼,脫殼后ida分析
main函數(shù)邏輯清晰,flag的內(nèi)容減1后作為下標(biāo),從_data_start_這個(gè)數(shù)組中取值,與v4到v15比較,驗(yàn)證flag的內(nèi)容
寫逆腳本即可得到flag
總結(jié)
以上是生活随笔為你收集整理的REVERSE-PRACTICE-BUUCTF-6的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米公布车对车充电专利:小米汽车可变身巨
- 下一篇: 阿里一面 —— 什么是多线程?