Skip to content

Commit 6c5dd86

Browse files
committed
Add FMS Task
1 parent 405e551 commit 6c5dd86

File tree

6 files changed

+137
-0
lines changed

6 files changed

+137
-0
lines changed

FMS/create/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
main: main.c
2+
gcc -o $@ $^ -z execstack -fno-stack-protector

FMS/create/flag.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
STCTF#5a11ba8f6b582e7e#

FMS/create/main.c

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
#define LINE "________________________\n"
5+
6+
void welcome()
7+
{
8+
printf(
9+
"Welcome to the Flag Management System!\n\n"
10+
"################################################\n"
11+
"# #\n"
12+
"# ####### # # ##### #\n"
13+
"# # # ## ## # # ## ## #\n"
14+
"# # ## ## # # ## ## #\n"
15+
"# # # # # # # ## ## #\n"
16+
"# #### # # # # ##### #\n"
17+
"# # # # # # # # # #\n"
18+
"# # # # # # # ####### #\n"
19+
"# # # # # # ### #\n"
20+
"# # # # # # # #\n"
21+
"# # # # ##### #\n"
22+
"# #\n"
23+
"################################################\n\n");
24+
};
25+
26+
void main_menu()
27+
{
28+
printf(LINE
29+
" ~~Main menu~~ \n"
30+
" 1. Register\n"
31+
" 2. Login\n");
32+
fflush(stdin);
33+
fflush(stdout);
34+
}
35+
36+
void register_menu()
37+
{
38+
printf(LINE
39+
" ~~Registration~~ \n");
40+
fflush(stdin);
41+
fflush(stdout);
42+
}
43+
44+
void login_menu()
45+
{
46+
printf(LINE
47+
" ~~Login~~ \n");
48+
fflush(stdin);
49+
fflush(stdout);
50+
}
51+
52+
void auth(char *buf)
53+
{
54+
char tmp[1000];
55+
printf("Login: ");
56+
fflush(stdout);
57+
scanf("%999s", buf);
58+
printf("Password: ");
59+
fflush(stdout);
60+
scanf("%999s", tmp);
61+
}
62+
63+
int main(){
64+
int choise = 0;
65+
char login[1000] = "";
66+
welcome();
67+
68+
goto main_m;
69+
70+
main_m:
71+
main_menu();
72+
scanf("%d", &choise);
73+
switch (choise) {
74+
case 2: goto login_m;
75+
case 1: goto register_m;
76+
defalut:
77+
printf("Invalid choise: %d\n", choise);
78+
goto main_m;
79+
}
80+
81+
login_m:
82+
login_menu();
83+
auth(login);
84+
if (!strcmp(login, "root")) {
85+
printf(
86+
"Login: ok...\n"
87+
"Password: ok...\n"
88+
"Fingerprint: fail...\n\n"
89+
"Access denied!!\n");
90+
} else if (!strcmp(login, "admin")) {
91+
printf(
92+
"Login: ok...\n"
93+
"Password: ok...\n"
94+
"Fingerprint: fail...\n"
95+
"Typing Rhythm: fail...\n\n"
96+
"Access denied!!\n");
97+
} else {
98+
printf(
99+
"User does not exist!\n");
100+
}
101+
goto main_m;
102+
103+
register_m:
104+
register_menu();
105+
auth(login);
106+
if ( !strcmp(login, "admin") || !strcmp(login, "root") ) {
107+
printf("User already exists!\n");
108+
goto main_m;
109+
}
110+
printf("Welcome!\n"
111+
"Currently logged in as ");
112+
printf(login);
113+
printf("\n"
114+
"You are not allowed to create new flags.\n"
115+
"You have no flags.\n\n");
116+
goto main_m;
117+
118+
return 0;
119+
}

FMS/create/run.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/bash
2+
3+
port=1234
4+
5+
make main
6+
ncat -lp $port -ke ./main

FMS/solution/solution.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Стандартная уявзимость форматной строки. Задача: получить шелл и прочитать flag.txt.

FMS/summary.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
answer_regex: STCTF#5a11ba8f6b582e7e#
3+
author: gnull
4+
category: exploit
5+
description: |
6+
7+
name: FMS
8+
price: 150

0 commit comments

Comments
 (0)