【pwnable.kr】fb
这是pwnable.kr的签到题,记录pwn入门到放弃的第一篇。

ssh fd@pwnable.kr -p2222 (pw:guest)
题目很简单,登录上了ssh后,发现了3个文件:fd,fd.c,flag
首先下载fd.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char buf[];
int main(int argc, char* argv[], char* envp[]){
if(argc<){
printf("pass argv[1] a number\n");
return ;
}
int fd = atoi( argv[] ) - 0x1234;
int len = ;
len = read(fd, buf, );
if(!strcmp("LETMEWIN\n", buf)){
printf("good job :)\n");
system("/bin/cat flag");
exit();
}
printf("learn about Linux file IO\n");
return ; }
题目不是网络数据包题目,登录ssh用户,直接运行即可。
题目需要一个参数,参数的目的是在第10行,用于构造fd,即第12行 read函数的fd指针。
fd是一个文件指针,在头文件中直接定义的文件指针有三个stdin、stdout、stderr。分别对应数值为0、1、2,利用这一点,可以解决这个问题。
read函数特性是如果读取的是一个固定文件,即一次性读完,如果不是则阻塞并等待输出,并且以行单位读取。
因此,构造fd = 0、1、2均能达到用户输入的值赋给buf变量的效果,类似于web ctf中常用的php://input协议。
解题时,首先将0x1234转换为10进制,——4660.
这里也是一个坑,atoi不能转换十六进制的参数变量,比如:

接下来,输入 ./fd 4661之后,程序阻塞于read()函数处

,可输入LETMEWIN

签到题就踩了坑,离放弃更进一步。
ps: 晚上游泳去。
【pwnable.kr】fb的更多相关文章
- 【pwnable.kr】 unlink
pwnable.kr 第一阶段的最后一题! 这道题目就是堆溢出的经典利用题目,不过是把堆块的分配与释放操作用C++重新写了一遍,可参考<C和C++安全编码一书>//不是广告 #includ ...
- 【pwnable.kr】 asm
一道写shellcode的题目, #include <stdio.h> #include <string.h> #include <stdlib.h> #inclu ...
- 【pwnable.kr】 [simple login]
Download : http://pwnable.kr/bin/login Running at : nc pwnable.kr 9003 先看看ida里面的逻辑. 比较重要的信息时input变量再 ...
- 【pwnable.kr】 brainfuck
pwnable.kr第二关第一题: ========================================= Download : http://pwnable.kr/bin/bfDownl ...
- 【pwnable.kr】 memcpy
pwnable的新一题,和堆分配相关. http://pwnable.kr/bin/memcpy.c ssh memcpy@pwnable.kr -p2222 (pw:guest) 我觉得主要考察的是 ...
- 【pwnable.kr】 codemap
pwnable新的一题. download: http://pwnable.kr/bin/codemap.exe ssh codemap@pwnable.kr -p2222 (pw:guest) 这道 ...
- 【pwnable.kr】 uaf
目测是比较接近pwnable的一道题.考察了uaf(use after free的内容),我觉得说白了就是指针没有初始化的问题. ssh uaf@pwnable.kr -p2222 (pw:guest ...
- 【pwnable.kr】input
这道题是一道一遍一遍满足程序需求的题. 网上其他的题解都是用了C语言或者python语言的本地调用,我想联系一下pwntools的远程调用就写了下面的脚本, 执行效果可以通过1~4的检测,到最后soc ...
- 【pwnable.kr】cmd2
这道题是上一个cmd1的升级版 ssh cmd2@pwnable.kr -p2222 (pw:mommy now I get what PATH environmentis for :)) 登录之后, ...
随机推荐
- SVN偷锁,强制解锁
1.将被锁文件SVN Check out...到本地硬盘2.点击文件右键,选择get lock 3.勾上 steal the locks 4.点击文件右键,选择 Release Lock操作即可 学无 ...
- Cookie存储在哪里
内存是临时存储,关机后信息就没了.硬盘是长久存储,不删除就一直在.内存容量决定你电脑能同时运行的程序多少,硬盘容量决定你电脑能存放多少东西. 好比内存是手,硬盘是口袋,东西可以临时放在手里,可是口袋才 ...
- Day10 - C - Blow up the city HDU - 6604
Country A and B are at war. Country A needs to organize transport teams to deliver supplies toward s ...
- 有关《查找两个List中的不同元素》的问题解答与编程实践
郑海波 2013-07-08 问题: 有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样查找两个集合中不同的元素呢? ...
- Python 开篇
一.Linux基础 - 计算机以及日后我们开发的程序防止的服务器的简单操作 二.Python开发 http://www.cnblogs.com/wupeiqi/articles/5433893.htm ...
- MySQL 加密 压缩
许多MySQL加密和压缩函数返回结果可能包含任意字节值的字符串,如果要存储这些结果,请使用VARBINARY或BLOB二进制字符串数据类型.这将避免使用非二进制字符串数据类型(CHAR, VARCHA ...
- centos查找文件\目录\内容命令
1.查找文件 find / -name 'php.ini'12.查找目录 find / -name 'path' find / -name 'path' -type d13.查找内容 find . | ...
- 三 SVN权限设置&用户&组
创建组,添加用户之后进行权限的设置:
- Java项目xml相关配置
一.web.xml //设置会话过期时间,这里单位是分钟 <session-config> <session-timeout>30</session-timeout> ...
- Jquery动画效果设置大全
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...