ipwn

[pwnable.kr] collision 본문

Write up/Pwnable.kr

[pwnable.kr] collision

ipwn 2017. 12. 28. 22:56



ssh서버에 접속해보자.



이제 서두 없이 바로바로 코드를 읽어보자.



코드의 flag를 읽는 부분을 보아하니 argv[1]의 값을 check_password함수에 집어넣어 나온 


return값과 hashcode를 비교해 같은 값이면 flag를 읽어와 출력해준다.


그리고 값이 같지 않거나, argv[1]에 20byte크기가 아닌 값을 입력할 경우에는 종료시킨다.


이제 check_password가 무슨 함수인지만 확인해보면 확실히 flag를 읽어올 수 있을 것 같다.


check_password함수를 보니 argv[1]의 값을 형변환을 해 4byte씩 5개 


즉 20byte 크기int형의 배열로 만들었다고 볼 수 있다.


그 배열의 값들을 res에 순서대로 오차없이 한 개씩 더해주는 걸 확인할 수 있고 다 더한 뒤에는 그 값을 return해준다.


이제 확실히 flag를 읽어올 수 있다.


hashcode의 값은 0x21DD09EC의 값을 갖고 있다.



5번 나눠주어 더하는 코드이니 hashcode의 값을 5로 나눈 몫, 그리고 나눈 나머지 값을 구하자.


그 뒤에 payload에는 나온 몫인 0x6c5cec8을 4번 반복해 16byte를 넣어주고 


마지막 4byte를 채워줘야할 값은 몫 + 나머지의 값이 될 것이다.


정말 flag가 읽어와지는지 실행해보자.



성공적으로 flag가 읽어와졌다.



'Write up > Pwnable.kr' 카테고리의 다른 글

[pwnable.kr] random  (0) 2018.01.01
[pwnable.kr] passcode  (0) 2018.01.01
[pwnable.kr] flag  (0) 2017.12.31
[pwnable.kr] bof  (0) 2017.12.31
[pwnable.kr] fd  (0) 2017.12.28
Comments