HackCTF Yes or No
-
Yes or noCTF/HackCTF 2021. 1. 21. 20:02
Disassembly 디스어셈블리 main() 함수의 초반부에서는 fgets(&str, 10, stdin)과 var_8h = atoi(&str)이 호출된다. 그 후에 eax에 각종 연산을 가하더니 eax==var_8h라면 gets(&str)을 호출하고, 그렇지 않다면 일부 출력문을 거친 후 함수가 종료된다. 따라서 var_8h가 eax와 같은 값을 가지도록 입력을 구성해야 gets()에서 발생하는 스택 버퍼 오버플로우를 활용할 수 있다. Condition eax==var_8h 어셈블리를 살펴보면 eax에 가해지는 연산이 외부 입력에 상관없이 항상 일정하다는 것을 알 수 있다. gdb를 통해 cmp 명령어 직전의 eax 값을 구하자. eax은 0x960000, 십진수로 변환하면 9830400이다. var_..