감자 텃밭

Simple_overflow_bof_ver_2 본문

my_study/HackCTF

Simple_overflow_bof_ver_2

g2h 2021. 5. 21. 17:51

해당문제의 프로그램을 실행시켜보자

프로그램 실행모습

데이터를 입력받고 입력받은 데이터와 해당 데이터가 들어가있는 buf의 주소를 출력 해주며,

다시 입력할것인지 묻고 다시 입력을 받을 수 있다. 하지만 프로그램을 다시 시작하면 주소가 바뀌는걸로 봐서

이번문제도 ASLR기법이 적용되어 있는 거 같다.

 

다른것들도 적용되어있는지 확인해보자.

이번 문제도 ASLR을 제외한 메모리 보호기법은 적용되어있지 않는 거 같다.

 

이번 문제도 이전 문제와 비슷한 방식으로 풀면 될 거 같다.

일단 버퍼의 주소는 나와있으니 크기를 구해보자.

61번줄에서 data :를 입력받고 ebp-0x88위치의 주소를 eax에 넣고 인자값으로받아서 입력하는 거 같다

그렇다면 크기는 0x88(136)이 된다.

그렇다면 payload를 한번 작성해 보자.

공격 코드

해당 공격코드는 이전과 비슷하게 recvuntill을 이용하여 Data :까지 문자열을 받아오고 그 후 aaa(임의 의 값)을 넣어

버퍼의 주소를 확인하고 recv를 이용하여 버퍼에 주소값을 넣는다 int(r.recv(10),16) 즉 int(정수형)으로 받으며,

10바이트만큼 16진수로 받아오겠다는 것이다 그 후 Again (y/n) 까지 문자열을 받아오고 그 후 다음 실행에서 공격을 해야하기에 y를 보낸 후 payload에 쉘코드를 삽입하고 sfp까지 더미값을채운 후 ret주소에 buf의 주소를 넣었다

그 후 동일하게 Data :까지 문자열을 받아오고 페이로드를 전송시키도록 작성하였다.

이제 한번 만들어봤으니 실행을 시켜보자!! 

성~공

해당 문제도 다행히 쉘을 획득하고 flag를 획득할 수 있었다.

'my_study > HackCTF' 카테고리의 다른 글

rtl_world  (1) 2021.05.28
offset  (0) 2021.05.26
Simple_size_bof  (0) 2021.05.21
64bof_basic  (0) 2021.05.21
내 버퍼가 흘러넘친다!!  (0) 2021.05.18