정보보안/FTZ
[FTZ]level18
b1ackhand
2022. 7. 31. 20:41
문제 힌트를 보면 다음과 같이 긴 코드가 보인다.
조건을 보면 check 안에 0xdeadbeaf가 있을때 shellcode를 실행해 준다.
그렇게 하기 위해서 입력받은 값에 따라
switch문이 동작하는 것을 볼 수 있다.
취약점은
string[count] = x 부분에서 생긴다
count가 만약 음수라면 자신보다 뒤에있는 변수에 접근 가능하기 때문이다.
disas한 부분을 보면
deadbeef와 비교하는 부분은 ebp - 104
string 부분은 ebp - 100 이다.
만일 입력받은 명령어가 0x08 이라면 count-- 되는 점을 이용해서
string[-1], string[-2] 등에 접근할 수 있다. 그리고 이는 check 부분에 해당한다.