이번에 풀어볼 문제는 Hackctf의 1996 문제이다 이번 문제는 생각보다? 단순했다
일단 해당 프로그램을 실행시켜 보았다.
특정 문자열이 출력되고 입력을 받을 수 있도록 되어있다.. 흠 일단 어떠한
메모리 보호 기법이 적용되어있는지도 확인해 보았다.
이번 프로그램에도 NX가 걸려있었다 그럼 쉘코드는 실행이 되지 않는 것이다.
IDA를 통해 좀 더 상세히 분석을 해보았다.
이번 프로그램도 C++로 작성되어있었다 C++에 무지한 나에게는 정말 당황스러운 코드였다
하지만 침착히 살펴보았다
name변수에 1040만큼의 공간이 할당되었고 name에 특정 값을 입력하는 거 같았다 (추측)
그럼 일단 bof가 일어난다는 것이고 쉘 코드는 실행이 되지 않는다면 해당 프로그램에 힌트가 될만한 함수가 있는지 확인해보았다
역시.. /bin/bash 쉘을 실행시켜주는 함수가 존재하였다 이를 통해 1040+8+spawn_shell함수를 넣으면 쉘이 따지는 단순한 문제였다!! 이때까지도 의심을 했다 이렇게 단순하다고?? 해당 코드는 아래와 같이 작성하였다.
그 후 실행시켰더니
성공적으로 쉘을 획득하였다
c++이라 당황했지만 침착하게 추측하면서 풀었더니 매우 단순한 문제였다.
'WriteUP' 카테고리의 다른 글
[프로토스타] protostar - heap0 (0) | 2021.08.10 |
---|---|
[HackCTF] random (0) | 2021.08.09 |
[HackCTF] Poet (0) | 2021.08.09 |
g++ pwn (0) | 2021.07.23 |
basic_exploitation_001 (0) | 2021.07.22 |