使用ssh fd@pwnable.kr -p2222连接
输入密码guest

 1 fd@prowl:~$ ls -al
2 total 40
3 drwxr-x--- 5 root fd 4096 Oct 26 2016 .
4 drwxr-xr-x 114 root root 4096 May 19 15:59 ..
5 d--------- 2 root root 4096 Jun 12 2014 .bash_history
6 -r-sr-x--- 1 fd_pwn fd 7322 Jun 11 2014 fd
7 -rw-r--r-- 1 root root 418 Jun 11 2014 fd.c
8 -r--r----- 1 fd_pwn root 50 Jun 11 2014 flag
9 -rw------- 1 root root 128 Oct 26 2016 .gdb_history
10 dr-xr-xr-x 2 root root 4096 Dec 19 2016 .irssi
11 drwxr-xr-x 2 root root 4096 Oct 23 2016 .pwntools-cache
12 fd@prowl:~$ cat fd.c
13 #include <stdio.h>
14 #include <stdlib.h>
15 #include <string.h>
16 char buf[32];
17 int main(int argc, char* argv[], char* envp[]){
18 if(argc<2){
19 printf("pass argv[1] a number\n");
20 return 0;
21 }
22 int fd = atoi( argv[1] ) - 0x1234;
23 int len = 0;
24 len = read(fd, buf, 32);
25 if(!strcmp("LETMEWIN\n", buf)){
26 printf("good job :)\n");
27 system("/bin/cat flag");
28 exit(0);
29 }
30 printf("learn about Linux file IO\n");
31 return 0;
32
33 }
34
35 fd@prowl:~$ ./fd 4660
36 LETMEWIN
37 good job :)
38 mommy! I think I know what a file descriptor is!!
39 fd@prowl:~$

关注read()函数

函数定义:ssize_t read(int fd, void * buf, size_t count);

函数说明:read()会把参数fd所指的文件传送count 个字节到buf 指针所指的内存中。

返回值:返回值为实际读取到的字节数, 如果返回0, 表示已到达文件尾或是无可读取的数据。若参数count 为0, 则read()不会有作用并返回0。

fd == 0为标准输入 
fd == 1为标准输出 
fd == 2为标准错误输出

所以先构造fd==0,即使argv[1] 等于 0x1234(4660)

然后输入LETMEWIN

得到flag:

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

pwnable.kr 第一题fd的更多相关文章

  1. pwnable.kr 第一天

    1.FD 直接通过ssh连接上去,然后,看下源代码. #include <stdio.h> #include <stdlib.h> #include <string.h& ...

  2. pwnable.kr第二题collision

    1 col@prowl:~$ ls -al 2 total 36 3 drwxr-x--- 5 root col 4096 Oct 23 2016 . 4 drwxr-xr-x 114 root ro ...

  3. 【pwnable.kr】 unlink

    pwnable.kr 第一阶段的最后一题! 这道题目就是堆溢出的经典利用题目,不过是把堆块的分配与释放操作用C++重新写了一遍,可参考<C和C++安全编码一书>//不是广告 #includ ...

  4. 黑客练手入门| pwnable.kr—幼儿瓶—01:fd

    目录 前言 pwnable.kr介绍 该怎么玩 幼儿瓶第一道题:fd 0x00 问题描述 0x01 源码分析 0x02 解题方法 0x03 知识点总结 前言 担心有人不知道pwnable.kr是什么, ...

  5. pwnable.kr之fd

    题目如图: 在终端输入:ssh fd@pwnable.kr -p2222 连接到远程终端,如图: 输入ls -l,查看文件: 输入whoami,查看自身用户名称: 根据题目意思我们只要打开flag文件 ...

  6. pwnable.kr第三题bof

    Running at : nc pwnable.kr 9000 IDA查看 1 unsigned int __cdecl func(int a1) 2 { 3 char s; // [esp+1Ch] ...

  7. pwnable.kr的passcode

    前段时间找到一个练习pwn的网站,pwnable.kr 这里记录其中的passcode的做题过程,给自己加深印象. 废话不多说了,看一下题目, 看到题目,就ssh连接进去,就看到三个文件如下 看了一下 ...

  8. pwnable.kr详细通关秘籍(二)

    i春秋作家:W1ngs 原文来自:pwnable.kr详细通关秘籍(二) 0x00 input 首先看一下代码: 可以看到程序总共有五步,全部都满足了才可以得到flag,那我们就一步一步来看 这道题考 ...

  9. 【pwnable.kr】fb

    这是pwnable.kr的签到题,记录pwn入门到放弃的第一篇. ssh fd@pwnable.kr -p2222 (pw:guest) 题目很简单,登录上了ssh后,发现了3个文件:fd,fd.c, ...

随机推荐

  1. apache 解析漏洞(CVE-2017-15715)

    在p牛博客最近更新的文章,传送门,感觉很有意思,自己在自己本地测试了一下 0x01 正则表达式中的 '$' apache这次解析漏洞的根本原因就是这个 $,正则表达式中,我们都知道$用来匹配字符串结尾 ...

  2. tfrecords转图片存储

    import os import shutil import tensorflow as tf import time import sys import cv2 # 图片存放位置 PATH_RES ...

  3. TypeScript & Canvas 实现可视化白板

    TypeScript & Canvas 实现可视化白板 https://excalidraw.com/ https://github.com/excalidraw/excalidraw ref ...

  4. CSS multi colors circle

    CSS multi colors circle <!DOCTYPE html> <html lang="zh-Hans"> <head> < ...

  5. 微信小程序-显示外链图片 bug

    微信小程序-显示外链图片 bug 显示外链图片 bug 403 bug 禁止外链,未授权 https://httpstatuses.com/403 image component 图片.支持 JPG. ...

  6. taro ref & wx.createSeletorQuery

    taro ref & wx.createSeletorQuery https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.cr ...

  7. svg & stroke & style & class

    svg & stroke & style & class svg selected style methods style class, !important fill, st ...

  8. input number css hidden arrow

    input number css hidden arrow show arrow OK input[type="number"]::-webkit-inner-spin-butto ...

  9. [报错集]ubuntu中安装oracle java报错

    1.因为版本更新,JAVA15以前的版本都已经没办法下载了,所以要使用oracle java必须使用最近的java15 $ sudo apt-get install oracle-java15-ins ...

  10. AForge实现拍照

    记得先引用DLL private FilterInfoCollection videoDevices; private VideoCaptureDevice videoSource; BLL.AWBL ...