Basic_BOF #1
:3 :4
s는 ebp-34h에 v5는 ebp-Ch에 있다.
s는 40자를 담을 수 있는 크기를 갖고 있다. (34-C=28)
28(16) = 40(10)
:7
fgets를 통해서 사용자로부터 45자를 입력받는다.
:12
v5가 -559038737이면 쉘을 딸 수 있다.
559038737는 0xdeadbeef이다.
s의 크기가 40byte인데 45byte까지 입력받을 수 있기 때문에
문자 40개로 s를 덮어버리고 0xdeadbeef를 보내면 될 것 같다.
다음은 작성한 exploit코드와 실행 결과이다.
Basic_BOF #2
:3
s의 크기를 바로 구해보면 128byte이다.
8C-C = 80
80(16) = 128(10)
:7
fgets로 133자를 입력받을 수 있다.
4번 문제 BOF1와 같이 bof가 발생할 것이다.
여기에는 /bin/dash를 실행하는 코드가 없다.
좌측에 shell이라는 이름은 가진 함수가 있었고 코드를 보니 /bin/dash를 실행시켜주는 역할을 했다.
s를 128byte만큼 덮어버린다음 shell()을 실행하면 쉘을 딸 수 있을 것 같다.
먼저 info func 명령을 이용해서 shell의 주소를 얻었다.
0x0804849b가 shell 함수의 주소이다.
A를 128개 보내주어 s를 덮고 shell 함수의 주소를 보내줘서 실행될 수 있게 했다.
'Sunrin > Layer7' 카테고리의 다른 글
컴퓨터의 부팅 과정과 Memory (0) | 2021.04.11 |
---|---|
[2021 Layer7 시연회] - 도연이의 은밀한 비밀 일기장 📝 (0) | 2021.02.26 |
HackCTF Sysrop (0) | 2020.11.27 |
HackCTF : Cryptography, Smooth CipherText, Classic Cipher (0) | 2020.11.06 |
컨테이너와 도커 (0) | 2020.09.16 |