【伪随机数】【搜索】【RE】【bugku】mountainclimbing WriteUp
Mountain Climbing WP
拿到题首先熟练地查个壳再用各种脱壳工具脱个壳。
脱壳之后熟练地双击感受一下出题者的恶意:
根据字面意思得知,是要根据一系列的操作来得到收益最大值,于是用ida打开并f5出来研究出题者是想让我们如何操作:
76和82分别是“L”和“R”的ASCII码值,所以联想到操作只有左移和右移。在来看看这段代码的其他部分:
这一部分相当于利用伪随机数构造了一个直角三角形的数表。由于是伪随机数,只要随机数种子srand()的值一样,构造出来的数表也是一样的。这里的随机数种子是srand(0xCu)也就是srand(12),自行写脚本构造出来一个一样的随机数表:
这样就很明了了,题目意图是让我们从三角形数表的“山顶”开始一步步往下走,每次选择上一个节点的左子节点或右子节点下山,找出路线上所有数字和最大的那一条路线。于是利用随便一种搜索算法搜最优路线即可,这里用深度优先搜索举个例子:
#include <cstdio>
#include <ctime>
#include <windows.h>
using namespace std;
int mt[][];
int save[],ans[];
int MAXN = -;
void dfs(int h,int l,int sum){
sum += mt[h][l];
if(h == ){
if(sum >= MAXN){
MAXN = sum;
memcpy(ans,save,sizeof(save));
}
return ;
}
save[h] = ;
dfs(h + ,l,sum);
save[h] = ;
dfs(h + ,l + ,sum);
}
int main(){
srand();
for(int i = ;i <= ;++i)
for(int j = ;j <= i;++j)
mt[i][j] = rand() % ;
dfs(,,);
for(int i = ;i <= ;++i)
if(ans[i])
printf("R");
else printf("L");
return ;
}
当我把搜索到的最优解输进去之后...
嗯???error是什么情况???在反复确认搜索脚本无误后决定打开ollydbg一探究竟。在我试验性地输入字符串LLLLLLLLLLRRRRRRRRR后,字符串被原封不动的保存下来:
而当我调试经过004114F这个函数过后,我输入的字符串发生了有规律的改变:
再试验几个由“H”和“V”构成的字符串后发现,004114F这个加密函数是将偶数位的L与H互换,偶数位的R与V互换。于是将原来深搜的结果进行相应的转换,便是flag中括号里的内容了。
【伪随机数】【搜索】【RE】【bugku】mountainclimbing WriteUp的更多相关文章
- bugku login2 writeup 不使用vps的方法
0x00前言 这个题是sql注入与命令执行相结合的一个题,思路有两个: 一.:sql注入登录web系统,命令执行反弹公网IP监听端口(需要vps),此种方法详见链接:http://www.bugku. ...
- bugku misc writeup(一个普通的压缩包)
这个题做了好几个小时,因为没有writeup,一点一点摸索,做题思路写出来给大家交流 首先这是一个zip.rar压缩包,下载下来第一步就是拖进hexeditor中观察,检查下文件的头尾结构是否有问题, ...
- Bugku - 好多压缩包 - Writeup
bugku - 好多压缩包 - Writeup M4x原创,转载请注明出处 这道题前前后后做了好几天,这里记录一下 题目 文件下载 分析 解压下载后的文件,发现有68个压缩文件,并且每个压缩文件里都有 ...
- Bugku - Misc图穷匕见 - Writeup
Bugku - Misc图穷匕见 - Writeup 原文链接:http://www.cnblogs.com/WangAoBo/p/6950547.html 题目 给了一个jpg图片,下载图片 分析 ...
- bugku社工writeup
最近bugku的web和杂项刷了多半,突然心血来潮想试试社工题,bugku的社工题比较基础,而且题量不多,和大家分享一下writeup. 1.密码 根据提示,多猜几次密码就对了,然后得到flag. 2 ...
- 攻防世界 Misc 新手练习区 ext3 bugku Writeup
攻防世界 Misc 新手练习区 ext3 bugku Writeup 题目介绍 题目考点 WinHex工具的使用 linux磁盘挂载mount命令 Writeup 下载附件拖进winhex分析一下,查 ...
- 【bugku】【ZSCTF】【迷宫RE】Take The Maze WriteUp
Take The Maze 首先拿进PEID里查一下有没有壳: 无壳,果断拖进IDA.可是Graph View中找不到主程序的位置,在函数表里寻找主函数: 函数太多阻扰了我们找到主程序,运行一下程序找 ...
- Bugku Writeup —文件上传2(湖湘杯)
我们先来看下题目,题目说明是文件上传 我们可以尝试通过构造payload来进行测试 php://filter/read=convert.base64-encode/resource=flag 获取到f ...
- 【bugku】【RE】file WriteUp
FILE 查壳后显示无壳,拖进IDA: 运行程序时传递的第一个参数为一个文件名,并打开该文件.下面点进去encode函数分析一下: for循环中每三个为一组,进行Base64的操作,接下来两个if分别 ...
随机推荐
- qt-creator
https://github.com/qt-creator/qt-creator https://github.com/qt-creator
- 设计模式之笔记--建造者模式(Builder)
建造者模式(Builder) 定义 建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 类图 描述 Builder:定义一个建造者抽象类,以规范产 ...
- RadioButton 带下划线切换的案例
xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id=& ...
- Python中的PIL
转自:http://blog.csdn.net/yockie/article/details/8498301 介绍 把Python的基础知识学习后,尝试一下如何安装.加载.使用非标准库,选择了图像处理 ...
- [译]怎样在Vue.js中使用jquery插件
原文:http://gambardella.info/2016/09/05/guide-how-to-use-vue-js-with-jquery-plugins 使用Vue真的太棒了,但是也有可能使 ...
- 支持flv的播放神器
h1:让浏览器支持flv去https://github.com/Bilibili/flv.js h2:让手机电脑都支持mp4使用: <link rel="stylesheet" ...
- coercing to Unicode错误的一个解决办法
http://blog.csdn.net/happen23/article/details/46683813
- Foxmail 登录 qq 账号时无法登录 提示我们设置了独立密码或使用授权码登录的解决方法
Foxmail 登录 qq 账号时无法登录 提示我们设置了独立密码或使用授权码登录的解决方法 1.首先我们设置我们邮箱的类型如下图所示 2.打开网页版的qq邮箱 在设置--->账户---&g ...
- CodeForces 738C Road to Cinema
二分答案. 油量越多,显然通过的时间越少.可以二分找到最小的油量,可以在$t$时间内到达电影院. 一个油箱容量为$v$的车通过长度为$L$的路程需要的最小时间为$max(L,3*L-v)$.计算过程如 ...
- html不识别<br/>,后台返回<br/>,前端不换行解决办法
今天编写页面,后台直接返回带有html格式的字符串,包含<br/>,前端以为要展示<br/>,将其解析为<br/>页面不换行 解决办法 后台将<br/> ...