Level13
ft_des
level13@SnowCrash:~$ ls -l
total 8
-rwsr-sr-x 1 flag13 level13 7303 Aug 30 2015 level13level13@SnowCrash:~$ ./level13
UID 2013 started us but we we expect 4242#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
char * ft_des(char *param_1)
{
char *param_copy;
uint param_len;
char *param_copy_2;
uint param_index;
int num_index;
int i;
int j;
char num_str[] = "0123456";
char p_char;
param_copy = strdup(param_1);
num_index = 0;
param_index = 0;
param_copy_2 = param_copy;
param_len = 0xffffffff;
/* calculate the length of parameter : strlen(param_1) */
do {
if (param_len == 0)
break;
param_len = param_len - 1;
p_char = *param_copy_2;
param_copy_2 = param_copy_2 + 1;
} while(p_char);
do {
/* If param_index == len */
if (~param_len - 1 <= param_index)
return (param_copy);
if (num_index == 6)
num_index = 0;
/* if param_index is a XX number then it's true */
if ((param_index & 1) == 0)
{
if ((param_index & 1) == 0)
{
i = 0;
while (i < num_str[num_index])
{
param_copy[param_index] = param_copy[param_index] + -1;
if (param_copy[param_index] == 0x1f)
param_copy[param_index] = '~';
i = i + 1;
}
}
}
else
{
j = 0;
while (j < num_str[num_index])
{
param_copy[param_index] = param_copy[param_index] + 1;
if (param_copy[param_index] == 0x7f) // 0x7f is the ascii code for Delete
param_copy[param_index] = ' ';
j = j + 1;
}
}
param_index = param_index + 1;
num_index = num_index + 1;
} while( true );
}
void main(void)
{
__uid_t _Var1;
undefined4 uVar2;
_Var1 = getuid();
if (_Var1 != 0x1092) {
_Var1 = getuid();
printf("UID %d started us but we we expect %d\n",_Var1,0x1092);
/* WARNING: Subroutine does not return */
exit(1);
}
uVar2 = ft_des("boe]!ai0FB@.:|L6l@A?>qJ}I");
printf("your token is %s\n",uVar2);
return;
}Alternative way to solve the exercice (using a debugger)
Password for next level
Command summery
Last updated