re学习笔记(53)BUUCTF-re-[BJDCTF 2nd]guessgame | 8086

新手一枚,如有错误(不足)请指正,谢谢!!
个人博客:点击进入/点击进入

[BJDCTF 2nd]guessgame

题目链接:点击进入

IDA载入,shift+F12搜索字符串,即可得到flag
re学习笔记(53)BUUCTF-re-[BJDCTF 2nd]guessgame | 8086_第1张图片
得到flag为BJD{S1mple_ReV3r5e_W1th_0D_0r_IDA}

(刚开始没查找字符串,傻乎乎的看了主代码没找到flag,然后又去看了会在main函数前执行的pre_c_init和pre_cpp_init)

[BJDCTF 2nd] 8086

题目链接:点击进入

Intel 8086……
IDA32位载入的时候更改一下处理器(虽然我没感觉这个步骤有啥用……好像不改也行)
re学习笔记(53)BUUCTF-re-[BJDCTF 2nd]guessgame | 8086_第2张图片
1KB的程序,main函数是加载sub_10030函数,sub_10030函数是个死循环,,直接看汇编
re学习笔记(53)BUUCTF-re-[BJDCTF 2nd]guessgame | 8086_第3张图片
最上面有个字符串,应该就是程序把它处理后得到flag了
但是要找一下加密代码在哪,唯一可疑的地方就是jmp下面的代码了

选中,摁C解释成代码,选择Force强制转换
re学习笔记(53)BUUCTF-re-[BJDCTF 2nd]guessgame | 8086_第4张图片
得到代码
re学习笔记(53)BUUCTF-re-[BJDCTF 2nd]guessgame | 8086_第5张图片
这个代码比较简单可以直接看汇编。大体就是将0x22个字符挨个与0x1F异或得到flag
(或者将jmp指令nop掉之后,将红色代码摁p声明成函数,然后F5伪代码)
直接写python脚本

enstr="]U[du~|t@{z@wj.}.~q@gjz{z@wzqW~/b;"
for i in enstr:
	print(chr(ord(i)^0x1f),end="")

re学习笔记(53)BUUCTF-re-[BJDCTF 2nd]guessgame | 8086_第6张图片
得到flag为BJD{jack_de_hu1b1an_xuede_henHa0}

你可能感兴趣的:(ctf小白成长ing,#,reverse,CTF,信息安全,c语言,python,reverse)