Pwnable.kr의 문제입니다. 롸업을 보기 전에 문제를 풀어주세요.
이 문제는 쉽습니다..
rand함수에 대해서 조금만 공부했다면 알 수 있는 내용이거든요..ㅎ
rand 함수를 통해 random 변수에 입력하고, key를 입력받은 뒤, 이 두 변수의 xor 값이 0xdeadbeef여야 한답니다.
rand함수의 취약점? 이라고 해야하나..?
아무튼 컴퓨터에서 랜덤함수라는 것은 존재할 수 없습니다.
어떠한 값을 곱하고 나누고 나머지를 구하는 과정을 통해 랜덤'처럼' 보이는 값을 가져오는 것이죠.
rand함수는 이 과정을 할 때 가장 기본적인 녀석입니다.
랜덤'처럼'보이는 과정을 거치는 것이 기본적으로 내장되어 있지만, 프로그램을 실행할 때마다 값이 변하지 않기 때문에, 한 프로그램에서 rand 함수를 여러번 사용한다면 랜덤적인 값이 나올 수 있겠지만, 그 프로그램을 여러번 실행했을 때에는 항상 같은 값이 나오게 됩니다.
따라서 이 문제의 핵심은...
rand 함수를 사용했기 때문에 저 rand를 통해 어떤 값이 나왔는지만 알 수 있다면 문제를 풀 수 있다는 것이겠죠.
gdb로 확인을 해봅시다!
peda를 실행해주고?
main 함수에서 scanf 부분을 break 해주고, rand 함수 부분에서도 break 해주겠습니다.
rand 함수 바로 이전입니다.
이제 ni로 실행해주면?
RAX 부분에 0x6b8b4567이 보이는 것을 알 수 있습니다.
여러번 실행해도 똑같고요!
이제 저 값을 xor 연산해서 넣어주겠습니다!
3039230856을 입력해주면 되겠네요!
짜잔... 다음과 같이 나왔습니다!
끄읕!
'Hacking-기초 > [PWN] Pwnable.kr' 카테고리의 다른 글
Pwnable.kr에서 peda 사용하기 (0) | 2020.08.11 |
---|---|
[PWN] flag (7pts) (0) | 2020.08.11 |
[PWN] bof (5pts) (0) | 2020.08.11 |
[PWN] collision (3pts) (0) | 2020.08.10 |
[PWN] fd (1pts) (0) | 2020.08.10 |