이번 문제는 제목에서부터 무작위의 냄새가 나는 것 같다.
언제나 그렇듯 kali에서 ssh연결을 해주자
ssh random@pwnable.kr -p2222 (pw:guest)
오늘도 역시 파일 3개중에 코드인 c파일을 cat으로 먼저 열어보자
뭐지.. 이번에는 문제 소스코드가 매우짧다. 쉬어가는 문제인 느낌이다.
해석을 해보면 random변수에 rand함수의 값을 넣어준 뒤 scanf로 입력을 받아서 key라는 변수에 저장한 뒤, random함수에 있는 난수값과 key의 값을 xor해준 값을 0xdeadbeef와 비교해서 같으면 flag를 실행해준다. 코드가 짧으니 해석도 짧은 것 같다, bof같은 공격을 할 수 있는 구석도 보이진 않는다.
random에 주석이 있으니까 매우 의심스럽다. rand함수를 우리가 코드를 만들어서 실행시켜 보자
rand함수의 값을 출력했는데, 시작값을 포함해서 4번째값이 2번 모두 같았다. 왜 이런걸까? 찾아보니 random함수에서 rand만 사용하면 난수가 설정이 되지 않는다고 한다.
아마도 random프로그램도 같은 수를 가지고 있을 것 같아서 저 첫번째 수를 가지고 0xdeadbeef와 xor을 해주어 값을 구해봤다.
xor을 해준 이유는 key값과 random값을 xor해주어서 0xdeadbeef가 나와야 하기 때문에 반대로 생각해서 random의 값은 알고 있으니 두개를 xor해주면 우리가 구해야할 key값이 나올 것이다.
key = 3039230856
이제 프로그램을 실행시킨후 이 값을 넣어보자
flag : Mommy, I thought libc random is unpredictable...
'Hacking > Pwnable' 카테고리의 다른 글
[ pwnable.kr ] input 문제풀이 (0) | 2019.09.04 |
---|---|
[ pwnable.kr ] passcode 문제풀이 (0) | 2019.08.30 |
[ pwnable.kr ] flag 문제풀이 (0) | 2019.08.30 |
[ pwnable.kr ] bof 문제풀이 (2) | 2019.08.28 |
[ pwnable.kr ] collision 문제 풀이 (0) | 2019.08.27 |