pwn的学习周期确实比较长,需要的前置内容也很多,了解到第一题还算比较简单的,那就先来体验一波~顺带附一波网站链接:👉网站链接
题目
WP
最后一行给出了ssh链接方式,那就先连接一波
第一次连接会有第四行的询问,yes就行
(这里windows和linux都可以)
当然按一般思路,进来了就先看看有什么文件吧
flag应该就是目标文件,还有两个fd
这么看的话大概要运行fd,来操作输出咱们的flag
那就先输出一下fd.c看看她里面干了啥吧
这里看到要传入一个int,而这个int决定了后期fd的取值,那就看看后面这个fd要做些什么
- 首先确定我们的目标是要执行system
- strcmp(“LETMEWIN\n”, buf)==0
- buf=“LETMEWIN\n”
- 找上面为buf赋值的函数,则可确定read(fd, buf, 32)将buf设为“LETMEWIN\n”
- 这就涉及C语言read函数的调用
这是read函数的定义
fd == 0为标准输入ssize_t read(int fd, void * buf, size_t count);
fd == 1为标准输出
fd == 2为标准错误输出
所以这里就可以让fd=0,那么输入的数据就是0x1234,int型就是4660
然后就可以执行代码啦!
传入4660,然后下一步她没有输出,是让你输入不要在那等他应答!(看代码!)
然后flag就出来啦!提交一波~
结论
C在pwn里真的很重要,要去捡好几年不用的C了啊啊啊