bugku mountain climbing

2023-10-24 12:10
文章标签 bugku mountain climbing

本文主要是介绍bugku mountain climbing,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

知识点

这条题涉及了一些知识点,可以的,做了一天。

  • 给出的软件在win10 下面不运行
  • 有的脱壳机脱不了这壳(多试试几个就行,不行就手脱)
  • 脱壳后IDA反汇编会失败(这时候要调节堆栈)—不知道是不是故意出成这样的。。。。
  • 算法分析(这个还是蛮简单的,入门级)
  • OD中跟加密的函数
    因为这个在IDA中看的有点儿懵逼。。。。。

分析

那开始吧。

关于IDA反汇编失败
点这里

关于软件在win10不能运行
点这里

那两个烦人的问题就解决了111111,
不知道那些大神们的环境为啥这么流畅。。。。

在这里插入图片描述

先无脑F5一下,看看。
结果这个还是挺简单的。

srand(0xcu) //伪随机数

然后是一个递增的列表,
这个很明显,用c一下子就打出来了,难度不大。

接下来是语句的输出。

这些都不重要,

最重要的是下面的这个循环。

长度要等于19.

输入的只能是L或者是R.
不是的话就会输出error,醉了,还以为是一个走迷宫,

然后是先把第一个数先放到数组里,
然后再递增,

思考:那么这条题是讲什么东东的???
又不给提示啥的,
还climbing mountain,爬啥呢?
再运行一次程序:

发现提升:maximun (学好英语的重要性,狗头)

那应该就是求最大值。(这种情况下,毫无思路,只能按照这种思路走,先走走看看,不行再说)

嗯,那先把数组弄出来看看,

用c写吧,

#include<stdio.h>
#include<stdlib.h>
int main()
{int i,j;int a[20][20];srand(0xC);for(i=1;i<20;i++){for(j=1;j<=i;j++){a[i][j]=rand()%100000;}}for(i=1;i<20;i++){for(j=1;j<=i;j++){printf("%d ",a[i][j]);}printf("\n");}return 0;} 

然后就得出结果了,

然后,题目蛮友善的,这个遍历太简单了。(自己手动数都行oooooo)
PS:(这个学期要认真学好数据结构,那些什么深度遍历,二叉树什么的还只停留在概念,实操gg)

#include<stdio.h>
#include<stdlib.h>int main()
{int i,j;int a[20][20];srand(0xC);int v1=1;int v2=1; int sum;for(i=1;i<20;i++){for(j=1;j<=i;j++){a[i][j]=rand()%100000;}}sum=a[1][1];for(i=2;i<19;i++){if(a[i][v2]<a[i][v2+1]){printf("R");v2=v2+1;}else{printf("L");		}sum+=a[i][v2];}return 0;} 

RLLLRRLLLRLLLLRLLR

正确顺序,
但此时,却不行。

emmmmmmm,

这时候我机智地翻开了别人的wp,(O(∩_∩)O),tql!

原来那里忽略了一个小函数,,,,,,

看来以后要留个心眼了。。。。

这是IDA和OD一起上,

很快就跟踪到了加密的地方。

在这里插入图片描述
认真分析一下就ok了,

这里跟到这里,(又掌握了一些加快跟踪速度的方法)

可以看出是换偶数位,让偶数位和4异或。。。。

那就是RVRVRHLVRVLVLVRVLVL

问题又来了:
flag呢?
想起之前做的迷宫题,
emmm,
这里中间又木有出现flag的序列号,应该就是直接交这个上去咯。。。。

然后就欧克了。

学到的东西

一些调试啥的,
还有就是用OD分析要有耐心,
要掌握多一点跟踪技巧。

这篇关于bugku mountain climbing的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/275075

相关文章

leetcode#70. Climbing Stairs

题目 You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? Note: Given n will be a posi

Maximum Number in Mountain Sequence

Given a mountain sequence of n integers which increase firstly and then decrease, find the mountain top. Example Example 1: Input: nums = [1, 2, 4, 8, 6, 3] Output: 8 Example 2: Input: nums = [

BugKu练习记录:小山丘的秘密

题目: hill能有什么秘密呢 bugku{PLGTGBQHM}其中A=1,flag全为小写 hill解密,a=1,所以z=0,字母表为zabcdefghijklmnopqrstuvwxy,根据图片上的棋子数得到对应的字母,分别是abczadefz,用工具解出明文为whatahill,答案为bugku{whatahill}

【九度】题目1388:跳台阶 【LeetCode】Climbing Stairs

1、【九度】题目1388:跳台阶 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2435解决:995 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70)。 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台

bugku---misc---赛博朋克

1、下载附件解压之后是一个txt文本,查看文本的时候看到头部有NG的字样 2、把txt改为png后缀得到一张图片 3、binwalk没发现奇怪的地方,分离出来还是图片 4、stegslove分析,切换图片没有发现奇怪地方 5、将通道rgb置为0。出现了flag但是flag不明显 6、使用kali中自带的zsteg工具,提取隐写信息 7、flag flag{Hel

bugku---misc---easy_nbt

1、题目描述 2、下载附件,解压之后得到 3、查找资料发现:NBT文件是Minecraft游戏数据文件,其中包含以命名二进制标签(NBT)格式保存的数据。这种格式用于存储大量二进制数据,通常包含有关Minecraft世界的信息。NBT数据通常以.dat文件的形式存在于游戏存档文件夹中。这类文件可以通过修改后缀解压 4、将level.dat文件修改后缀为.zip解压之后得到下面文件

bugku---misc---ping

1、下载附件,解压后是一个流量包 2、用wireshark分析,发现都是清一色的icmp报文,只能看看内容。 3、点了几条流量,发现有个地方连起来是flag 4、最终将所有的拼起来,得到flag flag{dc76a1eee6e3822877ed627e0a04ab4a}

爬山算法(Hill Climbing Algorithm)详细介绍

爬山算法(Hill Climbing Algorithm)详细介绍 1. 概述 爬山算法(Hill Climbing Algorithm)是一种基于启发式的搜索算法,广泛应用于人工智能、运筹学和优化问题。该算法以当前状态为起点,不断选择邻域中能够提升目标函数值的状态,并逐步朝着目标前进,直到达到局部最优解。 2. 算法原理 爬山算法的核心思想是“贪心策略”(Greedy Strategy)

bugku题目(带WP)

CTF题型,带WP。根据给出的题目,找到flag。 1、眼见非实 下载实验文件是一个file .zip 解压这个file.zip压缩包,得到眼见为实.docx文件 双击打开这个文件,不能读取。 修改眼见为实.docx的后缀为眼见为实.zip,再进行解压。 进入word文件夹,看到docment.xml 使用记事本或者notepad++打开docment.x

hdu-1049-Climbing Worm

#include<stdio.h> int  main() { int a,b,c,i,sum; while(scanf("%d%d%d",&a,&b,&c)&&a) { sum=0; for(i=0;;i++) { if(sum>=a) break; if(i%2==0) sum+=b; else  sum-=c;