nuclear_d4f699f3dbb8aadf7c224aa57f57eb4c
(※flag파일과THIS_IS_NOT_KEY_JUST_PASSCODE이라는 파일도 만들어주자... )
뉴클리어 문제를 풀어보자!
저번에 풀다가 버려놓고 다른 문제를 풀고있었는데... 생각이나서 풀어봤다.
파일을 분석해 보자
32비트 파일이고 nx가 걸려있다.
그럼 ida로 열어보자
main을 확인해 보니까 socket프로그램인 것을 알 수 있다.
1129번 포트로 연결을 하면 정상 작동을 할 것이다.
연결이 되면 sub_8048c65로 이동이 될 것이다.
sub_8048c65를 확인을 해보면 취약점이 존재를 한다.
메모리 릭이 가능하다는 것이다.
passcode가 s에 들어있다.
그런데 s1,v4그리고v5에 값을 가득채워주면 s의 값을 확인 할 수 있을 것이다.
값은 s1을 출력해주는 코드가 있으면 s까지 출력을 해 줄 것이다.
이 곳에 s1을 출력을 해주니 메모리 릭을 통해서 passcode를 볼 수 있다.
실행을 하니 위와 같이 passcode가 나오는 것을 볼 수 있다.
그럼 passcode를 찾았으니 계속해서 ida를 열어서 passcode를 입력하면 어떻게 되는지 확인을 하자.
launch를 입력을 해주고 passcode를 입력을 해주면 phtread를 통해서 sub_8048b9c로 이동을 하게된다.
sub_8048b9c안에도 pthread_create가 있는데 그곳에서 start_routine이라는 곳으로 이동을 한다.
확인을 해보니 start_routine에서 취약점이 발생을 한다.
딱봐도 버퍼오버플로우가 일어난다.
그럼 익스플로잇 코드를 짜보자.
got값을 구한 다음 system과의 offset을 통해서 system함수를 사용을 하겠다.
nc로 25555포트를 열어둔 다음 exploit코드를 실행을 해보자.
그러면 flag값이 nc를 통해서 전송이 될 것이다.
실행을 시키면 아래와 같이 flag값이 전송이 될 것이다.
'SYSTEM HACKING > 문제 풀이' 카테고리의 다른 글
2016 Codegate -Watermelon (0) | 2018.01.24 |
---|---|
2017 Codegate -babypwn (0) | 2018.01.12 |
2014 Codegate -Angry_Doraemon (0) | 2018.01.08 |
Plaid CTF 2018 - EBP (0) | 2018.01.05 |
Backdoor CTF-2015 forgot문제 (0) | 2018.01.04 |