文章目录
  1. 1. 0x00 分析
  2. 2. 0x01 总结

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 总结

积累的经验有时,也是很重要的

文章目录
  1. 1. 0x00 分析
  2. 2. 0x01 总结