CTF 스터디

[pwnable.kr] 9번_ mistake 풀이

dalgorithm 2021. 4. 23. 16:04
728x90

 

포너블 9번 mistake 문제를 풀어볼 것이다.

 

어떠한 실수를 저질렀다고 한다. 심각하게 생각하지 않아도 된다는 문구도 있다.

먼저 ssh로 접속을 해볼 것이다. 

 

ls를 해보니 mistake 실행파일과 코드파일, flag, password 파일이 있었다.

mistake를 실행해보니 다음과 같이 나타났다.

 

cat명령어를 통해 mistake 코드를 확인해보았다.

 

이 코드의 흐름은 다음과 같다.

사용자에게 pw_buf에 10바이트를 입력받아, 사용자가 pw_buf2에 10바이트를 입력받는다.

그리고 pw_buf2의 각 바이트에 1을 xor하고 pw_buf와 pw_buf2가 같으면 flag를 볼 수 있다.

 

총 10바이트의 길이인 pw_buf2에 각 바이트에 1을 xor한 값이 pw_buf의 각 바이트와 같아야하므로

pw_buf[i] == pw_buf2[i]^1

위를 만조개야 flag 값을 알 수 있다.

 

 pw_buf2 값을 받기 때문에 pw_buf, pw_buf2 두 부분다 맘대로 설정할 수 있다.

pw_buf2를 1과 xor한값과 pw_buf가 같으면 익스가 성공한다.

 

 

728x90