BUGKU CTF 逆向第四题游戏过关

BUGKU CTF 逆向第四题游戏过关

  • 分享一下刚会的逆向第四题游戏过关
    • 这段英文的意思是下面这个
  • 方法
    • 方法一
    • 方法二
    • 方法三

分享一下刚会的逆向第四题游戏过关

BUGKU CTF 逆向第四题游戏过关_第1张图片
打开之后是这个样子的BUGKU CTF 逆向第四题游戏过关_第2张图片

这段英文的意思是下面这个

玩游戏
n是灯的序列号,m是灯的状态。
如果第n盏灯的m是1,它就开,如果不是,它就关。
起初所有的灯都关上了。
现在你可以输入n来改变它的状态。
但是你应该注意一件事,如果你改变了第N盏灯的状态,(N-1)和(N+1)的状态也会改变。
当所有灯都亮起时,flag就会出现。

方法

方法一

直接输入,一次输入1,2,3,4,5,6,7,8。flag就会出现。
BUGKU CTF 逆向第四题游戏过关_第3张图片
这个方法太简单粗暴,所以讲一讲其他的方法。

方法二

把它放进IDA中,用(alt+t)去搜索flag。
找到main函数,按F5进行反汇编。
BUGKU CTF 逆向第四题游戏过关_第4张图片
这是那八个灯的判定。都满足才能出现flag。
BUGKU CTF 逆向第四题游戏过关_第5张图片
然后去找flag。这个flag上有很多数字,我们可以把那些数字按照下面的运算方式进行运算,并把数字字符化。也可以得到flag。

方法三

OD打开它,

左上 代码窗口

  • 默认用于显示反汇编代码,还用于显示各种注释、标签,分析代码时显示循环、跳转位置等信息。

右上 寄存器窗口

  • 实时显示CPU寄存器的值,可用于修改特定的寄存器。

左下 数据窗口

  • 以Hex/ASCII/Unicode值的形式显示进程的内存地址,也可在修改内存地址。

右下 栈窗口

  • 实时显示ESP寄存器指向的进程栈内存,并修改。

BUGKU CTF 逆向第四题游戏过关_第6张图片

按右键中文搜索引擎->智能搜索;
BUGKU CTF 逆向第四题游戏过关_第7张图片
找到flag点进去。
BUGKU CTF 逆向第四题游戏过关_第8张图片
我们发现这个flag来自上面那个地址00C8E940 55 push 那个,然后我们看一下这个来自哪里。
(这个地址因人而异,大家会有自己地址,我就按自己的地址来讲述)
在这里插入图片描述
然后继续找00C87AB4。
在这里插入图片描述
然后继续找00C8F66C。
BUGKU CTF 逆向第四题游戏过关_第9张图片
我们看一下这个,这个地址是由上面jnz跳转过来的,可以查一下上面一共8个跳转,这个就是之前那8盏灯的判断。
BUGKU CTF 逆向第四题游戏过关_第10张图片
而下面这个JMP就代表那八个判断有一个不满足,就会跳转到这里。

所以我们把这个jmp的地址(00C8F671)改成call跳转的地址(00C87AB4)这样只要输入1-8任何一个数都可以找到flag。
BUGKU CTF 逆向第四题游戏过关_第11张图片
点击调试然后运行,随便输入1-8的任意一个数,就可以出现flag。

the flag is zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}

你可能感兴趣的:(题目,安全,经验分享)