[C] read 함수
2019. 1. 21. 12:45
pwnable 문제에서 보통 유저로부터 데이터를 받을 때 read(0, buf, 64); 이런식으로 받는 경우가 많다.
이 경우 stdin을 통해 buf에 64바이트를 받는다는 건데;
유저가 64바이트를 꽉꽉채워서 데이터를 줄 수도 있고, 8바이트만 보내고 싶다면 정확히 8바이트만 보내줄수도 있다.
(여기서 \n포함하여보내면 \n까지 받아준다. 즉 엔터누르면 엔터까지 받아준다.)
분명히 알았던 사실인데; 쓸 때마다 헷갈려서 저번에 문제풀때도 많이 헤맸다;;
1바이트만 쓰고싶은데 그러면 어떻게할지 몰라서... \n만 보내거나 (1byte)\n식으로 해서 보냈었다;; 당연히 read가 받는 결과는
"\x10"이거나 "\x10\x61" 이런식이다.
pwntool을 이용한다면 conn.send("\x61")만 보내도 된다. 이런것도 잊고있었다니 ㅂㄷ...
'Pwnable!!' 카테고리의 다른 글
[Reverse Connect] dup2, 리버스쉘, reverse (0) | 2019.04.29 |
---|---|
[main_arena_offset] libc파일에서 main_arena 오프셋 구하기 (0) | 2019.01.27 |
Heap Overflow Chunk Size 조작 (feat. invalid next size ) (0) | 2018.10.09 |
gdb에서 __malloc_hook / __free_hook 주소 찾기 (0) | 2018.10.06 |
pwntools 사용해서 ssh 연결 (0) | 2018.07.23 |