BugkuCTF-Reverse题love
下载附件
先查壳
发现没加壳
再拖进 IDA 分析
按shift+F12查找字符串,可以看到如下 Base64 加密的痕迹,可判断基本是一个反解 flag 的题目
找到主函数按F5查看伪代码,如下:
可以发现这样的一个关键函数,也就是会将 Destination 与 Str2 进行比较,如果正确为right
分析可知:将输入的串Str1先进行base64加密 再与串Str2比较 若相等 则输出"right flag"
由此,我们只需将Str2也就是"e3nifIH9b_C@n@dH"进行解密即可
将str2和Dest相比较,而Dest为取V4的前长度0x28u的字符
V4的值来自sub_4110BE
Sub_4110BE取自sub_411AB0
Dest由v4而来,v4会通过base64加密,然后对Dest做了第2次的加密,v11为Dest的长度
而 Destination 是通过对输入的内容进行一连串变化之后得到的,str2是给出的
首先输入的东西通过 sub_4110BE 这个函数进行加密,得到初步的结果,跟进看看这个函数
点开加密函数:
关键语句就在这里 我们可以看到是算输入的字符按三个一组能分为几组 然后将这个数字乘上4
我们很容易想到是base64加密 因为和base64加密的过程太像了
看一下它的变换数组:
完整函数:
关键部分:
aAbcdefghijklmn 即:
可见输入内容先经过 sub_4110BE 这个函数进行 base64 加密,然后各位加上下标本身,再与 str2 比较
而str2的值为 “e3nifIH9b_C@n@dH”
编写解密脚本
import base64
str = "e3nifIH9b_C@n@dH"
f = ''
flag = ''
for i in range(len(str)):f += chr(ord(str[i])-i)
flag = base64.b64decode(f)
print(flag)
得到flag
BugkuCTF-Reverse题love相关推荐
- BugkuCTF刷题 pwn
唉,觉得自己TCL,栈溢出知识点差不多都会了,可是题目做不出来啊啊啊啊!缺少锻炼吧,这两天把BugkuCTF上面的pwn题做一下吧... pwn1 只给了连接 第一次,才50分,想来不会太难,连上去 ...
- 符号执行:利用Angr进行简单CTF逆向分析
一.符号执行概括 简单的来说,符号执行就是在运行程序时,用符号来替代真实值.符号执行相较于真实值执行的优点在于,当使用真实值执行程序时,我们能够遍历的程序路径只有一条,而使用符号进行执行时,由于符号是 ...
- 强网杯2021 ctf线上赛ezmath wp(#超详细,带逆向新手走过一个又一个小坑)
文章目录 引言 一.分析文件类型 二.初步分析 1 运行情况 2 IDA初步分析 三.详细分析 1 sub_13F3函数分析 2 查找蛛丝马迹 (1)mprotect (2)重写unk_2010 3 ...
- CTF逆向-[MRCTF2020]VirtualTree-恒成立的jz花指令去除及smc变换原执行流程在二叉树上的应用,通过逆向思维编写脚本以解决
CTF逆向-[MRCTF2020]VirtualTree-恒成立的jz花指令去除及smc变换原执行流程在二叉树上的应用,通过逆向思维编写脚本以解决 来源:https://buuoj.cn/ 内容: 附 ...
- ctf(夺旗赛)的竞赛模式以及题目类型
一.解题模式(Jeopardy)在解题模式CTF赛制中,参赛队伍可以通过互联网或者现场网络参与,这种模式的CTF竞赛与ACM编程竞赛.信息学奥赛比较类似,以解决网络安全技术挑战题目的分值和时间来排名, ...
- CTF逆向-[b01lers2020]little_engine-cpp基本函数用法和byte类型要点
CTF逆向-[b01lers2020]little_engine-cpp基本函数用法和byte类型要点 来源:https://buuoj.cn/ 内容: 附件:https://pan.baidu.co ...
- LeetCode 92. Reverse Linked List II--Python 解法--反转部分链表--笔试算法题
题目地址:Reverse Linked List II - LeetCode Reverse a linked list from position m to n. Do it in one-pass ...
- Java黑皮书课后题第7章:*7.12(倒置数组)7.7节中的reverse方法通过复制到新数组实现倒置。改写方法将参数中传递的数组倒置,并返回该数组。编写一个测试程序,输入10个数字,倒置它们并显示
7.12(倒置数组)7.7节中的reverse方法通过复制到新数组实现倒置.改写方法将参数中传递的数组倒置,并返回该数组.编写一个测试程序,输入10个数字,倒置它们并显示 题目 题目描述 破题 代码 ...
- Java黑皮书课后题第6章:*6.4(反序显示一个整数)使用下面的方法体编写方法,反序显示一个整数…例如reverse(3456)返回6543,编写一个测试程序,提示用户输入一个整数,然后显示它的反序
*6.4(反序显示一个整数)使用下面的方法体编写方法,反序显示一个整数-例如reverse(3456)返回6543,编写一个测试程序,提示用户输入一个整数,然后显示它的反序 题目 题目概述 破题 代码 ...
- Java黑皮书课后题第6章:**6.3(回文整数)使用下面的方法头编写两个方法:……使用reverse方法实现isPalindrome。如果一个数字的逆序数和它自身相等,这个数就称为回文数。
6.3(回文整数)使用下面的方法头编写两个方法:--使用reverse方法实现isPalindrome.如果一个数字的逆序数和它自身相等,这个数就称为回文数. 题目 题目概述 破题:假设没有提示语句( ...
最新文章
- Hibernate缓存
- 自定义Android菜单背景
- 开始我的c++学习之路
- WCF分布式开发步步为赢(0):WCF学习经验分享,如何更好地学习WCF?
- sublime配置python编译环境及代码补全功能
- 【ResNet】ResNet到底在解决一个什么问题呢?
- 上周热点回顾(8.26-9.1)
- LaTeX插入Visio绘图,文字模糊
- 什么是IPS?如何对其进行调整?
- qt开发资料下载网址
- mysql题 以下1-7_mysql练习题
- NSURLSession htpps证书设置
- 张一鸣应该接过张近东的枪
- 二维数组的定义和访问
- 台式计算机硬件组装步骤,电脑硬件组装详细步骤有哪些
- Linux正确删除软链接
- es使用教程之_score(评分)介绍
- 大数据2--hive--hive介绍
- STM32中的RCC是什么意思
- 【华为云技术分享】基于华为云IOT及无线RFID技术的智慧仓储解决方案最佳实践系列一