본문 바로가기

Wargame/Pwnable.kr

Pwnable.kr mistake-1pt

  힌트로 준 'operator priority(연산자 우선순위)' 를 잘~ 생각하고 봐야한다. 

표시한 두 부분을 보면 실제로 코드 작성자가 원하는 행동을 하지 않는다. 

'=' 연산자보다 '>','<' 연산자의 우선 순위가 더 높기 때문이지.

  

  그래서 fd에는 0이 들어가고, read() 함수가 호출되면서 사용자 입력을 받게된다. 결국 두 조건문 전부 걍 뛰어 넘는다.





  이후 scanf()에서 pw_buf2에 10byte를 입력받고 xor() 함수로 배열 각 자리를 1이랑 xor연산한다. 앞에서 read()함수로 받은 pw_buf와 xor() 함수를 거친 pw_buf2의 각 자리가 같으면 flag를 출력한다. 익스 ㄱㄱ





  "A"는 0x41이고 0x40 ^ 1 은 0x41이다.





  flag가 나온다. sleep 걸려있어서 좀 기다려야 나옴. ㅋ

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

Pwnable.kr passcode-10pt  (0) 2017.04.15
Pwnable.kr blackjack-1pt  (0) 2017.04.15
Pwnable.kr random-1pt  (0) 2017.04.13
Pwnable.kr flag-7pt  (0) 2017.04.12
Pwnable.kr bof-5pt  (0) 2017.04.12