bof.c
#include <stdio.h>
#include <string.h>
#include <windows.h>
void shell_code(){
printf("WELCOME SHELLCODE!");
system("cmd");
}
int main(int argc, char **argv){
char buffer[12];
memset(buffer, 0x00, sizeof(buffer));
if(argc != 2){
printf("Usage : ./bof.exe data\n");
exit(-1);
}
strcpy(buffer, argv[1]);
printf("sizeof %d \n", sizeof(argv[1]));
printf("strlen %d \n", strlen(argv[1]));
return 0;
}
compile
gcc -m32 bof.c -o bof.exe
ํ์ด
1. shellcode ์ฃผ์ ์ฐพ๊ธฐ
"WELCOME SHELLCODE!" ์คํธ๋ง์ ์ฐธ์กฐํ๋ ์ฃผ์๋ฅผ ์ฐพ์ผ๋ฉด ์ฝ๋ค. (00401501)
2. buffer ๋ณ์์ ์์ ์ฃผ์ ์ฐพ๊ธฐ
buffer๋ฅผ ์ธ์๋ก ๋ฐ๋ strcpy(mbscpy)๋ฅผ ํธ์ถํ๋ ๋ถ๋ถ์ ์ฐพ๊ณ lea ์คํผ๋๋๋ฅผ ์ฐพ๋๋ค. ([esp+14])
3. EBP์ buffer ์คํ์ ์ฐจ์ด ๊ตฌํ๊ธฐ
๋๋ฒ๊ฑฐ์ ๋ ์ง์คํฐ ์์ญ์ ์ฐธ๊ณ ํ๋ค.
EBP(0061FEA8) - [ESP+14](0061FE94) = 20
4. ํ์ด๋ก๋ ๋ง๋ค๊ธฐ
dummy data(20๊ฐ) + sfp(4๊ฐ) + return address(00401501) = ์ ์ฝ๋ ํธ์ถ ํ์ด๋ก๋
aaaaaaaaaaaaaaaaaaaabbbb@
return address๋ ์ธ์ฝ๋ฉ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ ๋ณํ ์ฌ์ดํธ๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
https://codebeautify.org/hex-string-converter
Hex to String Converter Online to Convert Hex to Text
Best Convert Hex to String (Hex to Text) Online and Save and Share. Hexadecimal to String
codebeautify.org
* ๋ฆฌํ์๋์ธ ์ฒด๊ณ์ผ ๊ฒฝ์ฐ์ ๋ฆฌํด ์ฃผ์๋ฅผ ๊ฑฐ๊พธ๋ก ์ง์ด ๋ฃ๋๋ค.
00 40 15 01 -> \x01\x15\x40\x00
5. ์คํ ๊ฒฐ๊ณผ
์๋์ฐ ํ๋กฌํํธ๊ฐ ์ด๋ฆฌ๋ฉด์ ์ ์ฝ๋ ์คํ์ ์ฑ๊ณตํ๋ค.
'๐ดCTF' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CTF - ์๊ฒ์ ์ฌ์ดํธ ๋ชจ์ (0) | 2024.04.18 |
---|---|
CTF - PHP ๋ฒ์ ๋ณ ํ ์คํธ ์ฌ์ดํธ(onlinephp.io) (0) | 2023.09.24 |