pwnable.kr-fd

题目描述:

Mommy! what is a file descriptor in Linux?

ssh [email protected] -p2222 (pw:guest)

连上后查看下信息:

fd@ubuntu:~$ ls -al

total 36

drwxr-x—  4 root fd   4096 Jul  1 02:36 .

dr-xr-xr-x 66 root root 4096 Jul  1 02:14 ..

d———  2 root root 4096 Jun 12  2014 .bash_history

-r-sr-x—  1 fd2  fd   7322 Jun 11  2014 fd

-rw-r–r–  1 root root  418 Jun 11  2014 fd.c

-r–r—–  1 fd2  root   50 Jun 11  2014 flag

-rw——-  1 root root   80 May 29 09:13 .gdb_history

dr-xr-xr-x  2 root root 4096 Aug 20  2014 .irssi

fd.c的代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char buf[32];
int main(int argc, char* argv[], char* envp[]){
if(argc<2){
printf("pass argv[1] a number\n");
return 0;
}
int fd = atoi( argv[1] ) - 0x1234;
int len = 0;
len = read(fd, buf, 32);
if(!strcmp("LETMEWIN\n", buf)){
printf("good job :)\n");
system("/bin/cat flag");
exit(0);
}
printf("learn about Linux file IO\n");
return 0;

}

我们需要执行到system(“/bin/cat flag”);

需要满足strcmp(“LETMEWIN\n”, buf) == 0

buf = “LETMEWIN\n”

通过read(fd, buf, 32)将buf设为”LETMEWIN\n”

看一下read()函数的参数:

fd == 0为标准输入

fd == 1为标准输出

fd == 2为标准错误输出

所以这里我们只要使fd == 0,然后就可以通过终端输入LETMEWIN后回车

要使fd == 0,

则:输入的参数 == 0x1234,即4660

所以操作如下:

fd@ubuntu:~$ ./fd 4660

LETMEWIN

good job 🙂

mommy! I think I know what a file descriptor is!!

所以最终的flag为:mommy! I think I know what a file descriptor is!!

最近的文章

汽车销售行业中的“潜规则”

最近家里买了辆新车,自己从头到尾经历了选车,买车,购买汽车配件等一系列工作,深深感觉到汽车销售行业水太深,这里写篇文章简单记录一下,这里说的都是新车的销售,二手车销售水就更深了,我只是把我作为一个消费者了解到的写出来,不了解的就不敢瞎BB了。首先是选车,其实选车还是比较简单的,当你有了一定预算之后,在你的预算范围之内选择你喜欢的品牌、车型、配置就可以了。现在网络比较发达,大家通常会在网上查询车子的底价,有的时候会查到一些网站上提供一些高的折扣,往往能比当地的4s店便宜甚至上万元,但是这些价...…

4s 4S店 汽车 汽车销售 潜规则 购车继续阅读
更早的文章

OD常用快捷键

Ctrl+F2 – 重启程序,即重新启动被调试程序。如果当前没有调试的程序,OllyDbg会运行历史列表[historylist]中的第一个程序。程序重启后,将会删除所有内存断点和硬件断点。译者注:从实际使用效果看,硬件断点在程序重启后并没有移除。Alt+F2 – 关闭,即关闭被调试程序。如果程序仍在运行,会弹出一个提示信息,询问您是否要关闭程序。 F3 – 弹出“打开32位.EXE文件”对话框[Open 32-bit .EXE file],您可以选择可执行文件,并可以输入运行参数。 Al...…

OD ollydbg 快捷键继续阅读