<Wargame & CTF>/Pwnable.xyz

[Pwnable.xyz]add, misalignment

gosoeungduk 2019. 2. 3. 03:54
반응형

add, misalignment 둘 다 비슷한 성격의 문제라서 같이 쓴다.



add 바이너리를 IDA에 올리면 main함수에 다른 사족은 제외하고 while 문 하나를 볼 수 있다.


요약하면 숫자 3개를 받아서 첫번째와 두번째 숫자를 더하여 array의 세번째입력 숫자 값의 인덱스에 저장하고 출력하는 로직이다.



플래그를 얻어낼 수 있는 함수는 win() 함수! 주소는 0x400822  10진수 정수로는 4196386 이다.


이제 단서들을 모았으면 어떻게 main함수에 없는 win 함수를 실행할 수 있을지 고민해보자.


고민하다보니 원래크기인 array[11]을 벗어나서 [-1] , [12] , [13] , .... 까지 입력이 가능하다는 것을 발견할 수 있었다.


지역변수들을 고려하여 스택 구조를 파악하면 array[11]에 canary, array[13]에 ret가 담겨져 있음을 알 수 있다.


canary는 뭐 딱히 상관은 없고 ret에 win() 함수 주소를 덮어씌우면 되겠다..



add 는 끝...


misalignment 는 main 함수가 add 와 유사하게 되어있다.



사실 위 add를 이해했다면 설명할 내용이 별로 없다...


인덱스랑 주소갖고 조금 바꾼게 전부라 add를 이해했다면 misalignment도 쉽게 풀 수 있을 것이다...




반응형

'<Wargame & CTF> > Pwnable.xyz' 카테고리의 다른 글

[Pwnable.xyz] note  (0) 2020.07.31
[Pwnable.xyz] Game  (0) 2020.05.31
[Pwnable.xyz] UAF  (0) 2019.12.30
[Pwnable.xyz] GrownUp  (0) 2019.12.29
[Pwnable.xyz]sub  (0) 2019.01.06