首页
社区
课程
招聘
KCTF2019Q4 第四题 西部乐园
2019-12-7 14:57 2996

KCTF2019Q4 第四题 西部乐园

2019-12-7 14:57
2996
1. sys
根据传入的pass, 解密传入的shellcode, 并执行
解密算法: 1400015A0
ida抠出来直接用void x_decrypt_shellcode(PBYTE buf, int len, int pass);
解密成功的条件
struct IOStuff
{
  char *out_buf;
  void *fn_wrong;
  DWORD64 pid;
  DWORD64 pass;
  char shellcode[0xE7];
}; 
DWORD enc_size = InputBufferLength - (plain_size + 0x24);
x_decrypt_shellcode(&io->shellcode[plain_size + 4], enc_size, pass);
if ( *&io->shellcode[plain_size + 4] == enc_size )

2. exe
shellcode起始:  1400060B0
shellcode大小: 231
shellcode加密部分起始: 140006151+4
shellcode加密部分大小:  0x42
shellcode解密成功后MessageBoxA弹出OK

3. cpp
void test()
{
	for (DWORD i = 90000; i <= 96000; i++)
	{
		// 140006151 + 4
		BYTE data[] = {
			0xE8, 0x59, 0x0D, 0x6D, 0x80, 0x3C, 0xA2, 0x78, 0x15, 0x87, 0x16, 0x16, 0x07, 0x26, 0x68, 0x55, 
			0x7F, 0x12, 0xF1, 0xEF, 0xF9, 0xA1, 0x9C, 0xE8, 0xEA, 0x9C, 0x90, 0xF4, 0x9F, 0x3A, 0xA8, 0x8C, 
			0x27, 0x47, 0x79, 0xF6, 0xDC, 0x20, 0x7F, 0x86, 0xED, 0x34, 0x7E, 0xF7, 0x1C, 0x55, 0x6B, 0xF6, 
			0xEF, 0xF2, 0x2A, 0x7A, 0xF0, 0x44, 0x50, 0x8A, 0x9B, 0xE1, 0xC4, 0xE1, 0x45, 0x90, 0x2B, 0x0E, 
			0xCF, 0xAF
		};
		DWORD len = sizeof(data);
		x_decrypt_shellcode(data, len, i);
		DWORD v1 = *(PDWORD)data;
		if (v1 == len)
		{
			printf("pass: %d\n", i); // 91024
			printf("%s\n", util::bin2hex(data, sizeof(data)).c_str());
			break;
		}
	}
}




[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回