Wargame narnia level 3 (中文攻略)

ssh [email protected]

密码:OOXX(上一关拿到的密码)

cat narnia3.c


#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char **argv){

int ifd, ofd;
char ofile[16] = "/dev/null";
char ifile[32];
char buf[32];

if(argc != 2){
printf("usage, %s file, will send contents of file 2 /dev/null\n",argv[0]);
exit(-1);
}

/* open files */
strcpy(ifile, argv[1]);
if((ofd = open(ofile,O_RDWR)) < 0 ){
printf("error opening %s\n", ofile);
exit(-1);
}
if((ifd = open(ifile, O_RDONLY)) < 0 ){
printf("error opening %s\n", ifile);
exit(-1);
}

/* copy from file1 to file2 */
read(ifd, buf, sizeof(buf)-1);
write(ofd,buf, sizeof(buf)-1);
printf("copied contents of %s to a safer place... (%s)\n",ifile,ofile);

/* close ‘em */
close(ifd);
close(ofd);

exit(1);
}

感觉比较有意思的一个利用。

在服务器上用GDB调试一下,注意到中间的这一段,字符串 ifile和ofile 是在一起的.

随便输入一个字符串测试一下,这里输了32个a

ifile 和 ofile 挨在一起, 然后strcpy 又没有对长度进行一个检查,

然后……

我们可以构造一个东西把密码给读出来.(这个思路是参考了其他人的攻略,非原创= =)

下面就来构造 ( 需要2个东西,一个文档,一个软链接)

一个tmp下的文档

一个32个字节的目录  /tmp/  5个字节 + 27个 u

这个目录下面还要有个 tmp目录, 以及一个软连接

为什么要这样来构造呢?

程序中strcpy ()  
让我们可以覆盖文件名,      ofile 这个字符串  指向   ifile
后33个字节,   这里我们可以覆盖,然后的字符串结束符被覆盖了,读取的是链接的文件 (通关密码) ,  
然后程序把密码输出至ofile, (即tmp 下的文档),这样我们就拿到了密码。

感觉比较神奇……

时间: 2024-10-19 16:06:31

Wargame narnia level 3 (中文攻略)的相关文章

Wargame narnia level 4 (中文攻略)

ssh [email protected] 然后输入密码: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] !=

Wargame narnia level 2 (中文攻略)

前面省略连接部分-- cat narnia2.c #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, char * argv[]){ char buf[128]; if(argc == 1){ printf("Usage: %s argument\n", argv[0]); exit(1); } strcpy(buf,argv[1]); print

Wargame narnia level 0 (中文攻略)

想写这个主要是因为我去谷歌搜到的攻略都是英文,看着有点吃力(菜B英语不好) , 然后就是分享交流技术. 比较有意思的一个闯关游戏(适合新手) 网站是:http://overthewire.org/wargames/narnia/ 游戏主要涉及基础的漏洞利用(环境是LINUX下的) 下面就开始吧, LINUX系统中 用SSH命令   登陆远程服务器 第0关的账号和密码都是narnia0 登陆后,需要我们利用的漏洞程序在 narnia这个文件夹里 服务器里把文件权限卡得很死,如果没有权限是不能执行一

Wargame narnia level 1 (中文攻略)

拿着我们的第0关得到的密码XXXX进入第1关 ssh [email protected] cat narnia1.c #include <stdio.h> int main(){ int (*ret)(); if(getenv("EGG")==NULL){ printf("Give me something to execute at the env-variable EGG\n"); exit(1); } printf("Trying to

弹丸论破2 中文攻略

最近在推这个游戏,于是转一篇自己看着比较顺眼的攻略= = -------------------------------------------------------------------------- 转载请注明作者和出处 [email protected]洛天之痕 写在前面: 虽然弹丸2感觉还是自己打通的比较有成就感啦,但苦逼的撸主在打完一周目后发现还有那么多CG和隐藏熊币没拿确实很蛋疼(残缺的男人无幸福啊,我的福利),所以为了广大同胞们第一次玩的幸福点(撸主第一个反论钻研了半个多小时.

cafebabe.cc/navo 我也来写写攻略

=如果还没有点进去过cafebabe.cc/nazo/ 过的话,可以先点进去尝试一下闯关哦~= 目前没有搜到比较全的攻略,相对完整的就是来自知乎(http://www.zhihu.com/question/31231641)上张博韬大神的解答啦.不过他点到为止,有时还是有点捉摸不透.我想把他的答案写得再具体一点.这就是我这篇攻略的重点了.... 不过还是推荐大家自己先尝试闯关,攻略都是折叠起来的,实在想不通了再打开吧.恩,不多说了,点开链接进去吧! level1:点击“此处”链接就好了,没什么好

[091127]Dark Blue幽深之蓝【汉化硬盘版】[带全CG存档&amp;攻略+日文原版文件]

lightpic [发售信息] ブランド:LiLiM DARKNESS 価格:\9,240  発売日:2009/11/27  メディア:DVD-ROM JANコード:4514631000712 ジャンル:ADV  サブジャンル:アダルトアニメ化.アドベンチャー  カテゴリ:馆.猟奇.过激.寝取られ  原画:水月悠.たぢまよしかづ.鹤崎贵大  シナリオ:和泉万夜  アーティスト:ひうらまさこ [我现在就来救你] 我好像在抹杀周围的寂静般地粗暴地转动着门把手. --打不开. 用双手握住把手,用尽浑身

Python中文全攻略

Python中文全攻略[转] 这几天一直纠结月python的中文编码问题,发现一篇不错的文章,转过来留个念想. 原文链接:http://blog.csdn.net/mayflowers/archive/2007/04/18/1568852.aspx 1.        在Python中使用中文 在Python中有两种默认的字符串:str和unicode.在Python中一定要注意区分“Unicode字符串”和“unicode对象”的区别.后面所有的“unicode字符串”指的都是python里的

httpd2.2/2.4全攻略

httpd-2.2/2.4配置用法全攻略  本文介绍以下四部分内容,且看下文.  一.简介 The Apache HTTP Server is a powerful, efficient, and extensible web server. from  http://httpd.apache.org/ httpd is the Apache HyperText Transfer Protocol (HTTP) server program. It is designed to be run a