BUUCTF reverse1-10 WP
筆記是按照當時的題目排序寫的,順序可能有出入
做題是從0開始做起,所以前面部分也會盡可能寫的詳細一點
只要能記錄并且了解到怎么做即可,所以就沒有去在意排版
遇到不會的函數盡可能去百度了解
因為前面的題難度不大,所以前面的每道題都沒有去查殼,除非有特殊:)
題目:easyre、reverse1、reverse2、內涵的軟件、新年快樂、helloword、xor、reverse3、不一樣的flag、SimpleRev
1.easyre
非常簡單的逆向
拖入winhex,搜索flag即可
flag{this_Is_a_EaSyRe}
2.reverse1
reverse1 注意:得到的 flag 請包上 flag{} 提交
64位程序,用IDA pro(64 bit)打開
shift+F12打開字符串窗口,按ctrl+f搜索flag
雙擊這行,跳轉至IDA view-A窗口
右鍵這行,選擇第一個(List cross references to),點擊OK跳轉
可以看到調用了一個判斷,并且str2為{hello_world}
F5查看偽代碼
可以發現,我們需要輸入str1與str2做比較,str2會將字母o替換為0,最終得到flag
flag{hell0_w0rld}
3.reverse2
reverse2 注意:得到的 flag 請包上 flag{} 提交
下載得到ELF文件,使用IDA PRO(64 bits)打開
和第一題一樣,shift+f12,跳轉至IDA view頁面,F5查看偽代碼
當然,還能看到一個hacking_for_fun},先記著
先把105 114 49轉成字符(選中按R即可)
可以發現,輸入的v2要和&flag做比較,而雙擊&flag發現內容就是之前的hacking_for_fun}
再分析循環,會將flag中的i和r替換成1,使用最后得到flag
flag{hack1ng_fo1_fun}
4.內涵的軟件
圖片有內涵,exe也可以有內涵,也許你等不到答案,趕快行動起來吧!!! 注意:得到的 flag 請包上 flag{} 提交
運行發現會提示逆向,用IDA pro(32 bits)打開即可
flag{49d3c93df25caad81232130f3d2ebfad}
5.新年快樂
過年了要不做個逆向題慶祝一下新年?說不定會有驚喜哦!注意:flag并非是flag{XXX}形式,就是一個字符串,考驗眼力的時候到了! 注意:得到的 flag 請包上 flag{} 提交
用winhex打開能明顯看到加了UPX殼,我使用的UPXShell脫殼
脫殼后再用IDA打開,搜索flag字符串,跳轉。
flag很明顯了
flag{HappyNewYear!}
6.helloword
有難的題目,也就有簡單的題目,就像程序員一輩子編寫的第一個程序,極有可能是helloword,它很普通,但是也很讓人懷念。你猜這題flag在哪里?讓我們懷念第一次編寫的easy程序吧! 注意:得到的 flag 請包上 flag{} 提交
是一個apk安裝包,android逆向。
我使用GDA3.80打開
flag{7631a988259a00816deda84afb29430a}
7.xor
or的敵人,and 有個兄弟叫or,or有個敵人叫xor,那么你能幫助or戰勝他的敵人xor嗎,xor的奧秘就在附件中,開始戰斗吧! 注意:得到的 flag 請包上 flag{} 提交
放入IDA,反匯編main查看偽代碼
查看一下global的值
輸入的v6進行一頓異或之后得到,其中第一個f是沒有被處理的
f\nk\fw&O.@\x11x\rZ;U\x11p\x19F\x1Fv"M
雙擊前面的aFKW0XZUPFVMDGH跳轉過去
寫python腳本
其中,isinstance函數的作用是檢測是否為已知類型,這里即比較tmp[i]與tmp[i-1]是否為字符串
flag{QianQiuWanDai_YiTongJiangHu}
8.reverse3
reverse3 注意:得到的 flag 請包上 flag{} 提交
IDA打開,搜字符串能明顯看到base
查看main偽代碼,簡單來說,輸入的str加密后得到v1,再進入for循環后得到Dest后的字符與str2進行比較
其中 str2的內容為e3nifIH9b_C@n@dH
跟進sub_4110BE函數
發現使用了這個進行數組變換,跟進發現就是之前的base64。
解碼過程:
首先for循環將Dest每一位都加了j,所以寫腳本還原v1,然后進行base64解碼
得到{i_l0ve_you}
flag{i_l0ve_you}
9.不一樣的flag
是不是做習慣了常規的逆向題目?試試這道題,看你在能不能在程序中找到真正的flag!注意:flag并非是flag{XXX}形式,就是一個’字符串‘,考驗眼力的時候到了! 注意:得到的 flag 請包上 flag{} 提交
IDA打開
進來就看到01串,可能需要利用
可以發現有上下左右四個方向,并且碰到1退出,碰到#輸出flag,應該是一個迷宮,再查看01串長度正好25
得到222441144222
flag{222441144222}
10.SimpleRev
SimpleRev(flag需加上flag{}再提交) 注意:得到的 flag 請包上 flag{} 提交
ELF文件,還是IDA打開,發現需要輸入D進入游戲,跟進Decry
其中text=key3+v9
key3為kills,因為是小端序存儲,則text為killshadow
key為key1+src,key1為ADSFK
則key為ADSFKNDCLS
下面查看加密過程
最后text需要和str2進行比較,既然已經知道了加密后的字符串和key(注意key在第2張圖被+32,即大寫變成了小寫),所以可以直接寫腳本一位一位的進行爆破
運行得到KLDQCUDFZO
flag{KLDQCUDFZO}
總結
以上是生活随笔為你收集整理的BUUCTF reverse1-10 WP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VC问题百问
- 下一篇: 无状态编程, lambda 表达式中传入