BugkuCTF-Reverse题游戏过关多解法

解题流程

下载程序
运行:
在这里插入图片描述
翻译为:
玩游戏
n是灯的序列号,m是灯的状态
如果第n个灯的m是1,它就亮,如果不是,它就灭
起初所有的灯都关上了
现在您可以输入n来更改其状态
但是你应该注意一件事,如果你改变Nth的状态p、 (N-1)th和(N+1)th的状态也改变
所有灯亮起时,flag将出现
现在,输入n
输入n,n(1-8)
就是输入一个1到8之间的数,例如1:就会改变周围的三个数的状态,令8、1、2三个数变亮,再输入一个2:也会改变2周围三个数的状态,令1、2熄灭,3亮起。多次输入后,最后8个数都亮起的时候就会输出flag。

方法一

逐渐输入1~8,得到flag
在这里插入图片描述

方法二

动态调试
先查壳
在这里插入图片描述
OD打开文件
右键 >> 搜索引擎 >> 智能搜索,一眼找到flag相关字符串"done!!! the flag is"
在这里插入图片描述
双击字符串找到对应的汇编指令,能推断出这是一个输出flag的函数,向上找到这个函数的入口地址为0099E940,因此只要让程序跳转到这里就能输出flag。
在这里插入图片描述
根据搜索到的字符串确定到输出flag函数的位置0099E940,点击可以看到显示“跳转来自 007A7AB4”,右键转到该地址。
在这里插入图片描述
又看到在007A7AB4位置显示“本地调用来自 007AF66C”,右键转到这个地址。
在这里插入图片描述
可以看到,在007AF66C地址的call指令之上有八个jnz指令,对应的是程序里八盏灯的明暗判断。
在各jnz指令处都设置断点。按F9运行程序,程序需输入1-8任意一数字,程序会运行到第一个jnz处的断点暂停。输入1的结果如下图:
在这里插入图片描述
这时看程序运行到时,对应的ZF标志寄存器值为多少,若为0则右键“置1”,然后运行。接下来的七个断点也是如此。
在这里插入图片描述
八个jnz处的断点位置z寄存器的值都为1,函数接着就会跳转到输出flag的函数。后面没有设置断点,直接继续运行就能得到flag。
在这里插入图片描述
注意: 这里用jnz去举例,jnz的判断检查Z位,当Z位是1的时候就不跳转,在Z位是0的时候就跳转
在这里插入图片描述
在这里插入图片描述

方法三

DA打开无壳
1.SHIFT+F12打开string窗口
2.ALT+T查找flag
在这里插入图片描述
3.双击查看该字符串的内存地址
变量位于只读数据区(rdata)
在这里插入图片描述
4.通过X键定位变量的交叉引用地址
在这里插入图片描述
F5查看伪代码(关键部分)
在这里插入图片描述
此IDA为IDAPro6.6
在这里插入图片描述
分析后是两步异或的过程
flag生成逻辑为:将v2 ~ v58各字符分别与v59 ~ v115进行异或,再与0x13u(十进制19)进行异或,所得的v2~58字符即为flag
5.Python对数据处理得到flag
在这里插入图片描述

方法五

修改源码
用OD打开,查找字符串“done!!! the flag is”找到输出flag的关键位置:
在这里插入图片描述
在这里插入图片描述
发现它是跳转来自 01077AB4。所以我们再往上转到 01077AB4:
01077AB4为跳转到flag的地址,后面修改的正为此地址01077AB4
在这里插入图片描述
在这里插入图片描述
0107E940=ConsoleA.0107E940 表明了它指向了输出flag的函数;本地调用来自 0107F66C说明它是由0107F66C调用的,所以我们再往回转到 0107F66C:
在这里插入图片描述
我们到了这,发现上面由8个JNZ,这不就是源代码里的8个判断吗?
在这里插入图片描述
一旦只要由一个判断不满足,程序就跳转到输出flag的函数的下一条去了,这样就不会输出flag而重新开始循环要求你输出n了:
在这里插入图片描述
所以我们要修改源代码令程序不管怎样都会进入输出flag的函数,这样我们只要运行程序就能得到flag了。将原来的“jmp 0107F4FB”(跳转到循环重新开始的位置)改为jmp 01077AB4(跳转到输出flag函数的位置),这样只要我们输入1~8直接的数,程序最后都为跳转到01077AB4(flag函数的入口地址):
在这里插入图片描述
建议:将jmp ConsoleA.01077AB4改为call ConsoleA.01077AB4
即不要跳到里面去

