U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 土豆PE使用教程 >

攻防世界 reverse 逆向简单题练习区 答题(1-12题解 ...

来源:http://www.tudoupe.com时间:2022-01-11

传送门:https://adworld.xctf.org.cn/task/
在这里插入图片描述
在这里插入图片描述

1、game

题目描述:菜鸡最近迷上了玩游戏,但它总是赢不了,你可以帮他获胜吗
题目思路:

  • 下载获得一个exe游戏文件
    在这里插入图片描述

  • 拖入PE查看,是win32程序
    在这里插入图片描述

  • 丢到32位的IDA里,在函数名列表ctrl+f搜索main,然后进入main0函数F5反编译得到伪代码
    在这里插入图片描述在这里插入图片描述

  • 结合第一步题意,当全部灯都亮起时,将出现flag。不难发现对应到代码就是8个if==1然后输出flag的部分。
    于是就有了两种做法,一种是把sub函数的伪代码改成代码运行一遍。

  • 另一种就是玩游戏比如随便输个2,发现1号和2号和3号灯亮着,其他是暗着的,所以把对应的条件改成1,2,3==1,剩下的不等于1,再去玩游戏即可输出flag。

  • 对于修改,不难找到汇编指令中的代码为如下,右键修补,将jnz(等于的意思)改为jz即可。具体反汇编指令网上都可以找得到。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 最后在编辑,修补程序,应用到输入文件。再去玩游戏就可以获得flag啦。
    在这里插入图片描述
    在这里插入图片描述

2、open-source

题目描述:菜鸡学逆向学得头皮发麻,终于它拿到了一段源代码
题目思路:

  • 下载获得一片c语言文件。
    不难发现,29行用三个argv参数计算flag,32行输出
    在这里插入图片描述
  • 对于三个argv参数,
    第一个:不等于0xcafe就退出,那first=0xcafe
    对于第二个,满足if条件就退出,那么第一个不满足的数就是25,second = 25
    对于第三个,相等strcmp返回0,退出if条件,那argv[3]=“h4cky0u”
    因此不难改出代码,把上面的都删了,对应变量设置成对应值然后运行即可。
    在这里插入图片描述

3、simple-unpack

题目描述:菜鸡拿到了一个被加壳的二进制文件
题目思路:

  • 获得一个文件,丢入PE中。发现:64位文件,upx壳
    在这里插入图片描述
  • 丢到64位IDA中,以二进制形式打开文件。
    然后shift+F12 进入查找字符串界面,然后Ctrl+f查找flag,发现flag。
    在这里插入图片描述
    在这里插入图片描述

4、logmein

题目描述:菜鸡开始接触一些基本的算法逆向了
题目思路:

  • 未知文件先PE一下,得到信息:64位文件,obj文件
    在这里插入图片描述
  • 丢到IDA64,将main函数反编译为C语言代码。
    在这里插入图片描述
  • 分析代码:
    进入sub_4007C0)()
    进入sub_4007F0();
    最后sub_4007F0();
    通过v4的计算代码,我们了解到flag的获取 因为v8, v7 v9 知道,所以不难写出代码。
    在这里插入图片描述

5、insanity

题目描述:菜鸡觉得前面的题目太难了,来个简单的缓一下
题目思路:

  • PE打开,32位文件
    在这里插入图片描述
  • 丢到IDA32正常打开,shift + F12搜字符串,ctrl+f搜flag。
    在这里插入图片描述

6、python-trade

题目描述:菜鸡和菜猫进行了一场Py交易
题目思路:

  • 获得一个pyc文件,pyc文件就是py程序编译后得到的字节码文件 (py->pyc)
    可以在线pyc文件反编译:https://tool.lu/pyc/
    也可以下载一个离线的:pip install uncompyle
    在这里插入图片描述
  • 分析代码:
    flag进行encode函数中的操作,得到‘XlNkVmtUI1MgXWBZXCFeKY+AaXNt’
    所以我们只需要反向操作一遍即可。

7、re1

题目描述:菜鸡开始学习逆向工程,首先是最简单的题目
题目思路:

  • 先PE一下,32位
    在这里插入图片描述
  • 然后IDA32,反编译一下main函数
    在这里插入图片描述
  • 分析代码,可以看到,输入v9之后,与v5比较,判断我们输入的flag是否正确。分别进入if…else判断之后的输出。追踪v5 进入ds:xmmword_413E34。
  • 既然v5是个常量,那么肯定存在二进制中,所以01Edit直接打开搜flag和ctf,成功get flag。
    在这里插入图片描述

