감자 텃밭

[pwnkr] - mistake 본문

my_study/pwn.kr

[pwnkr] - mistake

g2h 2021. 9. 1. 22:00

해당 문제와 함께 제공되는 소스코드는 아래와 같다.

해당 코드를 살펴보면 해당 코드에서의 취약점은 개발자의 연산자 우선순위 선정 실패로 일어난다

첫 번째 if문을 보면 fd=open을 통해 password파일을 읽기 전용으로 0400 권한을 준 후 < 0으로 비교하는 거 같지만

연산자의 우선순위는 =연산자보다 <연산자가 우선적으로 실행된다. 그러므로 0이 반환되어 fd에는 0(표준 입력)이 들어간다. 그 후 두 번째 if문에서 pw_buf변수에 pwn_len+1 즉 11만큼 입력을 받는다. 그 후 똑같은 크기만큼 pw_buf2에 값을 입력받고 xor함수로 xor연산을 한다 그리고 마지막 조건문에서 두 변수의 값이 같을 경우 플래그를 획득한다

즉 pw_buf2값을 전부 1로주면 1과 1을 xor 연산하기에 0이 반환되고 pw_buf변수에 0을 넣어주면 두 변수의 값이 같아지므로 플래그가 획득된다.

# xor = 반드시 1과 0이어야 1을 반환 ex) 1 1 안됨 00 안됨 1 0 됨

위와 같이 입력하면 플래그획득이 가능하다.

'my_study > pwn.kr' 카테고리의 다른 글

[pwnkr] - shellshock  (0) 2021.09.04
[pwnkr] - input문제  (0) 2021.09.01
[pwnkr] - random  (0) 2021.09.01
[pwnkr] - passcode  (0) 2021.09.01
[pwnkr] - flag  (0) 2021.09.01