[HackCTF] Basic BOF #1 #2
Sunrin/Layer7

[HackCTF] Basic BOF #1 #2

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코드와 실행 결과이다.

작성한 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 함수의 주소이다.

 

exploit code

A를 128개 보내주어 s를 덮고 shell 함수의 주소를 보내줘서 실행될 수 있게 했다.