pwnable.kr 第一题fd

使用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的更多相关文章
- pwnable.kr 第一天
1.FD 直接通过ssh连接上去,然后,看下源代码. #include <stdio.h> #include <stdlib.h> #include <string.h& ...
- 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 ...
- 【pwnable.kr】 unlink
pwnable.kr 第一阶段的最后一题! 这道题目就是堆溢出的经典利用题目,不过是把堆块的分配与释放操作用C++重新写了一遍,可参考<C和C++安全编码一书>//不是广告 #includ ...
- 黑客练手入门| pwnable.kr—幼儿瓶—01:fd
目录 前言 pwnable.kr介绍 该怎么玩 幼儿瓶第一道题:fd 0x00 问题描述 0x01 源码分析 0x02 解题方法 0x03 知识点总结 前言 担心有人不知道pwnable.kr是什么, ...
- pwnable.kr之fd
题目如图: 在终端输入:ssh fd@pwnable.kr -p2222 连接到远程终端,如图: 输入ls -l,查看文件: 输入whoami,查看自身用户名称: 根据题目意思我们只要打开flag文件 ...
- pwnable.kr第三题bof
Running at : nc pwnable.kr 9000 IDA查看 1 unsigned int __cdecl func(int a1) 2 { 3 char s; // [esp+1Ch] ...
- pwnable.kr的passcode
前段时间找到一个练习pwn的网站,pwnable.kr 这里记录其中的passcode的做题过程,给自己加深印象. 废话不多说了,看一下题目, 看到题目,就ssh连接进去,就看到三个文件如下 看了一下 ...
- pwnable.kr详细通关秘籍(二)
i春秋作家:W1ngs 原文来自:pwnable.kr详细通关秘籍(二) 0x00 input 首先看一下代码: 可以看到程序总共有五步,全部都满足了才可以得到flag,那我们就一步一步来看 这道题考 ...
- 【pwnable.kr】fb
这是pwnable.kr的签到题,记录pwn入门到放弃的第一篇. ssh fd@pwnable.kr -p2222 (pw:guest) 题目很简单,登录上了ssh后,发现了3个文件:fd,fd.c, ...
随机推荐
- TensorFlow+restore读取模型
# 注意和前一或二篇Lenet训练并验证的文章从`y_conv = tf.nn.softmax(fc2)`起的不同 # 部分函数请参照前后2篇文章 import tensorflow as tf im ...
- 如何使用 VuePress 搭建一个 element-ui 风格的文档网站
如何使用 VuePress 搭建一个 element-ui 风格的文档网站 { "devDependencies": { "vuepress": "1 ...
- 使用 Canvas 实现一个类似 Google 的可视化的页面错误反馈库
使用 Canvas 实现一个类似 Google 的可视化的页面错误反馈库 iframe 嵌套 iframe iframe 包含 复制的 HTML 页面 和支持可以拖拽的工具栏 鼠标经过上面,智能识别 ...
- JavaScript this All In One
JavaScript this All In One js, this, bind, call, apply, new, function, arrow function, constructor f ...
- TypeScript & WebAssembly
TypeScript & WebAssembly WASM (module (func (param $lhs i32) (param $rhs i32) (result i32) local ...
- flutter 混合开发
flutter 混合开发 https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps https://flutter.de ...
- HTML spaces types: &   &  
HTML spaces types: & & What is the difference between and https://stackoverflow.co ...
- 闲着蛋疼看下a++的过程
赋值过程 int a = 1; int b = a++; x86 反汇编: int a = 1; 00D06428 C7 45 F8 01 00 00 00 mov dword ptr [a],1 i ...
- python中yaml模块的使用
1.yaml库的导入 经过尝试,发现在python2 和python3语言环境下,安装yaml库的命令行语句不一样. python2: pip install yaml python3:pip ins ...
- 从微信小程序到鸿蒙js开发【11】——页面路由
目录: 1.router.push()&wx.navigateTo() 2.router.replace()&wx.redirectTo() 3.router.back()&w ...