8、Hello, CTF

题目描述:菜鸡发现Flag似乎并不一定是明文比较的
题目思路:

  • 先PE一下,32位
    在这里插入图片描述

  • 然后IDA一下,main函数代码
    在这里插入图片描述

  • 分析代码:
    代码的的36行处进行了一个字符串比较,如果v10的值等于v13的值会反馈一个success的输出。v13的值在第15行给出,因此需要知道v10是怎么处理的。
    代码的第18行对v10进行了初始化,并在32行进行了拼接处理。分析26-35行的循环,其逻辑是:依次取出用户输入字符串的字符,将字符值的ascii码值转成16进制的形式拼接到v10中。
    因此,若想令v10的值等于v13的值,需将字符串v13中的值两个一组,当作16进制的值,换算成ascii码并转成对应的字符即可。得到的结果即为flag,也是要输入的内容。

9、no-strings-attached

题目描述:菜鸡听说有的程序运行就能拿Flag?
题目思路:

  • 先PE,32位
    在这里插入图片描述
  • 然后IDA,main函数代码
    在这里插入图片描述
    分析可知authenticate()函数储存着flag,进入函数
    通过第10~13行代码,我们可以知道s2就是我们需要flag(ws为输入值)
    在这里插入图片描述
    回到authenticate()函数的汇编代码
    通过第6~7行代码,我们可以知道eax储存着decryp函数返回的flag值,再保存到s2
    decrypt函数
    在这里插入图片描述
    综上所述,我们需要的flag保存在eax中,因此我们可以将断点设置在decrypt函数处,单步执行后,eax保存着我们需要的值,再读取eax值即可。
  • 进入GDB(Linux)

10、csaw2013reversing2

题目描述:听说运行就能拿到Flag,不过菜鸡运行的结果不知道为什么是乱码
题目思路:

  • PE一下,32位。
    在这里插入图片描述
  • IDA32一下,main函数代码
    在这里插入图片描述
  • 分析代码:
    双击 sub_40102A() 查看其反编译代码,发现返回值恒为零:
    而对于库函数 IsDebuggerPresent(),若程序处于调试模式下,则返回值为非零;若未处于调试模式下,则返回值为零。显然,程序不处于调试模式下,即无法满足 if 语句的条件。
    双击 sub_401000() 查看其反编译代码,目测是对以上乱码数据的解密函数:
    综上,解题思路大致为:进入 if 语句块,跳过调试断点,并执行解密函数,最终弹框输出 Flag。
  • 修改过程:
    在主函数的反汇编窗口中,核心的语句块如下方框。
    int 3 中断即为调试断点指令,需将其改为空指令 nop。
    将 jz short loc_4010B9 修改为 jmp short loc_401096。
    将 jmp short loc_4010EF 修改为 jmp short loc_4010B9。
    改完之后,在编辑修补程序,输出到应用程序, 再执行,即可获得flag。
    在这里插入图片描述
    在这里插入图片描述

11、getit

题目描述:菜鸡发现这个程序偷偷摸摸在自己的机器上搞事情,它决定一探究竟

题目思路:

  • 先丢PE,64位
    在这里插入图片描述

  • 再丢IDA,看main代码。
    在这里插入图片描述

  • 接着其中一些参数的值看一下
    其中值得我们注意的是t的值,t的值应该是0x53+‘harifCTF{???}’,即SharifCTF{???}
    因此,t很有可能是储存flag的数组。
    在这里插入图片描述

  • 分析代码:
    代码整体上可以分为3个部分
    1~11 变量定义初始化
    12~20 定义flag值
    20~34 flag值写入文件
    因此我们只需要将第二部分复现,输出flag即可。

12、maze

题目描述:菜鸡想要走出菜狗设计的迷宫
解题思路:

  • PE,64位文件
    在这里插入图片描述

  • IDA,main函数
    在这里插入图片描述

  • 代码分析:

    解迷宫
    起点(1,1),只能走0,要走到‘#’,找到路径右下右右下下左下下下右右右右上上左左

得到flag

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息