攻防世界--->EASYHOOK

做题笔记。

下载 查壳。

32ida打开。

进入main:(该改的该)

动调,第一遍,试试水:看看程序的状态。

运行。

发现我们的输入变成了另一种字符,并且还写了个文件。

我们对,input进行追踪。

大胆 猜测,问题出现在 WriteFile 这里。

对 WriteFile 进行溯源,查看其汇编代码。

跟进看看。

跟进第一个函数。

(而且其地址很可疑。401000地址,这太熟悉了。经常作为32位老旧程序的入口点。。。  )

可以动调去实践。

那么,逆向回去就可以了。

脚本:

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

int main()
{
	unsigned char key[50] =
	{
		97, 106, 121, 103, 107, 70, 109, 46, 127, 95,
		126, 45, 83, 86, 123, 56, 109, 76, 110, 0
	};
	char flag[50] = " ";
	char v3;
	for (int i = 0; i < 0x13; i++)
	{
		if (i == 0x12)
		{
			flag[i] = key[i] ^ 0x13;
		}
		else
		{
			if (i%2)//奇偶数判断。
			{
				v3 = i ^ key[i];
				flag[i] = v3 + i;
			}
			else

			{
				v3 = i ^ key[i];
				flag[i + 2] = v3;
			}
		}
		printf("%c", flag[i]);
	}
	printf("\n");
	system("pause");
	return 0;
}


不过我少了个字符,但无伤大雅,直接添上就可以了。

至于为什么?

ASCII 32:

验证:

flag{Ho0k_w1th_Fun}

好的,以下是代码形式的电话线路图状态: ``` @startuml title Telephone State Diagram [*] --> Idle : Initial State Idle --> Dialing : Off Hook Event Dialing --> Connecting : Valid Number Event Dialing --> Disconnected : Invalid/Wrong Number Event Connecting --> TimeOut : Timeout Event Connecting --> Connected : Called Phone Answers Event Ringing --> Connected : Called Phone Answers Event Connected --> Idle : On Hook Event Connected --> Busy Tone : Line Busy Event Connected --> TimeOut : Timeout Event Connected --> Disconnected : Timeout Event Connected --> Ringing : Play Message Event @enduml ``` 解释一下: - 初始状态为空闲状态(`[*] --> Idle : Initial State`)。 - 当电话机摘机时,电话状态从空闲状态转入拨号状态(`Idle --> Dialing : Off Hook Event`)。 - 当拨号有效号码时,电话状态从拨号状态转入连接状态(`Dialing --> Connecting : Valid Number Event`)。 - 当拨号号码无效或错误时,电话状态从拨号状态转入未连接状态(`Dialing --> Disconnected : Invalid/Wrong Number Event`)。 - 当连接超时时,电话连接状态从连接状态转入超时状态(`Connecting --> TimeOut : Timeout Event`)。 - 当被拨打的电话接听时,电话连接状态从连接状态或响铃状态转入已连接状态(`Connecting --> Connected : Called Phone Answers Event` 或 `Ringing --> Connected : Called Phone Answers Event`)。 - 当已连接状态的电话机挂机时,电话状态从已连接状态转入空闲状态(`Connected --> Idle : On Hook Event`)。 - 当已连接状态的电话线路忙碌时,电话状态从已连接状态转入忙音状态(`Connected --> Busy Tone : Line Busy Event`)。 - 当已连接状态的电话连接超时时,电话状态从已连接状态转入未连接状态(`Connected --> TimeOut : Timeout Event`)。 - 当已连接状态的电话播放信息时,电话状态从已连接状态转入响铃状态(`Connected --> Ringing : Play Message Event`)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值