-
Dreamhack - rev-basic-3wargame/Dreamhack 2024. 7. 17. 18:49
[LEVEL 1 - rev-basic-3 - reversing]
이전 문제와 비슷하게 사용자의 입력값을 검증해서 맞으면 correct를, 틀리면 wrong을 출력하는 프로그램이 주어진다.
IDA로 main() 디컴파일해서 함수 들어가보면 위와 같이 vfprintf 함수가 쓰인 걸 볼 수 있다.
그리고 또 다른 함수에서는 _acrt_iob_func()가 0번 스트림(stdin 파일 스트림)을 가져오는 걸 알 수 있다.
그리고 이 입력받은 a1을 처리하는 함수에 들어가보면 xor 연산을 하고 있는 부분을 볼 수 있다.
byte_140003000을 들어가면 위와 같이 나온다. 이걸 이용해서 역연산하여 사용자 입력값이 무엇이어야 하는지 알아낼 수 있다.
main()에 있는 함수명을 위처럼 알아보기 쉽게 변경했다.
위와 같이 배열에 넣고 아까 본 a1을 구하기 위해 역연산하는 C언어 코드를 짜면 된다.
코드를 돌리면 바로 답이 나와서 chall3.exe를 실행하고 해당값을 입력하면 Correct가 뜬다.
플래그를 획득했다!
'wargame > Dreamhack' 카테고리의 다른 글
Dreamhack - simple-operation (0) 2024.07.17 Dreamhack - rev-basic-4 (0) 2024.07.17 Dreamhack - pathtraversal (0) 2024.05.28 Dreamhack - rev-basic-2 (0) 2024.05.27 Dreamhack - rev-basic-1 (0) 2024.05.21