본문 바로가기

Layer7

rop64_v2


 

코드를 보면 "Hell, World\n"를 출력하고, read 함수를 통해 입력을 받는 걸 알 수 있음

 

버퍼의 크기는 0x10이지만 read 함수로는 0x100만큼 입력 받을 수 있기 때문에 bof 터트릴 수 있다.

 


쉘을 따기 위해서는 system 함수를 호출해야 하는데, system 함수의 주소를 알 수 없으므로 system 함수의 주소를 구해야 함

 

# leak

24바이트의 문자를 채우고 실행할 함수의 인자을 먼저 적어줌

① pop rdi; ret 가젯

② write 함수 인자

③ write 함수의 주소

▶ write(1, read_got, rdx 값) : read함수의 주소 출력

 

# input "/bin/sh" → bss

system 함수의 인자인 "/bin/sh\x00"를 bss 영역에 적어주어야 함.

① pop rdi; ret; 가젯

② read 함수 인자

③ read 함수의 주소

▶ read(0, bss + 0x100, rdx의 값)

 

다시 main 함수를 호출해서 bof를 터트릴 기회를 만듦.

24바이트의 문자를 채우고 실행할 함수의 인자을 먼저 적어줌

① pop rdi; ret 가젯

② system 함수 인자

system 함수의 주소

'Layer7' 카테고리의 다른 글

DefCON#22 #2  (0) 2021.08.06
BaskinRobins31  (0) 2021.08.04
ropasaurusrex  (0) 2021.08.04
Format String Bug : frop2  (0) 2021.08.04
Dreamhack : basic_rop_x64  (0) 2021.08.03