diff --git a/bonus0/Ressources/bonus0.c b/bonus0/Ressources/bonus0.c new file mode 100644 index 0000000..5ccdc50 --- /dev/null +++ b/bonus0/Ressources/bonus0.c @@ -0,0 +1,50 @@ + +undefined4 main(void) + +{ + char local_3a [54]; + + pp(local_3a); + puts(local_3a); + return 0; +} + +void pp(char *param_1) + +{ + char cVar1; + uint uVar2; + char *pcVar3; + byte bVar4; + char local_34 [20]; + char local_20 [20]; + + bVar4 = 0; + p(local_34,&DAT_080486a0); + p(local_20,&DAT_080486a0); + strcpy(param_1,local_34); + uVar2 = 0xffffffff; + pcVar3 = param_1; + do { + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + cVar1 = *pcVar3; + pcVar3 = pcVar3 + (uint)bVar4 * -2 + 1; + } while (cVar1 != '\0'); + *(undefined2 *)(param_1 + (~uVar2 - 1)) = 0x20; + strcat(param_1,local_20); + return; +} + +void p(char *param_1,char *param_2) +{ + char *pcVar1; + char local_100c [4104]; + + puts(param_2); + read(0,local_100c,0x1000); + pcVar1 = strchr(local_100c,10); + *pcVar1 = '\0'; + strncpy(param_1,local_100c,0x14); + return; +} diff --git a/bonus1/Ressources/bonus1.c b/bonus1/Ressources/bonus1.c new file mode 100644 index 0000000..9e8d41a --- /dev/null +++ b/bonus1/Ressources/bonus1.c @@ -0,0 +1,20 @@ +undefined4 main(undefined4 param_1,int param_2) + +{ + undefined4 uVar1; + undefined local_3c [40]; + int local_14; + + local_14 = atoi(*(char **)(param_2 + 4)); + if (local_14 < 10) { + memcpy(local_3c,*(void **)(param_2 + 8),local_14 * 4); + if (local_14 == 0x574f4c46) { + execl("/bin/sh","sh",0); + } + uVar1 = 0; + } + else { + uVar1 = 1; + } + return uVar1; +} diff --git a/bonus2/Ressources/bonus2.c b/bonus2/Ressources/bonus2.c new file mode 100644 index 0000000..3fa1447 --- /dev/null +++ b/bonus2/Ressources/bonus2.c @@ -0,0 +1,49 @@ + +undefined4 main(int param_1,int param_2) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + undefined4 *puVar4; + byte bVar5; + undefined4 local_60 [10]; + char acStack_38 [36]; + char *local_14; + + bVar5 = 0; + if (param_1 == 3) { + puVar3 = local_60; + for (iVar2 = 0x13; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar3 = 0; + puVar3 = puVar3 + 1; + } + strncpy((char *)local_60,*(char **)(param_2 + 4),0x28); + strncpy(acStack_38,*(char **)(param_2 + 8),0x20); + local_14 = getenv("LANG"); + if (local_14 != (char *)0x0) { + iVar2 = memcmp(local_14,&DAT_0804873d,2); + if (iVar2 == 0) { + language = 1; + } + else { + iVar2 = memcmp(local_14,&DAT_08048740,2); + if (iVar2 == 0) { + language = 2; + } + } + } + puVar3 = local_60; + puVar4 = (undefined4 *)&stack0xffffff50; + for (iVar2 = 0x13; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar4 = *puVar3; + puVar3 = puVar3 + (uint)bVar5 * -2 + 1; + puVar4 = puVar4 + (uint)bVar5 * -2 + 1; + } + uVar1 = greetuser(); + } + else { + uVar1 = 1; + } + return uVar1; +} diff --git a/bonus3/Ressources/bonus3.c b/bonus3/Ressources/bonus3.c new file mode 100644 index 0000000..853494d --- /dev/null +++ b/bonus3/Ressources/bonus3.c @@ -0,0 +1,40 @@ +undefined4 main(int param_1,int param_2) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + byte bVar4; + undefined4 local_98 [16]; + undefined local_57; + char local_56 [66]; + FILE *local_14; + + bVar4 = 0; + local_14 = fopen("/home/user/end/.pass","r"); + puVar3 = local_98; + for (iVar2 = 0x21; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar3 = 0; + puVar3 = puVar3 + (uint)bVar4 * -2 + 1; + } + if ((local_14 == (FILE *)0x0) || (param_1 != 2)) { + uVar1 = 0xffffffff; + } + else { + fread(local_98,1,0x42,local_14); + local_57 = 0; + iVar2 = atoi(*(char **)(param_2 + 4)); + *(undefined *)((int)local_98 + iVar2) = 0; + fread(local_56,1,0x41,local_14); + fclose(local_14); + iVar2 = strcmp((char *)local_98,*(char **)(param_2 + 4)); + if (iVar2 == 0) { + execl("/bin/sh","sh",0); + } + else { + puts(local_56); + } + uVar1 = 0; + } + return uVar1; +} diff --git a/level1/Ressources/level1.c b/level1/Ressources/level1.c new file mode 100644 index 0000000..a3354cc --- /dev/null +++ b/level1/Ressources/level1.c @@ -0,0 +1,14 @@ +void main(void) +{ + char local_50 [76]; + + gets(local_50); + return; +} + +void run(void) +{ + fwrite("Good... Wait what?\n",1,0x13,stdout); + system("/bin/sh"); + return; +} diff --git a/level2/Ressources/level2.c b/level2/Ressources/level2.c new file mode 100644 index 0000000..5f1ddcb --- /dev/null +++ b/level2/Ressources/level2.c @@ -0,0 +1,25 @@ + +void main(void) +{ + p(); + return; +} + + +void p(void) + +{ + uint unaff_retaddr; + char local_50 [76]; + + fflush(stdout); + gets(local_50); + if ((unaff_retaddr & 0xb0000000) == 0xb0000000) { + printf("(%p)\n",unaff_retaddr); + /* WARNING: Subroutine does not return */ + _exit(1); + } + puts(local_50); + strdup(local_50); + return; +} diff --git a/level3/Ressources/level3.c b/level3/Ressources/level3.c new file mode 100644 index 0000000..cd4bb73 --- /dev/null +++ b/level3/Ressources/level3.c @@ -0,0 +1,22 @@ + +void main(void) + +{ + v(); + return; +} + + +void v(void) + +{ + char local_20c [520]; + + fgets(local_20c,0x200,stdin); + printf(local_20c); + if (m == 0x40) { + fwrite("Wait what?!\n",1,0xc,stdout); + system("/bin/sh"); + } + return; +} diff --git a/level4/Ressources/level4.c b/level4/Ressources/level4.c new file mode 100644 index 0000000..676b5d5 --- /dev/null +++ b/level4/Ressources/level4.c @@ -0,0 +1,26 @@ + +void main(void) +{ + n(); + return; +} + +void n(void) +{ + char local_20c [520]; + + fgets(local_20c,0x200,stdin); + p(local_20c); + if (m == 0x1025544) { + system("/bin/cat /home/user/level5/.pass"); + } + return; +} + + +void p(char *param_1) +{ + printf(param_1); + return; +} + diff --git a/level5/Ressources/level5.c b/level5/Ressources/level5.c new file mode 100644 index 0000000..f9706f1 --- /dev/null +++ b/level5/Ressources/level5.c @@ -0,0 +1,28 @@ + +void main(void) + +{ + n(); + return; +} + +void n(void) + +{ + char local_20c [520]; + + fgets(local_20c,0x200,stdin); + printf(local_20c); + /* WARNING: Subroutine does not return */ + exit(1); +} + + +void o(void) + +{ + system("/bin/sh"); + /* WARNING: Subroutine does not return */ + _exit(1); +} + diff --git a/level6/Ressources/level6.c b/level6/Ressources/level6.c new file mode 100644 index 0000000..e62c993 --- /dev/null +++ b/level6/Ressources/level6.c @@ -0,0 +1,28 @@ + +void main(undefined4 param_1,int param_2) + +{ + char *__dest; + code **ppcVar1; + + __dest = (char *)malloc(0x40); + ppcVar1 = (code **)malloc(4); + *ppcVar1 = m; + strcpy(__dest,*(char **)(param_2 + 4)); + (**ppcVar1)(); + return; +} + +void m(void *param_1,int param_2,char *param_3,int param_4,int param_5) + +{ + puts("Nope"); + return; +} + +void n(void) + +{ + system("/bin/cat /home/user/level7/.pass"); + return; +} diff --git a/level7/Ressources/level7.c b/level7/Ressources/level7.c new file mode 100644 index 0000000..ce0c4ac --- /dev/null +++ b/level7/Ressources/level7.c @@ -0,0 +1,35 @@ + +undefined4 main(undefined4 param_1,int param_2) + +{ + undefined4 *puVar1; + void *pvVar2; + undefined4 *puVar3; + FILE *__stream; + + puVar1 = (undefined4 *)malloc(8); + *puVar1 = 1; + pvVar2 = malloc(8); + puVar1[1] = pvVar2; + puVar3 = (undefined4 *)malloc(8); + *puVar3 = 2; + pvVar2 = malloc(8); + puVar3[1] = pvVar2; + strcpy((char *)puVar1[1],*(char **)(param_2 + 4)); + strcpy((char *)puVar3[1],*(char **)(param_2 + 8)); + __stream = fopen("/home/user/level8/.pass","r"); + fgets(c,0x44,__stream); + puts("~~"); + return 0; +} + +void m(void *param_1,int param_2,char *param_3,int param_4,int param_5) + +{ + time_t tVar1; + + tVar1 = time((time_t *)0x0); + printf("%s - %d\n",c,tVar1); + return; +} + diff --git a/level8/Ressources/level8.c b/level8/Ressources/level8.c new file mode 100644 index 0000000..94ef904 --- /dev/null +++ b/level8/Ressources/level8.c @@ -0,0 +1,116 @@ + +undefined4 main(void) + +{ + char cVar1; + char *pcVar2; + int iVar3; + uint uVar4; + byte *pbVar5; + byte *pbVar6; + bool bVar7; + undefined uVar8; + undefined uVar9; + bool bVar10; + undefined uVar11; + byte bVar12; + byte local_90 [5]; + char local_8b [2]; + char acStack_89 [125]; + + bVar12 = 0; + do { + printf("%p, %p \n",auth,service); + pcVar2 = fgets((char *)local_90,0x80,stdin); + bVar7 = false; + bVar10 = pcVar2 == (char *)0x0; + if (bVar10) { + return 0; + } + iVar3 = 5; + pbVar5 = local_90; + pbVar6 = (byte *)"auth "; + do { + if (iVar3 == 0) break; + iVar3 = iVar3 + -1; + bVar7 = *pbVar5 < *pbVar6; + bVar10 = *pbVar5 == *pbVar6; + pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1; + pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1; + } while (bVar10); + uVar8 = 0; + uVar11 = (!bVar7 && !bVar10) == bVar7; + if ((bool)uVar11) { + auth = (undefined4 *)malloc(4); + *auth = 0; + uVar4 = 0xffffffff; + pcVar2 = local_8b; + do { + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + cVar1 = *pcVar2; + pcVar2 = pcVar2 + (uint)bVar12 * -2 + 1; + } while (cVar1 != '\0'); + uVar4 = ~uVar4 - 1; + uVar8 = uVar4 < 0x1e; + uVar11 = uVar4 == 0x1e; + if (uVar4 < 0x1f) { + strcpy((char *)auth,local_8b); + } + } + iVar3 = 5; + pbVar5 = local_90; + pbVar6 = (byte *)"reset"; + do { + if (iVar3 == 0) break; + iVar3 = iVar3 + -1; + uVar8 = *pbVar5 < *pbVar6; + uVar11 = *pbVar5 == *pbVar6; + pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1; + pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1; + } while ((bool)uVar11); + uVar9 = 0; + uVar8 = (!(bool)uVar8 && !(bool)uVar11) == (bool)uVar8; + if ((bool)uVar8) { + free(auth); + } + iVar3 = 6; + pbVar5 = local_90; + pbVar6 = (byte *)"service"; + do { + if (iVar3 == 0) break; + iVar3 = iVar3 + -1; + uVar9 = *pbVar5 < *pbVar6; + uVar8 = *pbVar5 == *pbVar6; + pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1; + pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1; + } while ((bool)uVar8); + uVar11 = 0; + uVar8 = (!(bool)uVar9 && !(bool)uVar8) == (bool)uVar9; + if ((bool)uVar8) { + uVar11 = (byte *)0xfffffff8 < local_90; + uVar8 = acStack_89 == (char *)0x0; + service = strdup(acStack_89); + } + iVar3 = 5; + pbVar5 = local_90; + pbVar6 = (byte *)"login"; + do { + if (iVar3 == 0) break; + iVar3 = iVar3 + -1; + uVar11 = *pbVar5 < *pbVar6; + uVar8 = *pbVar5 == *pbVar6; + pbVar5 = pbVar5 + (uint)bVar12 * -2 + 1; + pbVar6 = pbVar6 + (uint)bVar12 * -2 + 1; + } while ((bool)uVar8); + if ((!(bool)uVar11 && !(bool)uVar8) == (bool)uVar11) { + if (auth[8] == 0) { + fwrite("Password:\n",1,10,stdout); + } + else { + system("/bin/sh"); + } + } + } while( true ); +} + diff --git a/level9/Ressources/level9.c b/level9/Ressources/level9.c new file mode 100644 index 0000000..fb21d99 --- /dev/null +++ b/level9/Ressources/level9.c @@ -0,0 +1,30 @@ + +void main(int param_1,int param_2) + +{ + N *this; + undefined4 *this_00; + + if (param_1 < 2) { + /* WARNING: Subroutine does not return */ + _exit(1); + } + this = (N *)operator.new(0x6c); + N::N(this,5); + this_00 = (undefined4 *)operator.new(0x6c); + N::N((N *)this_00,6); + N::setAnnotation(this,*(char **)(param_2 + 4)); + (**(code **)*this_00)(this_00,this); + return; +} + +void __thiscall N::setAnnotation(N *this,char *param_1) + +{ + size_t __n; + + __n = strlen(param_1); + memcpy(this + 4,param_1,__n); + return; +} +