BOF exploit 공격 코드 분석하기
파일을 확인하면
취약점을 공격하는 exploit 공격 코드 인것을 알 수 있습니다
코드를 한줄씩 해석해 보자면
from pwn import *
pwntools를 import 시키는 명령어로 이후에 pwntools에 속해있는 기능을 사용할 수 있는 코드가 먼저 작성됩니다.
#context.log_level='debug'
exploit에 문제를 해결할 때 설정하는 pwntools 기능으로 사용하는 코드입니다.
p = process('./bof1')
process( )는 대상 바이너리의 이름을 지정하는 것으로 프로세스와 통신하게 하는데
‘p =’로 개체를 생성하여 p개체가 bof1프로세스를 실행하게 코드로 볼 수 있습니다.
payload = b'A' * 120
payload += p64(0x4011fe)
이 두 코드는 더미를 넣는 코드로 이를 자세히 이해하기 위해서는 bof1 코드를 보면 더 쉽게 이해가 가능한데
bof1 코드는 char 타입의 100개의 배열이므로 ‘A’ char타입 더미를 넣어 버퍼오버플로우를 일으켜 win함수에 system 쉘 실행을 가능하게 합니다. 이를 위해 더미를 넣는 코드 삽입한 것입니다.
p.sendlineafter('What\\'s your name? : ',payload)
sendlineafter는 앞에는 받을값, 뒤에 오는 값은 전송할 데이터를 합친 기능인데
bof1코드와 비교를 하면서 보면 whats your name? : 이후에 read값을 받으므로 이때 exploit코드에서 what\\s your name? : 을 받는 다면 더미를 넣은 payload를 받게해 BOF를 일으킵니다.
p.interactive( )
interactive( )는 공격을 발생시킨 후 서버에 띄운 쉘과 상호작용을 하는 코드로 이후 공격자가 원하는대로 실행할 수 있게 해주는 포너블에서 항상 마지막에 작성하는 코드입니다.
이렇게 exploit 공격코드가 실행되면 win함수에 print가 실행되고 이후에 쉘실행이 가능해져 id나 ls등으로 정보의 탈취가 가능해집니다.
소스코드
참고 문서
'Reference > Pwnable_Study' 카테고리의 다른 글
NOP Sled(NOP Slide) (0) | 2022.09.30 |
---|---|
Mprotect - ROP (0) | 2022.09.30 |
FSB(포맷 스트링 버그) fsb2예제 (0) | 2022.07.11 |
32bit와 64bit의 함수 인자전달 방식(FSB) (0) | 2022.07.10 |
BOF2 연습문제 (0) | 2022.07.01 |