也可以在断点运行的过程修改跳转地址
保存到可执行文件,(没有直接保存的选项,所以需要右键 复制到可执行文件->选上
运行:
在这里插入图片描述
同样也得到flag。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10 张有关程序员的趣图,图图扎心

0、没事,我已经全部注释掉了1、好好的现有库你不用,非得造轮子了!2、HR 和程序员都是如何看简历的?3、程序员的灾难曲线图4、用钉钉子解释软件测试5、听说你是 CSS 高手6、客户需求 vs 最终实现7、程序员的 8 种层级↓↓↓8、多线…

CTF-汇编语言归纳

内容更新是由低向高递增的 内容如下: xor rax, rax #xor rax,rax是对rax的清零运算操作 条件跳转(一般配合cmp使用) 下表展示了基于零标志位、进位标志位、溢出标志位、奇偶标志位和符号标志位的跳转。 此表为1) 相等性的比较 无符号数比较 基于无符号数比较的…

Cloud一分钟 |谷歌总裁李佳离职;三星将为5G网络投220亿美元;人人网6000万美元贱卖...

Hello,everyone:11月16日早,星期五CSDN一分钟新闻时间:谷歌总裁李佳离职,未来投入AI与医疗领域 谷歌折损一员大将,不知作何感想。 三星将为5G网络投220亿美…

OD(Ollydbg)简介

ollydbg简介: Ollydbg 通常称作OD,是反汇编工作的常用工具,OD附带了200脱壳脚本和各类插件,功能非常强大,可以过SE,VMP3.0,深受逆向圈内人士的喜爱 OD,是一个反汇编工具,…

CTF-Bugku逆向题Android方法归纳

1.signin题目: reverse() 功能:反转数组里的元素的顺序 语法:arrayobject.reverse.() 这类方法会改变原来的数组,不可逆转 tostring() 功能:将各类进制的数字转化为字符串 语法:number.toString(radix)&#xff08…

八折进行中 | 暌违一载,2018 中国大数据技术大会(BDTC)首轮讲师阵容震撼来袭!...

暌违一载,今又相约。作为年度技术趋势与行业应用的风向标,2018 中国大数据技术大会(BDTC 2018)携主题“大数据新应用”再度强势来袭,稳踏技术时代浪潮,势将引爆今冬技术圈。2018 年12 月 6-8 日&#xff0c…

BugkuCTF-WEB题web16备份是个

知识点 ini_set — 为一个配置选项设置值 PHP ini_set用来设置php.ini的值,在函数执行的时候生效,脚本结束后,设置失效。无需打开php.ini文件,就能修改配置,对于虚拟空间来说,很方便 strstr — 查找字符串…

中国云计算的十年江湖

本文经授权转自公众号企服行业头条(ID:wwwqifu)有云的地方,就有江湖。有江湖的地方,就免不了战乱纷争。盘古开天地前,宇宙混沌一片。云计算在国内诞生之际也是如此。没有先例,没有规矩。一切都从…

BugkuCTF-WEB题速度要快

此题小结: 用python脚本获取网页内容以及post数据 主要函数: s requests.session() url’’ return s.get(url). # 可以获取header等信息 data{} 最后传值:s.post(datadata) 解题流程 打开网页,只看到一句话:我感觉你得快点!!! F12查看源…

BugkuCTF-WEB题秋名山车

打开网页,题目让我们计算车速,限时2s,并且通过POST方式传递结果 再刷新几次,显示: 手动计算并传值一定会超过2s的时间限制,因此我们编写python脚本实现(参考车速脚本.py) 编写python脚本并运行&#xff0…

想在“双十一”做“爆款”?你的数据库存能支撑吗?

火热的“双十一”剁手节刚刚过去,阿里巴巴、京东们继续往年的辉煌,有趣的是,线下传统零售百货们今年也不甘寂寞,诸如北京的新世界百货、上海和杭州的银泰百货等大商场也适时推出各种活动,赚了个盆满钵满。有些消费者今…

BugkuCTF-WEB题需要管理员

提示:好像需要管理员 御剑扫描一下后台,发现robots.txt,访问 提示/resusl.php,继续访问,发现要传入一个参数x,并且x的值是要等于password,采用burp爆破 得到密码是admin,其实题目好像需要管…

Cloud一分钟 |小米与美图战略合作;新东方在线通过港交所上市聆讯;工信部审批首个“.cloud”顶级域名...

Hello,everyone:11月20日早,星期二CSDN一分钟新闻时间:小米与美图战略合作,将获得美图手机品牌和影像技术等全球独家授权 小米要收购美图的节奏? …

BugkuCTF-WEB题file_get_contents

知识点 empty() 函数用于检查一个变量是否为空。empty() 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。 extract()函数从数组里将变量导入…

盛会再临,2018 中国大数据技术大会(BDTC)首曝日程及议题

满目皆干货,俯仰尽拾珠。作为年度技术趋势与行业应用的风向标,连续成功举办十一年的中国大数据技术大会(BDTC)携主题“大数据新应用”再度强势来袭,稳踏技术时代浪潮,势将引爆今冬技术圈数据,让…

BugkuCTF-WEB题程序员本地网站

在BurpSuite里添加X-Forwarded-For: 127.0.0.1

云计算的“傲慢”与“偏见”

还记得身高一米六的男生终于扬眉吐气,却又被知识狠狠碾压的那一次相亲节目现场吗?美女嘉宾的择偶标准明晃晃的写着“身高不能低于158公分,喜欢懂得云计算。”将“懂得云计算”排在择偶标准的第一位,究竟是什么操作?通俗…

BugkuCTF-WEB题MD5

解题流程 打开页面: 根据提示:md5 collision 找一个以0e开头的md5值 0e开头MD5值小结 s878926199a 0e545993274517709034328855841020 s155964671a 0e342768416822451524974117254469 s214587387a 0e848240448830537924465865611904 s214587387a 0e…

Cloud一分钟 |小米瞄上电纸书市场;员工《卫报》开专栏控诉亚马逊;拼多多Q3财报:总收入33.724亿元...

Hello,everyone:11月22日早,星期四CSDN一分钟新闻时间:重庆建成首个5G连续覆盖试验区:覆盖面积2.4平方公里 5G远程驾驶、5G无人机、虚拟现实等多项5G应用同时亮相,标志着重庆5G网络在商用化发展之路上又前进了一步。 …

只了解View的事件分发是不够的,来看下输入系统对事件的处理

1.IMS的启动过程IMS的创建在SystemServer的startOtherServices方法中,不了解请查看技术争鸣!七大主题报告,四大技术专题,AI开发者大会首日议程全回顾AR热度不在? NO! 三星开发者大会将聚焦AR人工智能进行时:人类的未来…