본문 바로가기

Security/Pwnable

[Pwnable] dreamhack Basic_BOF #2 문제 풀이

IDA 를 이용해 열면 위와 같은 그림이 나오고 이를 F5 키를 사용해 코드 형태로 바꿔주면

다음과 같은 main 부분이 나온다. S 라는 문자형 데이터가 존재하고 v5 라는 포인터와 fgets 를 이용해 133byte 까지 받도록 하는 것이 가장 눈에 띈다.

 

그리고 이 코드 내에 존재하는 함수들을 다 살펴 보았는데

Shell 함수가 눈에 띄었다 이 함수를 이용해 권한을 획득하면 되겠다고 감을 잡았고 shell 함수를 어셈블리어로 보았을 때

시작 주소가 804849B 라는 것을 확인 할 수 있었다

 

그 후 스택 구조를 살펴 보았는데 위와 같이 s 와 var_c(v5)의 거리 차가 128byte 라는 것을 이용해 128byte 만큼 아무 문자를 집어 넣고 shell 함수를 실행하면 되겠다는 생각을 가졌다. 이후 파이썬으로 간단한 코드를 만들었다

“a”를 128 번 실행 후 shell 코드의 시작 주소 값을 이용해 shell 을 실행시킨다

유후~~