ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Pwnkr] Mistake Write-up
    표튜터와 함께하는 Pwnable/Pwnable.kr Write-up 2019.04.01 23:30

    이번 문제는 Mistake 풀다보니까 풀려버린문제다;;




    우선 코드를 보도록 하자.

    파란상자는 주어진값들과 입력받은 값을 XOR연산하는 함수가 정의된 내용이고

    빨간상자는 이상하다고 느껴서 표시를 해두었다.



    첫 번째 빨간상자를 보면 open을 기준으로 양쪽에 " = " 와 " < " 가 있다.

    두 번째 빨간상자 역시 read를 기준으로 양쪽에 " = " 와 " > " 가 있다.



    흠.. 여기서 힌트를 떠올려 보게 되었다.

    operator priority ??? 연산자 우선순위?? 힌트를 통해 연산자 우선순위에

     대한 문제라고 예상할 수 있었다. 이 문제에서 중요한 것은 우선순위이다.



    " 비교연산자가 대입연산자보다 우선순위가 높다!! " 



    첫 번째 빨간상자의 if문을 보면 password파일이 저 경로에 있기 때문에

    양수값을 반환하고 양수 < 0을 진행하면 당연히 거짓이다.

    그러므로 fd에는 거짓이 들어가게되고 if문은 실행되지않을 것이다.



    다음에 나오는 if문을 보자.

    입력을 하는 부분인데 fd=0이고 pw_buf는 우리가 입력할 수 있는 공간이다.

    PW_LEN은 10으로 선언되어 있다. 이 역시 read 함수가 실행되면 반환 값으로

    입력한 바이트의 수를 반환할 것임으로 0보다 크다. 반환된 바이트 수 > 0은

    참이므로 len의 값은 참인 1이 될 것이다. 참값에 !이므로 거짓이된다.

    그러므로 두 번째 if문도 통과하게된다.



    이제 우리가 입력할 수 있는 나머지 버퍼인 pw_buf2의 값들을 1과 XOR해서

    나온 값이 이전에 입력한 pw_buf와 같으면 flag를 볼 수 있다.



    나는 pw_buf에 "cccccccccc"를 넣고 그것을 XOR연산한 

    값 "bbbbbbbbbb"을 pw_buf2에 넣어주었다.




    Password OK라는 문자열과 같이 FLAG가 튀어나왔다~



    '표튜터와 함께하는 Pwnable > Pwnable.kr Write-up' 카테고리의 다른 글

    [Pwnkr] Leg Write-up  (0) 2019.04.02
    [Pwnkr] Shellshock Write-up  (0) 2019.04.01
    [Pwnkr] Mistake Write-up  (0) 2019.04.01
    [Pwnkr] Random Write-up  (0) 2019.04.01
    [Pwnkr] Passcode Write-up  (0) 2019.03.31
    [Pwnkr] Horcruxes -> Write-up  (0) 2019.03.29

    댓글 0

Designed by Tistory.