bugku web部分

web2

点入连接发现全是滑稽,f12看源码,发现被注释的flag。

计算器

点入发现为计算算式,并且限制了长度,比较简单f12,看源码,发现他的maxlength=”1”,改为大于得数的长度即可点击验证得到flag。

web基础$_GET

1
2
3
4
$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

一道简单的php,get传参payload:?what=flag.得到flag。

web基础$_POST

1
2
3
4
$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

post传参,使用hackbar.postdata得到flag。

矛盾

1
2
3
4
5
6
7
$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}

要求num不可以是数字字符但是值还要等于1,那么我们就让num为1a 其实就是1和字符a的结合。
http://123.206.87.240:8002/get/index1.php?num=1a
即可得到flag。

web3

一进去就是这个画面,点击后就什么都没有,查看源代码看一下。


发现有一行很奇怪。应该是ASCII码,在线解码得到flag。

域名解析

题目意思是把flag.bugku.com 解析到123.206.87.240,找到c:\windows\system32\drivers\etc\hosts 直接在最后一行进行更改。

在浏览器中访问flag.bugku.com.即可得到flag。

你必须让他停下来

点入后发现他页面中的js是自动一直刷新的,所以要用burpsuit抓包,若干次go之后会发现被注释的flag。

本地包含

好像挂了,原来做过,算了吧。

变量一

1
2
3
4
5
6
7
8
9
10
11
12
13
flag In the variable ! <?php  

error_reporting(0);
include "flag1.php";
highlight_file(__file__);
if(isset($_GET['args'])){
$args = $_GET['args'];
if(!preg_match("/^\w+$/",$args)){
die("args error!");
}
eval("var_dump($$args);");
}
?>

preg_match用于执行一个正则表达式匹配。
eval() 函数把字符串按照 PHP 代码来执行。
var_dump() 打印变量的相关信息
[\w+]表示匹配数字、字母、下划线和加号本身字符

用户可控的变量只有args,但是经过了过滤,只允许是数字,字母与下划线的组合。
这里我们看到eval(“var_dump($$args);”);语句中,var_dump中的变量有两个$符,说明var_dump中的变量名由$args指定,而题目提示说flag在变量里,考虑到可以利用$GLOBLES变量。

$GLOBALS — 是一个数组,包含了全局作用域中可用的全部变量。变量的名字就是数组的键。

所以可以构造payload:?args=GLOBALS,得到flag。

web5


已经有了提示jspfuck。看一下源码。发现一堆不知名的[]+[]+。上面提示了jsp。所以看看有没有这样的解码器。但好像又不是解码,传给控制台解码一下,得到flag,但注意是大写。提交就有了。

头等舱

打开后只有什么也没有的字样
使用burp抓包看一下发现flag。

网站被黑

打开发现什么也没有。既然说是没什么技术含量的,实战用御剑扫一下。扫到一个shell.php打开它。需要输密码
使用burp发送到intruder,转到payloads发现。这里的原理是,我们输入不正确的密码时返回的请求都是一样的,而输入正确的密码时,返回的请求长度就跟不正确的有区别,所以说,这个长度时1110的返回请求就是我们要的密码啦。

管理员系统

因为是管理员所以用admin
查看源码有一段base64注释 解码为test123估计为password抓包查看发送至repeater因为提示本地管理员登陆 百度一下如何伪造本地管理员
伪造试一下X-Forwarded-For:127.0.0.1得到flag。

web4

上来直接让看一下源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<title>BKCTF-WEB4</title>
<body>
<div style="display:none;"></div>
<form action="index.php" method="post" >
看看源代码?<br>
<br>
<script>
var p1 = '%66%75%6e%63%74%69%6f%6e%20%63%68%65%63%6b%53%75%62%6d%69%74%28%29%7b%76%61%72%20%61%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%70%61%73%73%77%6f%72%64%22%29%3b%69%66%28%22%75%6e%64%65%66%69%6e%65%64%22%21%3d%74%79%70%65%6f%66%20%61%29%7b%69%66%28%22%36%37%64%37%30%39%62%32%62';
var p2 = '%61%61%36%34%38%63%66%36%65%38%37%61%37%31%31%34%66%31%22%3d%3d%61%2e%76%61%6c%75%65%29%72%65%74%75%72%6e%21%30%3b%61%6c%65%72%74%28%22%45%72%72%6f%72%22%29%3b%61%2e%66%6f%63%75%73%28%29%3b%72%65%74%75%72%6e%21%31%7d%7d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%6c%65%76%65%6c%51%75%65%73%74%22%29%2e%6f%6e%73%75%62%6d%69%74%3d%63%68%65%63%6b%53%75%62%6d%69%74%3b';
eval(unescape(p1) + unescape('%35%34%61%61%32' + p2));
</script>

<input type="input" name="flag" id="flag" />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>



开始合并

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function checkSubmit()
{
var a=document.getElementById("password");
if("undefined"!=typeof a)
{
if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)
return!0;
alert("Error");
a.focus();
return!1
}
}
document.getElementById("levelQuest").
onsubmit=checkSubmit;

input输入框填写:67d709b2b54aa2aa648cf6e87a7114f1
即可get flag

flag在index里

点入发现只有一个click,再次点击发现url不同
http://123.206.87.240:8005/post/
http://123.206.87.240:8005/post/index.php?file=show.php
因为题目tipsflag在index里,所以发现file传值有问题
这里有一个通过php://filter读取本包含漏洞脚本的源码的问题
所以file的传值应为php://filter/read=convert.base64-encode/resource=index.php得到一串base64编码
解码得

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
<title>Bugku-ctf</title>

<?php
error_reporting(0);
if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';}
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag:flag{edulcni_elif_lacol_si_siht}
?>
</html>

<html>

发现flag

输入密码查看flag

因为是5位数字密码,比较简单直接利用burp爆破即可。得到密码为13579,提交得flag。

点击一百万次

f12看一下发现他每点击一下post传参1,所以直接利用hackbar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

var clicks=0
$(function() {
$("#cookie")
.mousedown(function() {
$(this).width('350px').height('350px');
})
.mouseup(function() {
$(this).width('375px').height('375px');
clicks++;
$("#clickcount").text(clicks);
if(clicks >= 1000000){
var form = $('<form action="" method="post">' +
'<input type="text" name="clicks" value="' + clicks + '" hidden/>' +
'</form>');
$('body').append(form);
form.submit();
}
});
});


直接显示flag。

Donate comment here