main에는 spell1() 함수만 덩그러니 놓여있었습니다. spell1 함수 안으로 들어오자 위와 같은 코드가 나왔습니다.
1번 문제와 비슷한 유형으로 v1 값을 scanf로 받아주지만 정작 비교해주는 것은 v2이었습니다. 그렇기 때문에 v1을 오버플로우해서 v2에 접근하고 v2값을 수정해주어야 합니다. v2값이 77('M')이 된다면 spell2() 함수를 호출해줍니다.
spell2()함수는 magic 과 pwnable! 지정된 길이 만큼 비교해 줍니다. (8uLL)
spell1까지는 31칸 오버플로우 시켜주고 아스키코드 값인 (77=M) 을 Hex로 입력해주어 "\x4D"로 입력했습니다.
하지만 함수를 실행하고 다음 명령어를 어떻게 붙이는지가 난관이었습니다.
spell2() 함수에 bof를 까 본 결과 16칸이 비어있었습니다.
다른 명령어들을 시도해 봐도 도저히 되지 않았습니다. 마지막으로 직접 입력하는 방식을 선택했습니다.
'시스템 해킹' 카테고리의 다른 글
[Whois] 시스템 해킹 - Format String Bug (0) | 2021.12.08 |
---|---|
[Whois] 시스템 해킹 - OOB(Out-Of-Bound) (0) | 2021.12.06 |
[Whois] 시스템해킹 - Integer Issues (0) | 2021.12.06 |
[Whois] 시스템해킹 - 버퍼오버플로우3 (0) | 2021.11.23 |
[Whois] 시스템해킹 - 버퍼오버플로우1 (0) | 2021.11.22 |