반응형
32bit
# read(0, read_got, 0x4)
payload += p32(read_plt) # 함수 이름 : read_plt
paylaod += p32(pppr) # 인자 개수 : pop pop pop ret
payload += p32(0) # 인자 1 : 0
payload += p32(read_got) # 인자 2 : read_got
payload += p32(0x4) # 인자 3 : 0x4
64bit
# read(0, read_got, 0x8)
paylaod += p64(pppr) # 인자 개수 : pop pop pop ret
payload += p64(0) # 인자 1 : 0
payload += p64(read_got) # 인자 2 : read_got
payload += p64(0x8) # 인자 3 : 0x8
payload += p64(read_plt) # 함수 이름 : read_plt
read 함수의 경우 rdi, rsi, rdx 필요
- 하지만, rdi, rsi 만 세팅 해줘도 된다. (rdx의 경우에는 주로 함수가 끝나면 큰 값으로 세팅 되어있다.)
- 정확한 rdx를 넘겨주고 싶거나 rdx값이 작을 경우에는 pop rdx가젯을 찾거나 다른 방식으로 세팅해 주어야 한다.
libc 파일 검색 : https://libc.nullbyte.cat/?q=__libc_start_main_ret%3Ae81%2C_IO_2_1_stdin_%3A5c0
libc base : 0x~000으로 끝난다.
0x~000으로 끝이 안난다. = libc 파일 또는 got의 주소를 잘못 찾은 것
반응형
'Security_ > pwnable' 카테고리의 다른 글
gdb - peda 설치방법 (1) | 2022.02.01 |
---|---|
[Pwnable] Gadget 구하기 (0) | 2022.01.29 |
gcc 메모리 보호 기법 해제 (0) | 2021.12.16 |
[Pwnable] pwnable 문서 모음 (0) | 2019.01.27 |
[Pwnable] Fake EBP 정리 (0) | 2018.11.06 |
댓글