Jeomxon's Tech Note

팀<PWN2FUN>_1회차 본문

ARGOS/TEAM

팀<PWN2FUN>_1회차

저문(jeomxon) 2019. 10. 1. 22:40

팀 활동은 우선 notion이라는 프로그램을 이용하여 진행하기로 하였다.

( www.notion.so <-- 자세한 내용은 사이트 참고 )

 

먼저 내 노트북에 깔려있던 ubuntu 18.04 LTS를 통하여 HITCON_TRAINING을 설치하고 gdb peda를 통해 run을 시켜봤지만

이런 에러코드를 표출하며 실패하였다.

(설명이 부족하지만 윈도우 환경에서 실행하려고 하니 안 되는 것 같다. 컴파일을 m32옵션을 주지 않고 하니 run이 되긴 하였지만 리눅스 환경에서 하니깐 실행이 바로 가능했다.)

 

따라서 다시 노트북에 깔려있던 vmware의 ubuntu 14.04 LTS로 접속을 해서 어셈 분석을 시작했다.

이 화면은 뭔가 기분 좋아지는 화면^_^

이후 터미널에 들어가서 먼저 git을 설치하고, 

git clone https://github.com/scwuaptx/HITCON-Training.git

이렇게 입력해주면 자동으로 설치가 완료된다.

 

 

터미널에서 HITCON-Training파일로 이동하고 LAB으로 이동하면 1~15까지의 lab이 나오게 되는데

이번에는 첫번째 lab1을 해결해보려고 한다.

 

sysmagic.c

lab1에 있는 sysmagic.c라는 코드를 보면 위와 같다. 뭔가 if의 조건문을 건드리면 될 것 같이 생긴 코드다.

그래서 gdb peda를 통해 어셈블리 언어로 보았다.

 

gdb를 통해 get_flag함수를 먼저 보았다.

사실 cmp문이 두 개가 있었는데 scanf 함수가 호출된 것을 보면서 코드랑 비교한 후 if문의 조건문이 +389에 있다는 걸 판단할 수 있었다.

일단 그래서 저기에 브레이크를 걸고 실행시켜보기로 했다.

브레이크 포인트가 정상적으로 걸렸음을 가운데 왼쪽의 초록색 화살표를 통해 알 수 있다.

그리고 edx와 eax를 비교해서 같아야 if문의 조건이 참이 되어 그 안의 내용이 실행이 되므로 

edx의 값을 eax와 같게 해주면 되지 않을까 하는 생각에 set을 사용하여 edx의 값을 eax의 값과 같게 설정해보았다.

그리고 c를 통해 continue를 시켜보니 debugger_1s_so_p0werful_1n_dyn4m1c_4n4lySis!라는 문구와 함께 해결됨을 볼 수 있었다.