日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

南邮CTF——逆向

發布時間:2024/3/24 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 南邮CTF——逆向 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一題:Hello,RE!

所以:這道題的flag是flag{Welcome_To_RE_World!}

?

?第二題:ReadAsm2

一篇寫的很好的博客:https://blog.csdn.net/xiangshangbashaonian/article/details/78881498

?

第三題:Py交易

使用pyc反編譯工具:https://tool.lu/pyc/?得到py源碼。

在notepad++上編寫py逆向代碼

import base64
correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
s=base64.b64decode(correct) ? ? ? ? ? ? ? ? #Base64解密
print(s)
b=''
for i in range(len(s)): ? ? ? ? ? ? ? ? ? ? ?
? ?x=(ord(s[i])-16)^32 ? ? ? ? ? ? ? ? ? ? ?#將代碼倒過來寫
? ?b+=chr(x)
print(b)

運行得:nctf{d3c0mpil1n9_PyC}

?只有Python3的好像運行不了。

?

第四題:WxyVM

用IDA打開 ,main()函數,sub_4005B6() 改變了輸入的flag

進入sub_4005B6()

(回到Main()函數)之后,改變了的604B80(flag),又與601060處的比較,如果相等則為正確。

所以,入手點就是 601060處的數據 和 6010C0處的數據 。

解題思路:把 sub_4005B6()?逆向編程,代入 601060 和 6010C0 處數據 編譯后 輸出。。。

分析程序,發現需要14997Byte的數據(只玩過幾行程序的我 驚訝。。。),于是博客一波,Get到 IDC編程 (IDA里的內置腳本語言),可以直接訪問地址。

IDC編程推薦博客 ——?http://www.cnblogs.com/gwind/p/8250842.html

Shift+F2 打開IDC腳本編譯框。?

附:ZSky-T? 這位的源碼 和 flag:nctf{Embr4ce_Vm_j0in_R3}

#include <idc.idc> static main() {auto v0,result,i,v3;auto addr_fuzhu = 0X6010C0;for(i = 14997; i >= 0 ; i -= 3){v0 = Byte(addr_fuzhu + i);v3 = Byte(addr_fuzhu + i + 2);result = v0;if(v0 == 1){result = Byte(addr_fuzhu + i +1);PatchByte(0X601060 + result*4 ,(Byte(0X601060 + result*4) - v3));}if(v0 == 2){result = Byte(addr_fuzhu + i + 1);PatchByte(0X601060 + result*4 , (Byte(0X601060 + result*4) + v3));}if(v0 == 3){result = Byte(addr_fuzhu + i + 1);PatchByte(0X601060 + result*4, (Byte(0X601060 + result*4) ^ v3));}if(v0 == 4){result = Byte(addr_fuzhu + i + 1);PatchByte(0X601060 + result*4, (Byte(0X601060 + result*4) / v3));}if(v0 == 5){result = Byte(addr_fuzhu + i + 1);PatchByte(0X601060 + result*4, (Byte(0X601060 + result*4) ^ Byte(0X601060 + 4*v3)));}}for(i=0 ; i<24 ; i++){Message("%c",Byte(0X601060 + i * 4));} }

另一種解法:https://blog.csdn.net/tu_siji/article/details/80220307? 把數據提取出來存放在文件里,再寫代碼

?

第五題:maze

?

?

第六題:WxyVM2

?

總結

以上是生活随笔為你收集整理的南邮CTF——逆向的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。