攻防世界 easy_Maze
easy_Maze
这道题还是挺好玩的.
由题目我们能知道是关于迷宫的题. 下载下来是elf文件, 查壳后无壳, 在linux下运行看看大概流程.
载入IDA, 先分析了接受我们输入的字符的函数. 知道在外面一层的主函数是先生成一个每行7个元素的数组. 然后通过我们输入的字符按控制在矩阵迷宫中走向, 最后按照规定的到达一个目的地.
接下来就是找生成那个矩阵了. 通过上面的49个元素知道且下面函数的参数7, 知道规模 7*7.
看了 Step_0 函数, 还是简单, 但是 step_1 中嵌套了2个函数且很复杂. 开始我就把生成矩阵的所有函数及数据都复制到VC 再根据栈的特点改下数据的顺序, 然后运行打印出矩阵. 问题是运行后什么也没有打印, 调试发现一个函数中的内存空间和另外一个冲突, 相互覆盖值. 这个函数太多, 改起来也麻烦.
然后转向GDB调试, 但是不熟练. 又转向ida动态调试. 先下断点, 找到储存矩阵的空间的地址, 把这个地址转到数据窗口跟随. 运行到生成矩阵的下面一个函数. 得到生成的矩阵.
把数据复制下来, 用C语言打印出来号观察, 注意每个数据4个字节(小端).
#include <stdio.h>int main(void) {union{unsigned char ida_chars[196];int a[49];}A = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0};int i = 0, j = 0;int (*p)[7] = (int (*)[7])A.a; for(i = 0; i < 7; i++){for(j = 0; j < 7; j++){printf("%d ", p[i][j]);} putchar(10);}return 0;}
- 根据我们打游戏的熟悉 aswd ,朝着1走到最后. ssddwdwdddsssaasasaaassddddwdds 最后在linux下输入.
- 总结: 更加熟悉了linux动态调试的运用, 加深了数组指针的理解.
攻防世界 easy_Maze相关推荐
- 攻防世界easy_Maze
ida进入main函数 int __cdecl main(int argc, const char **argv, const char **envp) {__int64 v3; // raxint ...
- 【攻防世界001】Guess-the-Number
攻防世界之前刷了几十题了,没写wp,感觉很简单没啥意思.后来参加了几次比赛,发现有点干不动,决定还是老老实实刷题好了.这是第一篇wp,这题很简单,是个jar,用jd-gui可以得到java源码. 原来 ...
- 攻防世界(pwn)--Mary_Morton 利用格式化字符串+栈溢出破解Canary的保护机制
ctf(pwn) canary保护机制讲解 与 破解方法介绍 程序执行流程 有三个选项,1是利用栈溢出,2是利用格式化字符串,3是退出;可连续输入多次; IDA分析 解题思路 程序存在canary保护 ...
- 攻防世界(Pwn) forgot---栈溢出;(方法二)
攻防世界(Pwn) forgot-栈溢出:(方法一) 里面对问题描述的更详细一点 返回目标函数 0x80486CC 方法二(爆破流) 因为最终返回的是 v3[0]-v3[9] 之中的一个函数, v3[ ...
- 攻防世界(Pwn) forgot---栈溢出;(方法一)
攻防世界(Pwn) forgot-栈溢出:(方法二) 介绍 这道题表面看起来有点复杂,其实很简单,有两种方法可以来做这一道题; 方法一(精确打击) 文件运行流程是: 1.先输入名字 2. 输入一串字符 ...
- 攻防世界misc新手_[攻防世界]mobile新手练习区easy-apk
[攻防世界]mobile新手练习区easy-apk easy-apk最佳Writeup由129师386旅独立团 • devi1提供 难度系数: 7.0 题目来源: 暂无 题目描述:无 题目场景: 暂无 ...
- 攻防世界 ——crypto
目录 新手区部分题解: 1,easy_RSA 2,Normal_RSA 3, 幂数加密 4,easy_ECC 高手进阶区部分题题解 5, ENC 6,告诉你个秘密 7,Easy-one 8,说我作弊需 ...
- 攻防世界———MISC 高手区题解
目录 1,base64stego 2,easycap 3,Avatar 4,What-is-this 5,签到题 6,Training-Stegano-1 7,Excaliflag 8,Get-the ...
- 攻防世界 web(二)
这周接着刷攻防世界的web题( ̄︶ ̄)↗ 1.command_execution 看提示这题为命令执行漏洞(command_execution),关于命令执行漏洞,我前面有篇博客详细介绍了,大家不了解 ...
最新文章
- spark比java快吗_为什么我的Spark DataFrame比RDD慢得多?
- Visual C#3.0新特性概览
- Go基础编程:格式化输出、类型转换、类型别名
- SQL SERVER 2008中用C#定义压缩与解压缩函数
- 全新拟态个人主页/引导页源码
- linux下python 2.4升级到 python 2.5
- composition 组合
- JMETER SLAVE和MASTER 分布式启动压测
- Python3基本数据类型(一、数字类型)
- 翱翔云天的SAP技术课程体系
- win7安装micropython串口驱动失败
- 移动apn接入点哪个快_千兆交换机和快速以太网交换机哪个更好呢?
- 项目配置文件----.eslintignore,eslint在做风格检查的时候忽略 dist 和 vender(第三方库) 不去检查。
- 手机NFC是什么?怎么使用?
- matlab中cuk电路搭建,cuk电路matlab仿真
- 35岁的程序员:第16章,双重担忧
- LoadRunner12 进行协议顾问分析时浏览器选择问题
- 汽车天线系统结构、原理及应用指南
- PL/SQL Developer 14 配置
- Unity开发元宇宙多人交互XR应用
热门文章
- Linux安装配置ELK日志及与SpringBoot的整合使用
- python单元测试框架之unittest和pytest的区别
- 玩转华为ENSP模拟器系列 | 两个网关之间存在NAT设备时通过IKE方式协商IPSec VdPdNd隧道(总部不指定分支IP地址)
- artdialog ajax,artDialog v6 iframe 跨域请求
- 转 A10/A20 Bootloader加载过程分析
- 部分智能推荐算法总结
- 世界最流行的php框架排名_推荐20个最近很流行的优秀PHP框架
- 在win10系统wps中英文输入忽然单词字母间间距很大如何调整?
- 通用串行总线-USB简介
- 中国当代青年的十大错觉