实验室看到的一个问题
可以先思考思考为啥?学弟问的问题,明显就是没有做好交互,但为啥会一起发送呢?
我去网上找了找相关知识,
突然来了点思路,但还是不确定,不如自己去写过c程序试试呗。
源码如下:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
char* buf;
unsigned int nbytes;
puts("[+]Please inputs the length of your name");
scanf("%d",&nbytes);
puts("[+]What's u name?");
read(0,buf,nbytes);
return 0;
}
结合scanf遇到空格符会停下,我构造payload
payload = b'-1' + b'\x0a' + b'aaaaaaaaaaaaaaaaaaaa'
可以看到换行符后面的内容也读入进去了。
现在回来看看问题。猜测会不会是scanf和read的缓冲区不一样呢?
问了问chatgpt,得到了准确的答案。我也学习到了,io流和标准输入流的缓冲区不一样。
下次还是要做好交互吧!