pwnable-1-fd

pwn的学习周期确实比较长,需要的前置内容也很多,了解到第一题还算比较简单的,那就先来体验一波~顺带附一波网站链接:网站链接

题目

pwnable-1-fd_第1张图片

WP

最后一行给出了ssh链接方式,那就先连接一波
pwnable-1-fd_第2张图片
第一次连接会有第四行的询问,yes就行
(这里windows和linux都可以)

当然按一般思路,进来了就先看看有什么文件吧
在这里插入图片描述
flag应该就是目标文件,还有两个fd

在这里插入图片描述
这么看的话大概要运行fd,来操作输出咱们的flag
那就先输出一下fd.c看看她里面干了啥吧

pwnable-1-fd_第3张图片
这里看到要传入一个int,而这个int决定了后期fd的取值,那就看看后面这个fd要做些什么

  1. 首先确定我们的目标是要执行system
  2. strcmp(“LETMEWIN\n”, buf)==0
  3. buf=“LETMEWIN\n”
  4. 找上面为buf赋值的函数,则可确定read(fd, buf, 32)将buf设为“LETMEWIN\n”
  5. 这就涉及C语言read函数的调用
    这是read函数的定义
    ssize_t read(int fd, void * buf, size_t count);
    
    fd == 0为标准输入
    fd == 1为标准输出
    fd == 2为标准错误输出
    所以这里就可以让fd=0,那么输入的数据就是0x1234,int型就是4660

然后就可以执行代码啦!
在这里插入图片描述
传入4660,然后下一步她没有输出,是让你输入不要在那等他应答!(看代码!)
然后flag就出来啦!提交一波~
在这里插入图片描述

结论

C在pwn里真的很重要,要去捡好几年不用的C了啊啊啊

你可能感兴趣的:(pwn,pwn,安全)