write-up/pwnable
[pwnable.kr] mistake
☆ 연산자 우선순위 주의!
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 |
댓글