Pwnable.kr의 문제입니다. 롸업을 보기 전에 문제를 풀어주세요.

 

https://pwnable.kr 

 

https://pwnable.kr

   there are flag   files corresponding to each challenges (similar to CTF), you need to read it and submit to pwnable.kr to get the corresponding point. in order to read the flag file, you need some skills regarding programming, reverse-engineering, bu

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

+ Recent posts