[HITCON TRAINING] LAB3 → WRITE UP
먼저 해당 바이너리의 보호기법을 확인해본다.
해당 바이너리는 인텔 32비트 기반의 바이너리이며
바이너리 보호기법을 확인한 결과 어떠한 형태의 보호기법도 적용되지 않은 것으로 확인된다.
바이너리의 전체적인 실행흐름 파악을 위하여 해당 바이너리를 아이다7.0을 이용하여 확인해보겠다.
해당 바이너리를 분석해본 결과 권한을 설정한 뒤 두 차례의 입력을 받는 것으로 확인된다.
핵스레이를 이용하여 의사코드를 복원해보아도 다음과 같은 형태이다.
눈에 띄는 함수는 gets()를 이용하여 두번째 문자열을 입력받는 형태의 함수이다.
gets()함수는 문자열의 길이를 확인하지 않으며 개행문자가 나올 때까지 입력받으므로 취약점이 발생할 수 있다.
이러한 점을 고려하여 EIP(실행주소)를 조작해본 결과
총 28개의 문자열과 SFP + RET 에 해당하는 문자를 입력시 정확히 RET에 해당하는 데이터를 0x43434343으로 변경한 것을 확인할 수 있다.
이를 기반으로 실제 취약점 공격을 진행해보자.
시나리오는 다음과 같다 전역변수로 선언되어 주소가 고정적인 name 변수의 데이터 공간안의 쉘코드(shellcode)를 삽입한 후
리턴 어드레스(RET)를 해당주소로 변경하는 형태의 페이로드이다.
전역변수 name의 주소값을 확인한 결과 0x0804A060으로 확인된다.
이러한 시나리오를 기반으로 pwntool을 이용하여 간단한 페이로드를 작성한다.
'PWNABLE > HITCON TRAINING' 카테고리의 다른 글
[HITCON TRAINING] LAB6 (0) | 2019.01.13 |
---|---|
[HITCON TRAINING] LAB5 (0) | 2019.01.09 |
[HITCON TRAINING] LAB4 (0) | 2019.01.08 |
[HITCON TRAINING] LAB2 미완료 (0) | 2018.08.17 |
[HITCON TRAINING] LAB1 (0) | 2018.08.17 |