binary를 다운받고 우분투에 옮긴후 checksec를 통해서 보호기법을 확인해보았어요.
Nx bit만 켜져있네요.
NX bit는읽고 쓰는 권한 외에 실행 권한에 대해서 체크하여 메모리 공격으로부터 시스템을 보호하는 방법.
nx는 rop기법을 이용해서 많이 우회합니다.
그리고 ida를 통해서 분석을 해보았다. main 부분을 보니 read를 통한 bof취약점을 발견할 수 있었는데요
이제 정보는 다 얻었으니 system("/bin/sh")를 만들기 위해서
총6개의 인자를 찾아야 하기 때문에 찾아봅시다.
1. read_plt의 주소값은 0x0804832
2. read_got의 주소값은 0x0804961c
3. write의 주소값은 0x0804830c
4. bss의 주소값은 0x08049628
5. pppr가젯의 주소갑 0x080484b6
pppr가젯을 구하는 이유는 인자들의 값을 빼주고 입력해야 하기 때문에 사용합니다.
6. read_plt - system의 값 0x9AD60
이 값을 구하는 이유는 보호기법이 적용되어 있어 system의 위치가 바뀌기 때문에 offset의 값을 구해야합니다.
이제 위에 정보들을 통해서 exploit을 작성해봅시다.
그리고 이제 이 코드를 실행시켜주면
exploit을 성공시킬수 있습니다.