易霖博比赛Re部分WP

re1

先看运行下程序。发现输入提示,那用IDA打开搜索关键字符串,利用交叉引用定位函数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
函数对用户输入前面几个字符进行判断,符合就是flag,直接提取出判断条件中的数据即可,那就是flag.

flag{Sing_fDfkl_CTF}

angr2_1

ELF文件,先用IDA打开看下,如下:
在这里插入图片描述
main函数以及把程序逻辑写的很清楚了,运行时大致流程是:
初始化passwd,读取用户输入,并对用户输入调用complex_function函数,返回数据,并对返回数据与passwd进行check equal判断。

complex_function函数函数如下:
在这里插入图片描述
check函数如下:
在这里插入图片描述

complex函数对输入加上了某个偏移,我们可以写个破解脚本,可以暴力,可以逆向那个运算操作,但我这选择简单的暴力,代码如下:

#include <string>
#include <iostream>
#include <vector>

using namespace::std;

int main()
{
	string passwd{ "IKAWTEQWJHQTVRCF" };
	string flag;

	for (int i = 0; i < 16; ++i)
	{
		for (auto j = 'A'; j < 'Z'; ++j)
		{
			auto t = (j - 65 + 29 * (18 - i)) % 26 + 65;
			if (passwd[i] == t)
				flag.push_back(j);
		}
	}

	cout << flag << endl;

	return 0;
}

flag{GLEDDRGPFGSYDCQW}

发布了19 篇原创文章 · 获赞 2 · 访问量 2531

猜你喜欢

转载自blog.csdn.net/SC_king/article/details/105144000
今日推荐