pwntools发送eof信号
做题目遇到的两种 eof 信号需求情况:
- 发送 eof 之后,后续不需要继续输入(vnctf-White-Give-Flag)
- 发送 eof 之后,后续还需要继续输入(mtctf-blind)
eof 发送后继续输入
不用 mtctf-blind 做例子,因为利用 eof 绕过第一层之后,由于题目其他方面而无法 getshell ,用一个 demo 例子(来源)代替:
1 |
|
题目要求第一个 read 返回值为 0 ,也就是输入字符串长度为 0 ,才能到达下面的 read 栈溢出漏洞。eof 发送脚本如下:
1 | from pwn import * |
发送完 eof 之后,输入通道没有关闭,依然可以输入。
参考资料
- https://github.com/Gallopsled/pwntools/issues/985
- https://stackoverflow.com/questions/66011026/how-to-send-an-eof-to-a-process-server-in-pwntools
- https://docs.pwntools.com/en/stable/tubes.html#pwnlib.tubes.tube.tube.shutdown
eof 发送后不在输入
直接看 vnctf-White-Give-Flag 就行,输入 eof 目的是让返回值为 -1
1 | p = remote(xxxx,xx) |
参考资料
与read返回值关系
特殊情况就是让返回值等于 0 或者返回值小于 0 两种,两种情况分别对应:
- 返回值等于 0 ==> eof 发送后继续输入
- 返回值小于 0 ==> eof 发送后不在输入
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 SkYe231 Blog!