ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Pwnable.kr mistake 풀이
    Wargame/Pwnable.kr 2019. 8. 11. 17:05

    mistake 풀이입니다.

    이번에는 코드가 간결해 보이네요 힌트인 operation priority를 참고해서 main함수의 첫번째 if문을 봅시다

    음 보니까 왜 힌트가 연산자 우선순위인지 알듯하네요 대충 보면 open("/home/mistake/password",)_RDONLY,0400)의 ㅣ반환값을 fd에 넣은 뒤 이를 0과 비교하는 거 같지만 산술 연산자(=)는 비교 연산자(<)보다 우선순위가 낮습니다

    고로 open("/home/mistake/password",O_RDONLY,0400) < 0 이 과정을 거친 반환값이 fd에 대입된다는 뜻입니다

     

    저 과정은 잘 실행되므로 양수를 반환한다(파일이 잘 열림). 1 < 0은 false이므로 fd = 0이 들어감

     

    두번째 if문을 보겠습니다. if(!(len = read(fd, pw_buf, PW_LEN) > 0)) 에서 read함수는 첫번째 인자값으로 fd를 읽는데, 이 때 우리는 fd가 0임을 알고 있고 read함수에서 fd=0 -> stdin이네요. 입력값은 pw_buf에 들어가므로 pw_buf은 우리 맘대로 정할 수 있습니다.

     

    아 그 다음부분 보니까 pw_buf2도 우리 맘대로 할 수 있군요

     

    마지막에는 xor을 썼죠? xor은 둘중 하나가 참일때 true를 반환하니까 하나나는 0으로 10글자를, 하나는 1로 10글자 넣어보겠습니다.

    음 그러면 짜잔하고 플래그가 간단히 나오는군요

     

    2019,8,11

    'Wargame > Pwnable.kr' 카테고리의 다른 글

    Pwnable.kr Blackjack 풀이  (0) 2019.08.31
    Pwnable.kr shellshock 풀이  (0) 2019.08.14
    Pwnable.kr leg 풀이  (0) 2019.08.07
    Pwnable.kr input 풀이  (0) 2019.08.05
    Pwnable.kr random 풀이  (0) 2019.07.22
Designed by Tistory.