【NewStarCTF】逆向—week2
題目越來越難啦…
Likemyasp
看題目就知加了殼,但又找不到脫殼工具,只好自己手脫了( 瞎G8亂脫 )
64位程序,使用x64dbg來脫殼,先來到EP( 這個EP是加殼後的EP,而脫殼的目的是找到沒加殼時的OEP )
按ctrl+n,在VirtualProtect下斷點
然後按F9執行( 2次 ),發現總共會在VirtualProtect函數中斷下兩次
在第2次時,按alt+f9執行到返回,然後一直單步F8,直到看到如下圖的地方
綠框中的地方很像**main函數的參數( argv、argc ),因此這附近可能就存在我們想要的東西( 未必是OEP )**,單步F7進入紅框那個call
發現應該是找對了,下面也有提示成功or失敗的字串
然後直接用x64dbg自帶的Scylladump出來( 直接按Scylla中的dump就可以 )
注:這樣dump出來的文件並不能直接運行,但也可以在IDA中進行分析
將dump出來的exe拉入IDA,雖然會提示錯誤,但不要管繼續進入
在start函數中可以看到程序的加密邏輯( 下圖是我重命名後的結果,一開始IDA並不能識別出p ...
【NewStarCTF】逆向—week1
面向22級新生的題,難度友好,十分適合我這種菜G ( ̄▽ ̄)/
Hello_Reverse在main函數找到flag的一部分,然後按shift+f12找到另一部分
Baby_Re解法1先對用戶輸入進行異或加密,然後調用compare(s)函數進行比較
進入compare函數,發現只是一個直接比較
雙擊final可以看到密文,但其中4個字節的數據被交叉引用過,疑似被修改過,按x跟過去看看
發現它們被以下函數修改,而FunctionName這函數的調用時機在main之前
IDA導出數據的技巧:選中所需數據,按shift+e
編寫腳本解flag
12345678910111213141516#include<iostream>using namespace std;int main() { unsigned char final[] = { 0x66, 0x6D, 0x63, 0x64, 0x7F, 0x56, 54, 0x6A, 0x6D, 0x7D, 0x62, 58, 0x62, 0x6A, 0x51, 0x7D, 0x65, ...
【CSAW CTF Qualification Round 2022】逆向---部分WriteUp
Anya Gacha分析打開文件夾,發現是Unity遊戲
先打開遊戲看看是在干什麼
大概是一個抽卡遊戲,左上是金錢( 每次-10 ),按左下按鈕開始抽取
逆Unity遊戲通常可直接找到它的Assembly-CSharp.dll文件( 在\AnyaGacha_Data\Managed目錄下 ),將其拉入dnspy進行分析( 32位 )
在開始時對一些數據進行了初始化,這裡其中一個數據用了隨機數
找到按下【抽卡】按鈕所調用的函數
這裡首先判斷【金錢】是否>10,若是才能繼續
後面再對一些數據進行處理,然後調用this.Upload()
進入this.Upload(),看到它是通過發送網路請求來驗證
但我看不懂要怎樣才能走到this.succeed(text),而上面有提到一開始使用了隨機數來初始化數據,因此我猜測這可能與真的抽卡遊戲一樣,是概率問題
所以我的破解思路:不斷調用this.Upload(),直到成功為至
暴力破解在dnspy中,右鍵→Edit Method,修改wish函數
123456789public void wish() { ...
【FlareOn2】YUSoMeta WriteUp
題目:https://buuoj.cn/challenges#[FlareOn2]YUSoMeta
查殼使用ExeinfoPe查殼,發現是.net程序加了混淆,嘗試使用提示的.NET Generic unpacker的工具去除混淆,發現不行
拉入DIE,發現其所使用的混淆名為Smart Assembly,可使用de4dot工具來去除
使用de4dot去除混淆
下載地址:https://github.com/de4dot/de4dot
打開de4dot.netframework.sln,按如下設置,然後按生成
進入\Release\net45,可以看到de4dot.exe
使用指令de4dot.exe -d [path]來查看用了哪種混淆,確定了果真是SmartAssembly
使用指令de4dot.exe [path] -p sa來去除SmartAssembly混淆,反混淆後的檔案放在了原exe的目錄
選項說明-p sa:指定混淆類型,sa代表SmartAssembly
代碼分析
將反混淆後的程序拉入dnSpy進行分析
找到如下的關鍵地方,發現只要test == ...
OD插件——VS2019開發環境設置
OllyDbg Plugin SDK( 修改版 ):
sdkupdat.zip
設置步驟
添加資源
將上方SDK中的plugin.h和ollydbgvc7.lib拉到當前項目中
標頭檔→右鍵→加入→現有項目→選擇plugin.h
將ollydbgvc7.lib從VS2019中直接拖入,目錄大概長這樣:
VS2019設置
先創建一個Dll項目,然後把dllmain刪去
屬性→進階→字元集→多位元組
屬性→C/C++→所有選項→其他選項:/J ( 意思就是默認所有char都是unsigned char )
屬性→C/C++→先行編譯的標頭檔→未使用
調試相關為了方便調試,可將OD拖入當前項目中
設置Dll生成路徑:屬性→連結器→一般→輸出檔案→[OD插件目錄的路徑\]+dllName.dll ( 例如:C:\Users\MSI-PC\Desktop\A\逆向\MyFirstOdPluginSolution\MyFirstOdPlugin\Ollydbg\plugin\MyFirstDll.dll )
設置Dll調試:屬性→偵錯→命令:C:\Users\MSI-PC\Deskto ...
【watevrCTF 2019】esreveR WriteUp
程序分析
程序後綴是.com,但不管直接拉入ExeinfoPe查殼
發現原來是64位的ELF文件,沒殼
拉入IDA分析,進入main函數,看到如下關鍵信息
經分析發現if語句應該為永真,即一定會進入( 可動態調試看看 )
在進入最後一個if之前,調用了sub_55C1E23CB2D8這個函數,雙擊進入查看
發現當sub_55C1E23CABA0返回0時,程序就直接退出
所以為sub_55C1E23CABA0必須返回1
注:xor_key4、key等等的變量是我分析後重新命名而得來的
進入sub_55C1E23CABA0查看,結合函數傳入的參數,可以得知 123input[0] = xor_key4 ^ 0xFFFFFFFF9A1391B5input[1] = xor_key4 ^ 0xFFFFFFFF9A1391A3#...
動調獲取數據
現在只要動調獲取xor_key1、xor_key2、xor_key3、xor_key4、key5的值即可求得flag
簡單說一下方法:執行到xor_key4的下一句,將鼠標移到xor_key4的上方,看到的0xFFFFFF ...
【FlareOn4】greek_to_me WriteUp
靜態分析習慣先查一下殼,沒殼
拉入IDA分析,發現主要代碼在sub_401008,其中調用了sub_401121,進入查看
發現是個socket,buf用來接收客戶端傳送過來的信息。返回sub_401008繼續分析
紅框這裡取buf[0]對0x40107C處的代碼進行自解密,長度是121,可以發現0x40107C處的代碼正是綠框那部分,緊接著綠框後就是提示成功的信息。
這時可以嘗試開始解密,流程如下:
編寫腳本暴力破解buf[0]的值
動調代碼,查看綠框自解密後的代碼
腳本編寫提取數據
先獲取0x40107C到0x40107C+121的數據
方法:在IDA中按G跳到0x40107C,選中0x40107C到0x40107C+121的數據,按shift+e
腳本代碼1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768#include <iostream>#in ...
【FlareOn1】Bob Doge WriteUp
解壓後有個C1.exe,但這並不是我們要分析的程序,雙擊C1.exe後安裝的那個Challenge1.exe才是要分析的程序。將其拉入ExeinfoPe,發現是個C#程序打開Challenge1.exe,發現只有一個Decode按鈕可按,按了之後彈出不明的東西將程序拉入C#反編譯神器dnSpy繼續分析,找到Decode按鈕對應的代碼可以看出它對某數據進行了3次加密,然後展示出來,抱著好奇之心,在第一次加密完的位置打個斷點,查看其數據看上去有點像flag,嘗試提交,結果成功了( 逆向果然是七分逆、三分猜 ^.^ )
形势与政策-2022春答案
第1測試單元1.单选题 (1分)題目: 中国共产党的最高理想和最终目标是()A、实现共产主义B、实现共产主义社会制度C、实现中国特色社会主义宏伟目标D、推进共产主义社会制度
A
2.单选题 (1分)題目: 全面从严治党以()建设为统领A、思想B、作风C、政治D、制度
C
3.单选题 (1分)題目: 中国人民从长期奋斗历程中得到的最基本、最重要的结论是()A、没有共产党,就没有新中国B、没有毛泽东,就没有新民主主义革命C、必须把马克思主义基本原理同中国实际相结合D、任何时候都必须坚持实事求是的思想路线
A
4.单选题 (1分)題目: 党的思想路线是(),在实践中检验和发展真理。A、一切从实际出发,解放思想,实事求是B、一切从实际出发,实事求是,与时俱进C、一切从实际出发,理论联系实际,实事求是D、一切从实际出发,理论联系实际,与时俱进
C
5.单选题 (1分)題目: 党的根本组织原则是()。A、少数服从多数制B、民主集中制C、集体领导与个人分工负责制D、密切联系群众
B
6.单选题 (1分)題目: 党在任何时候都把(),同群众同甘共苦,保持最密切的 ...
【Zer0pts2020】easy strcmp
查殼慣例查一下,發現沒有殼
代碼分析拉入IDA,進入main函數,看到是字符串的對比,而a2[1]是用戶輸入的字符串。通常會先將用戶輸入的字符串進行加密後,再作對比,所以先尋找加密函數找到後,可以看出它是將用戶輸入的字符串每8個分成一組,然後與qword_201060[j]( j = 0~4 )相減
腳本解密分析完之後就可編寫腳本進行解密。注:字符串以小端模式存放在內存中,例如字符串ABC在內存中的存放順序為43 42 41,41對應A、42對應B、43對應C
123456789101112131415161718192021222324#include <iostream>using namespace std;int main() { long long qword_201060[5] = { 0,0x410A4335494A0942, 0x0B0EF2F50BE619F0, 0x4F0A3A064A35282B,0 }; int i; // [rsp+18h] [rbp-8h] int v4; // [rsp+18h] [rbp-8h] ...