일단 1점짜리 문제다... 그리고 랜덤값을 프로그램에 넣는 방법을 알려달라(?)고 한다.
바로 ssh로 접속
디렉토리 내용은 역시나 소스코드, 프로그램, 플래그 3개
바로 소스코드를 보고 해석해보자
random변수에 난수를 넣고. key변수에 값을 입력받는다.
그리고 key와 random 값을 XOR해서 0xdeadbeef 값이 나오게 해서 flag값을 얻어야한다.
그전에 이 프로그램은 rand함수에 취약점이 있다는 것을 바로 눈치채야한다.
왜냐하면 저렇게 하면 매번 같은값이 생성되기 때문이다 진짜 랜덤값을 얻고자 한다면 srand(time(NULL))을 써야한다.
그러면 답이 나왔다. random변수의 값을 찾으면 되겠다.
그 다음에 0xdeadbeef값과 XOR시키면 페이로드로 넣을 값을 구할것이다.
바로 공격을 해보자
random변수의 위치를 찾기위해 main+18번 라인에 BP를 걸어준다. 이유는 rand함수를 거친뒤의 random변수를 가리키기 때문이다.
BP를 걸고 디버그작업을 시작한다.
그리고 나서 여기서는 rax에 값을 봐주자.
저곳이 rand함수를 거친 random변수의 값이다.
이제 XOR시켜주자
그러면 10진수로 3039230856이 나오고,
키 값 나옴
'Pwnable > Pwnable.kr' 카테고리의 다른 글
Pwnable.kr input 풀이(보류) (0) | 2016.09.24 |
---|---|
Pwnable.kr passcode 풀이 (0) | 2016.09.23 |
Pwnable.kr flag 풀이 (0) | 2016.09.22 |
Pwnable.kr bof 풀이 (0) | 2016.09.22 |
Pwnable.kr collision 풀이 (0) | 2016.09.12 |