๋ฐ์ํ
๋ฌธ์ ํด์
- pwd ^ KEY = JOKER ๋ฅผ ๋ง์กฑํ๋ฉด ๋ณตํธํ๊ฐ ๋๋ค.
์ฝ๋ ํด์
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// ์ด๊ธฐํ๋ ๊ฐ์ผ๋ก ์ ์ํ ๋ฌธ์์ด ์์๋ค
#define JOKER "\\x40\\x53\\x06\\x03\\x43\\x52\\x54\\x3b"
#define KEY "023661dd4\\0"
#define TRUE 1
#define FALSE 0
#define OK 0
#define ERRO -1
// ์ํํธ์จ์ด ์ด๋ฆ๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ๋ ํจ์
void __print_sw_title (char *sw_name);
// ์ฃผ์ด์ง ๋น๋ฐ๋ฒํธ๊ฐ ์ ํจํ์ง ํ์ธํ๋ ํจ์
int __is_valid_pwd (char *pwd);
// ์ฃผ์ด์ง ๋น๋ฐ๋ฒํธ๋ฅผ ํค๋ฅผ ์ด์ฉํด ๋๋
ํํ๋ ํจ์
char *__obfuscation (char *pwd, char *key);
// ์ฑ๊ณต ํ๊ทธ ํ์ผ์ ์์ฑํ๋ ํจ์
void __create_tag (char *id);
int main (int argc, char *argv[]) {
if (argc != 2) {
// ํ๋ก๊ทธ๋จ ์ด๋ฆ๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ๊ณ ํ๋ก๊ทธ๋จ ์ข
๋ฃ
__print_sw_title(argv[0]);
return ERRO;
}
if ( __is_valid_pwd(argv[1]) ) {
// ์ฃผ์ด์ง ๋น๋ฐ๋ฒํธ๊ฐ ์ ํจํ๋ฉด ์ฑ๊ณต ํ๊ทธ ์์ฑ ํ ๋ฉ์์ง ์ถ๋ ฅ
__create_tag(argv[0]);
printf("\\n +-+ ๋ฌด, ๋ฌด์จ... ๋ง๋ ์๋ผ!! ์ด๋ป๊ฒ ๋ณตํธํ ํค๋ฅผ...?? +-+ \\n");
} else {
// ๋น๋ฐ๋ฒํธ๊ฐ ์ ํจํ์ง ์์ผ๋ฉด ์คํจ ๋ฉ์์ง ์ถ๋ ฅ
printf("\\n ๋์ ํ์ผ๋ค์ ์ด์ ์๋จ๊ฐ์ ๊ฑด๋๋ค๊ฐ ์ ์น์ฌ์์ ํ์ดํ์ด๋ธ๋ฅผ ํ๊ฒ๋์๋ค! ์ผํํํํ!\\n"); // ใ
ใ
ใ
ใ
ใ
ใ
}
return OK;
}
// ์ฃผ์ด์ง ๋น๋ฐ๋ฒํธ๊ฐ ์ ํจํ์ง ํ์ธํ๋ ํจ์
int __is_valid_pwd (char *pwd) {
if (! strncmp(JOKER, __obfuscation(pwd, KEY), sizeof(JOKER)) ) {
return TRUE;
}
return FALSE;
}
// ์ฃผ์ด์ง ๋น๋ฐ๋ฒํธ๋ฅผ ํค๋ฅผ ์ด์ฉํด ๋๋
ํํ๋ ํจ์
char *__obfuscation (char *pwd, char *key) {
int i;
for (i = 0; i < strlen(pwd); i++) {
if(key[i] == '\\0') break;
pwd[i] = pwd[i] ^ key[i];
}
return pwd;
}
// ์ํํธ์จ์ด ์ด๋ฆ๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ๋ ํจ์
void __print_sw_title (char *sw_name) {
printf(" ----------- [%s] ----------- \\n", sw_name);
printf(" ::. ๋ณตํธํ ๋ฐฉ๋ฒ: %s <๋ณตํธํํค>\\n\\n", sw_name);
}
// ์ฑ๊ณต ํ๊ทธ ํ์ผ์ ์์ฑํ๋ ํจ์
void __create_tag (char *id) {
FILE *fd;
char *tag_name = (char *)malloc(24 * sizeof(char));
memset(tag_name, '\\0', 24);
snprintf(tag_name,24, "./%s.success", id);
fd = fopen(tag_name, "w");
if (fd != NULL) {
fprintf(fd, "๋ณตํธํ๊ฐ ์๋ฃ๋์์ต๋๋ค.\\n");
fclose(fd);
} else {
printf("[ }{4k3r m3ss493 ] Hey sussy baka~ 7h3r3 w4s 4n 3rr0r 0p3nin9 7h3 file..\\n");
}
}
ํ์ด ์ฝ๋
#include <stdio.h>
char JOKER[] = {0x40, 0x53, 0x06, 0x03, 0x43, 0x52, 0x54, 0x3b};
char KEY[] = {'0', '2', '3', '6', '6', '1', 'd', 'd', '4', '\\0'};
int main () {
char pwd[9];
for(int i = 0; i < 8; i++) {
pwd[i] = JOKER[i] ^ KEY[i];
}
printf("%s", pwd);
}
๊ฒฐ๊ณผ
ํ์ง๋ง Dream Hack ์ ์ ๋ ฅํ ๋๋ _์ด ๋น ์ง ์ํ๋ก pa55uc0 ์ ๋ ฅํด์ผ ์ ๋ต ์ฒ๋ฆฌ ๋๋ค.
__create_tag ํจ์๋ ์ ์๋์ง ๋ชจ๋ฅด๊ฒ ๋ค. ์ถ๊ฐ๋ก ๋ฌธ์ ๋ฅผ ๋ง๋๋ ค๋ค๊ฐ ์ค๋จํ ๊ฒ ๊ฐ๋ค.
๋ฐ์ํ
'๐ดโโ ๏ธ CTF ๐ดโโ ๏ธ > ๐งฎ ์ํธํ ๐งฎ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Dream Hack - Crypto] chinese what? (0) | 2023.09.04 |
---|---|
[Dream Hack - Crypto] ICM2022 (0) | 2023.09.04 |
[Dream Hack - Crypto] ROT128 (0) | 2023.09.04 |
[Dream Hack - Crypto] Robot Only (0) | 2023.09.02 |
[WebHacking] #1 old-1 (1) | 2022.10.26 |