write-up/pwnable

[pwnable.kr] mistake

여니두 2019. 9. 29.

☆ 연산자 우선순위 주의!

if(fd=open("/home/mistake/password", O_RDONLY, 0400) < 0)

=(비교연산자)보다 <(산술연산자)가 더 우선순위가 높다.

따라서 open() 함수가 정상적으로 실행되고, 0과 비교를 하게 된다. --> FALSE

FALSE는 정수로 0이므로 fd에 0이 들어가게 된다.

 

if(!(len=read(fd, pw_buf, PW_LEN) > 0))

여기도 마찬가지이다.

fd에는 0이 들어가있다. 따라서 fd(파일 디스크립터) 값이 0이면 표준 입력이다.

>> 입력을 받을 수 있고, pw_buf 값을 우리가 정할 수 있다.

 

pw_buf2[11] 선언

pw_buf2에 password 입력받기

입력받은 값을 xor() 함수에 인자로 전달.

각각의 입력받은 문자를 10번 1과 XOR

 

입력한 pw_buf 값과 1과 XOR한 pw_buf2가 같으면 성공

 

'write-up > pwnable' 카테고리의 다른 글

[HackCTF] Basic_BOF #1  (0) 2019.10.04
[pwnable.kr] cmd1  (0) 2019.09.29
[pwnable.kr] input  (0) 2019.09.29
[pwnable.kr] random  (0) 2019.09.29
[pwnable.kr] passcode  (0) 2019.09.29

댓글