攻防世界---->key

做题笔记。

前言: 会更reverse和web的,都会做。不过,web毕竟纯新手。思路写的会比reverse还烂。。

下载 查壳。

32ida打开。

main函数没有什么,就调用了函数和清零操作 我们跟进函数看看。

得,C++写的。 - - (脑壳痛。)

下个断点运行:

得,会闪退,用WSL看看。

看看,字符串呗。

所以,我们得先有这个文件,否则会退出,打印。(目录截图不给~)

创建好之后,尝试着运行:

跟踪Block的值:

得 - - 错了(已老实)

接下来两种方法:

方法一:

看看此处的汇编代码:

要敏感函数的调用,给 call    sub_CE20C0 下断点瞅瞅。

可以看见,此时v9的值。 因为我们试了赋值之后的去提交错了,,,

试一试提交,赋值前的值。

 

idg_cni~bjbfi|gsxb

方法二:大佬的做法大致如下:

溯源:

因为,v6的值来源于Block

而v6又作为sub_4020C0的参数传入。

我们反跟踪Block,看看哪儿引用了它。

v29哪儿来的? 看汇编:

可知,先进行异或 然后再次进行了一个循环+9的操作。

脚本:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
	char Block[] = "themidathemidathemida";
	char v37[] = ">----++++....<<<<.";
	char flag[50] = " ";
	for (int i = 0; i < 18; i++)
	{
		flag[i] = ((Block[i] ^ v37[i]) + 22);
	}
	for (int i = 0; i < 18; i++)
	{
		flag[i] = (flag[i]+9);
		printf("%c", flag[i]);
	}
	printf("\n");
	system("pause");
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值