2022DASCTF X SU 三月春季挑战赛 easyre

有壳aspack,一般遇到都是upx,网上搜了aspack脱壳工具都没脱成功,使用手脱

手脱aspcak

打开od

下面使用ESP定律法进行脱壳

push压栈了,我们观察到esp中的值变红了,改动了。

在内存窗口中转到

下这个地址下硬件断点

运行软件,断到了。

 接着f7

pop出栈,我们发现有个大规模跳转,应该就是oep了

 调用api,是oep

准备dump一下

使用Lord Pe

 先修正大小,然后dump

 这个时候,我们还不能打开,还没修复IAT

 打开后吧oep的偏移地址放入

 

 获取表函数。无效的就删,然后点击修复文件,把之前dump出的文件就行修复

RVA不讲

已经脱掉了

 用ida打开,直接f5

 

 base58解码后发现是假的,直接不看

 

 这个就是真的。

直接看加密函数,很麻烦,直接动调

构造42位input

lobyte是取地位的意思,我们跑起来后直接进这个地址找流秘钥

 每4位取1,直接取,然后写exp

#include<stdio.h>
#include<string.h>
int main()
{
	int v2[42];
	v2[0] = -61;
	  v2[1] = -128;
	  v2[2] = -43;
	  v2[3] = -14;
	  v2[4] = -101;
	  v2[5] = 48;
	  v2[6] = 11;
	  v2[7] = -76;
	  v2[8] = 85;
	  v2[9] = -34;
	  v2[10] = 34;
	  v2[11] = -125;
	  v2[12] = 47;
	  v2[13] = -105;
	  v2[14] = -72;
	  v2[15] = 32;
	  v2[16] = 29;
	  v2[17] = 116;
	  v2[18] = -47;
	  v2[19] = 1;
	  v2[20] = 115;
	  v2[21] = 26;
	  v2[22] = -78;
	  v2[23] = -56;
	  v2[24] = -59;
	  v2[25] = 116;
	  v2[26] = -64;
	  v2[27] = 91;
	  v2[28] = -9;
	  v2[29] = 15;
	  v2[30] = -45;
	  v2[31] = 1;
	  v2[32] = 85;
	  v2[33] = -78;
	  v2[34] = -92;
	  v2[35] = -82;
	  v2[36] = 123;
	  v2[37] = -84;
	  v2[38] = 92;
	  v2[39] = 86;
	  v2[40] = -68;
	  v2[41] = 35;
	  int v3[42]={56 ,120 ,221 ,232 ,0 ,175 ,191 ,58 ,107 ,251 ,184 ,12 ,133 ,53 ,92 ,173 ,230 ,0 ,224 ,138 ,29 ,189 ,70 ,210 ,43 ,0 ,21 ,36 ,198 ,173 ,161 ,201 ,123 ,18 ,40 ,0 ,5 ,0 ,114 ,62 ,16 ,161	
	  };
	  int i;
	  char flag[42];
	  for(i = 0;i<42;i++)
	  {
	  	flag[i] = (v2[i]-71)^v3[i];
	  	printf("%c",flag[i]);
	  }
	  
}
 

解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值