网鼎杯-re-joker

打开后是一个windows下的pe文件,查壳,无壳,为32位的可执行文件,使用IDA(32)打开,f5一键反编译,发现反编译不了,显示positive sp value has been found,那就开始看汇编把!

网鼎杯-re-joker

这里需要我们输入flag,通过后面的判断可以知道,输入字符长度为24,继续往下:

网鼎杯-re-joker

,,

这里可以看出来,flag经过了两个函数,__Z5wrongPc和__Z3omgPc如下:

前者主要对flag进行一些操作,偶数位(从0开始)^i,奇数位-1,得到的结果值传入后者再与字符串unk_4030C0进行比较

网鼎杯-re-joker

这里,发现有错误的输出,但输出错误并不会影响到整个程序的进行,而且后序的传参传的仍是原来的值,所以这里是个假的flag!!!好把,做题的时候我没有发现,(把假的flag求出来后才发现是假的>~

这里,进去__Z7encryptPc函数后,什么都没有,而箭头指向的地方是个循环解密的过程,换至OD中动态调试,运行到 call 401500处,

网鼎杯-re-joker

f7单步跟踪,发现函数流程如下:

网鼎杯-re-joker

判断ebp+0x1c的值是否等于0x12,然后从input中取出对应的字符与404012处对应的字符进行异或,异或后的值再与[ebp+eax4-0x6c]中的值相比较,相等则继续直至退出循环,若有一个不相等则退出程序, 查看[ebp+eax4-0x6c]中的值,如图:

网鼎杯-re-joker

网鼎杯-re-joker

运行到call 40159a处,f7单步进入,函数开头为,

网鼎杯-re-joker

结尾为

网鼎杯-re-joker

函数开头将5个数,放入了[ebp-0x11]地址处,继续运行至0x401617处,发现就是将flag的第一个字符与开头的第一个字符相比较,若相等则输出Really???若不相等就是输出I hide the last past,但这肯定是不相等的,再结合提示猜测与最后flag的五个字符有关,因为flag最后一位为’}’,故猜测flag即为开头五个字符与ord(‘}’)-0x3a异或得到,脚本如下:

c=[0x0E,0x0D,0x09, 0x06,0x13,0x05,0x58, 0x56,0x3E,0x06,0x0C, 0x3C,0x1F,0x57,0x14, 0x6B,0x57,0x59,0xd]

d=[0x25,0x74,0x70,0x26,0x3A]

b='hahahaha_do_you_find_me?'
print(len(a),len(b),len(c))

for i in range(19):
    temp=ord(b[i])^c[i]
    print(chr(temp),end='')

for i in d:
    x=i^(ord('}')^0x3a)
    print(chr(x),end='')

得到结果即为flag!!!

网鼎杯-re-joker

Original: https://www.cnblogs.com/jane315/p/13753043.html
Author: jane_315
Title: 网鼎杯-re-joker

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583758/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • CF1691D 题解

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据结构和算法 2023年6月12日
    071
  • Git&GitHub 03 使用 SSH 协议

    为什么使用 SSH protocol 在之前的教程中, 我们使用 HTTPS 协议 连接远程仓库. HTTPS 协议 是目前比较受用户青睐的连接方式, 用以下命令可以查看到当前 o…

    数据结构和算法 2023年6月12日
    085
  • 区间dp

    一.什么是区间dp? 顾名思义:区间dp就是在区间上进行动态规划,求解一段区间上的最优解。主要是通过合并小区间的 最优解进而得出整个大区间上最优解的dp算法。 二.核心思路 既然让…

    数据结构和算法 2023年6月7日
    063
  • AcWing 179. 八数码(搜索)

    题目描述 题目链接 解决思路 启发函数:只需要搜索非常少的状态,就可以搜到从起点到终点的最短路径 估价函数:当前状态中每个数与它的目标位置的曼哈顿距离之和 A*算法 优先级为:从起…

    数据结构和算法 2023年6月16日
    076
  • C++左值、右值

    C++左值、右值 值类别 在 C++11之后,C++根据 被标识:可通过不同标识符指代同一实体。(对象/内存) 可移动:可作为移动语义函数的参数,例如移动构造,移动赋值。 将值分为…

    数据结构和算法 2023年6月8日
    071
  • 一些数学

    裴蜀(贝祖)定理 ax+by=c gcd(a,b)|c a,b 已知且为正整数ax+by(min)=gcd(a,b) inv[a]≡a^-1(%m)则inv[a]为a%m 的逆元 …

    数据结构和算法 2023年6月7日
    078
  • 二叉搜索树(BST)

    二叉搜索树的定义 [14-1] [binary search tree] 二叉搜索树是一棵二叉树, 可为空, 满足以下性质: 每个元素有一个唯一的 key. 根的左子树的 key …

    数据结构和算法 2023年6月12日
    0119
  • Introduction & Related Work — Paper

    Paper实则 八股文。 Introduction作为paper的第一个section,作用不言而喻。 Intro主要包含的内容: 这篇文章的背景(Background);即什么样…

    数据结构和算法 2023年6月8日
    059
  • 【POJ 3255】Roadblocks(次短路 Dijkstra算法)

    直接翻译了 Descriptions Bessie搬到了一个新的农场,有时候他会回去看他的老朋友。但是他不想很快的回去,他喜欢欣赏沿途的风景,所以他会选择次短路,因为她知道一定有一…

    数据结构和算法 2023年6月14日
    079
  • JAVA 考试管理系统 大作业(一):需求分析

    好家伙,有需要的拿去借鉴吧(虽然我也百度了很多) 题目如下: 题目四:考试管理系统 (选做要求:使用图形用户界面) 分3种用户角色:教务员(具有管理权限)、教师、学生 l 教务员:…

    数据结构和算法 2023年6月12日
    088
  • 排序算法-希尔排序

    希尔排序 简单插入排序存在的问题 我们看简单的插入排序可能存在的问题. 数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1 (最小), 这样的过程是: {2,3,4…

    数据结构和算法 2023年6月12日
    091
  • 金融数据分析与挖掘具体实现方法 -1

    有人让我写一下关于数据挖掘在金融方面的应用,再加上现在金融对数据方面的要求不断提高,准备用两篇随笔来做个入门总结。 首先,在看这篇随笔以前稍微补充一点金融方面的知识,因为我不是金融…

    数据结构和算法 2023年6月7日
    073
  • 前端浅学之Vue

    Hello Vue {{message}} var app=new Vue({ //element,绑定id el:"#app", data:{ message…

    数据结构和算法 2023年6月7日
    078
  • 算法:斐波那契数列

    问题 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N…

    数据结构和算法 2023年6月12日
    069
  • AtCoder Beginner Contest 252

    Ex K-th Beautiful Necklace 题意 有 N 个石头,每个石头有不同的颜色和价值颜色一共有 C 种,每种颜色至少存在一个石头可以选择一些石头串成一条项链,项链…

    数据结构和算法 2023年6月12日
    051
  • CF1225F Tree Factory 题解

    考虑不论怎么样,每个子树里边最长的链都会接在别的链下面,因为如果这条链不动,让别的链接过来一定不优。所以就直接按这个排序然后输出 dfs 序就行了。具体证明我也不会,就是考场猜了个…

    数据结构和算法 2023年6月12日
    047
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球