pwnable.kr之flag
 
文章目录
pwnable.kr 上的第四道题
0x00 分析
题目中说“This is reversing task. all you need is binary”,这是一个逆向任务,首先把文件下下来,放到IDA中分析,代码很简单,但是比较乱,因为说逆向,就去看看了字符串,看到可以字符串upx,原来加壳了
LOAD:000000000044A695 aUpx_sf_net db '//upx.sf.net $',0Ah,0
LOAD:000000000044A6A5 db 24h, 49h, 64h
LOAD:000000000044A6A8 dq '.3 XPU :', 'rypoC 80', ')C( thgi', '02-6991 '
LOAD:000000000044A6C8 db 2 dup(31h), 20h, 74h, 68h, 65h, 20h
upx壳去linux upx -d 直接脱掉,在拖进IDA就行了
int __cdecl main(int argc, const char **argv, const char **envp)
{
__int64 v3; // rax@1
puts(4810328LL, argv, envp);
LODWORD(v3) = malloc(100LL);
sub_400320(v3, flag);
return 0;
}
主要代码还是sub_400320这个函数里,分配内存了,可能有溢出,习惯的看了一个参数flag
.data:00000000006C2070 public flag
.data:00000000006C2070 flag dq offset aUpx___?SoundsL ; DATA XREF: main+20r
.data:00000000006C2070 ; "UPX...? sounds like a delivery service "...
.data:00000000006C2078 align 20h
哇,根据之前的经验,这个和flag很像的,提交一下,正确
0x01 总结
积累的经验有时,也是很重要的