zoukankan      html  css  js  c++  java
  • HDCTF2nd复盘

    本文首发于“合天网安实验室”作者: 淡灬看夏丶恋雨

    海南大学校内赛。国庆打的,之前没时间复现。校外人水了个纪念品。感谢Gamous不舍赐教。感动的哭了。比赛的复盘。有些没做出来的阔以看官方wp。题附及官方wp已打包:

    蓝奏:

    https://wws.lanzous.com/i7HmLhmw18f

    百度云:链接:

    https://pan.baidu.com/s/1mKWDG-bftD-kPAeZwEUvGw

    提取码:bcxv

    1、WEB

    signin:

    打开网页,源代码,base64解码

    babysql(ACTF题):

    这题,一开始以为是纯注入,一个一个试'load_file','information_schema'。还过滤了挺多东西的,后来就直接绕过注入,直接select即可。看提示(划线划掉的)也是

    查完字段是三个之后,直接查询flag即可。

    1' union select 1,2,flag from flag#

    babyrce(ACTF题):

    这题也没啥限制,就是最简单的rce,../ 就返回上级目录,flag就是flag文件。

    easygit(ACTF题):

    git泄露,github上找个工具,下了源码直接cat flag就好了

    backup_file(ACTF题):

    index.php.bak,备份文件,根据源码绕过就好了,构造?key=123即可

    考点应该是php弱类型

    参考别人总结的:

    https://www.cnblogs.com/Mrsm1th/p/6745532.html

    intval函数直接将值转换成数字,即数字跟字符串比较。

    传key=123即可绕过限制。

    easy_file_include(ACTF题):

    伪协议直接包含

    http://8.129.15.153:20005/?file=php://filter/read=convert.base64-encode/resource=flag.php

    点击页面的tips,文件包含php伪协议直接尝试即可

    do_u_know_HTTP:

    提交get参数Hainan_University,然后在post提交HnuSec即可。在根据最后一条,burpsuite抓包加上http头,没啥难的,就按要求提交各类参数就好了。就是post的时候我bp一直不行,用hackbar才可以

    erciyuan

    看源码,直接跟到最后。先第一步绕过正则即可,^符号取反。就把除了26个大小写字母和数字的其他替换成空,第二个过滤则把HnuSec替换成!。观察前面的hint我们要访问到!HDCTF!.php文件。就构造HnuSecHDCTFHnuSec.php的编码即可绕过

    hash_hmac:

    观察源码,直接绕过即可。post传x[]=QNKCDZO&y[]=aabg7XSs。给了个 fllllllllllllag.php,访问cat flag

    md5弱类型,直接绕过吧

    welcome:

    猜测弱口令,admin/123456,密码错误左上角弹出密码。输入 cat flag

    calculator_v1

    flask的一题,下载给的python文件,没做任何过滤。直接cat flag即可

    ezflask

    给了个参考链接,模板注入。还什么都没过滤。就直接套了wp里的payload。

    https://www.k0rz3n.com/2018/11/12/%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E5%B8%A6%E4%BD%A0%E7%90%86%E8%A7%A3%E6%BC%8F%E6%B4%9E%E4%B9%8BSSTI%E6%BC%8F%E6%B4%9E/{{config.__class__.__init__.__globals__['os'].popen('cat ./flag').read()}}

    warmup

    getshell

    getshell。看过滤。过滤逗号和等号,而后用.来连接前后。

    直接把连接前面的闭合掉,在用//注释符把后面注释掉

    直接闭合后面也是可以cat flag的,看源码就拿到flag了

    dudaima

    get给pass传个值,然后反序列化他。就满足if里的条件即可

    就可自己测试了。引用赋值和传值赋值参考:

    https://blog.csdn.net/m15712884682/article/details/77350027

    剩下的web题就不咋会了。还有几道flask和反序列化,可以看看官方wp

    2MISC

    签到题:

    直接输flag,签到即可。

    一步之遥:

    伪加密

    改成00打开

    你知道lsb是什么意思吗

    就lsb低位隐写,存为7z即可

    后来保存下来,看到文件较小,也猜到可能是crc32,找工具爆了确实也不是

    在比赛中是没想到可能会是纯数字,后来就写个纯数字的爆破脚本即可(脚本来自官方wp)

    girlfriend:

    导出HTTP对象,选最大的是图片文件。打开看到flag

    嘤语:

    ----- . ----. -... ..--- -... ...-- -.... . . ...-- ...-- -... .---- ...-- ..-. ..-. ----. .- --... ...-- -.. ..-. ....- ....- ----. -... --... --... . ..--- ..-.http://.com/zonghe/moersicodeconverter.aspx

    奇怪的字符:

    leet,l33t。黑客语言。wiki上找一下。有对照表,也有在线的网站

    http://www.englishcn.com/tools/Leet.htmhttp://output.jsbin.com/IHoFuQE/1
    https://www.dcode.fr/leet-speak-1337
    http://www.toolsxx.com/code/1337.html
    https://1337.me/
    https://www.gamehouse.com/blog/leet-speak-cheat-sheet/

    无字天书:

    打开文件,文件只由空格,tab,换行组成。可能是white-space

    找个在线的网站贴进去可以直接解,或者去gayhub上找个。

    https://vii5ard.github.io/whitespace/

    ook直接解密就可

    https://www.splitbrain.org/services/ook

    你真的了解dns吗?

    nslookup -type=txt hdctf.0x00.work,直接看到flag

    dns的type表示dns的协议类型

    nospace

    零度字符隐写

    解出来的就是password,密码admin:https://offdev.net/demos/zwsp-steg-js

    雪花飘飘

    零解一题,看了wp还没给我整懂,问了一下出题人。diff原页面和链接页面。发现换行,考虑网页隐写。使用stegsnow。snow=雪

    用在线工具diff即可。

    海南上一次下雨时间。

    然后就保存题目链接的html文件。

    花朵解密

    https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=huaduo

    海底捞帧预告片

    这题感觉不难,就是头大,看了wp还能懂,找到了可以用FFmpeg删除重复帧的命令,和wp一毛一样,问了一下出题人,还给一个用脚本的思路,Hash比较每一帧来筛选。写不来,Ffmpeg天下第一。

    删除重复帧之后,提出图片。

    最后筛选到4张,但目前无ps就没继续做下去了,拼起来反色即可得到二维码。

    专业团队:

    分四阶段,主要就是要降噪处理(不知道能不能把抬棺那段分离出来)。还有能听出来DTMF编码。morse降噪完直接看就好了。DTMF不能的话,就手解。降噪完也是能看的,一个是频谱,然后第二个应该是morse,第三个是dtmf 第四个就是流派的flag。连起来就是最后的flag了。

    调两个频段之后对着DTMF的表就可以看出来了。用工具解的话有几位是乱了的

    瓦斯矿工

    很新奇的一道题,虚拟货币相关。

    metamask使用可参考:

    https://zhuanlan.zhihu.com/p/112285438?from_voters_page=true

    直接foremost分离图片即可得到一个压缩包,拖进16进制文件里也可以看到有12个50 4B 03 04的PK头

    观察到大小较小,直接爆破crc即可,以太坊钱包通过助记词登录。助记词可通过数字查询,这里就只爆破数字。

    直接破即可

    https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt#L350

    以太坊钱包通过BIP-39生成私钥,数字查询助记词。

    脚本

    import binascii
    import zipfile
    import time
    def crc32asii(v):
           return (binascii.crc32(bytes(str(v), encoding='ascii')) & 0xffffffff)
    for x in range(1, 10000):
          f = zipfile.ZipFile("00000001.zip", "r")
          for i in range(1, 13): 
                  GetCrc = f.getinfo(str(i)) 
                  crc = GetCrc.CRC
                  a = ("0x%08x" % crc) 
                  j = crc32asii(x) 
                 if ("0x%08x" % j) == a: 
                       print(i, x)
                       time.sleep(0.1)

    使用助记词登录之后,复制地址,去查询最近的交易记录

    详情里得到的直接转字符串得到flag

    到点了,上号

    出题肯定有故事doge

    考点是mp3保留字隐写数据,wp里给了wiki链接

    https://en.wikipedia.org/wiki/MP3#File_structure

    直接拿脚本就出了,未学习原理。

    https://github.com/impakho/de1ctf-mc_challs/blob/master/writeup/mc_easybgm/mp3.py

    3.crypto

    起源

    应该是凯撒直接解

    围住世界:

    这题疑惑了挺久的,以为是自己找的网站和软件不对。反反复复里里外外。试了好几个。后来翻看笔记的时候发现可能是w型栅栏密码

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

    有趣起来了:

    就倒序,ctf特训营上有讲的。quiqui也可以做的,前面改成hdctf就好了。顺便把字母改一下即可。

    官方wp上给的是用脚本

    神秘字符:

    一看时候只注意到mc。以为是什么mc的其他版本。就去疯狂google也没找到。后来就翻到mc的wiki。就mc附魔台上的字符,玩过mc的应该都知道,mc wiki上找张对比图,对比就好

    https://minecraft-zh.gamepedia.com/Minecraft_Dungeons:%E7%AC%A6%E6%96%87

    茫茫人海:

    base64隐写,跟[ACTF新生赛2020]base64隐写挺像的。反正也是套脚本就好了

    奇怪的贝斯:

    整不会了这题,抱歉。

    具体思路应该就是构造一个码表。\x即是转义字符,方便表示

    babyrsa:

    https://www.anquanke.com/post/id/87105

    这题还好,纯现代密码菜鸡,不过给了pqe。又给了个链接,先求欧拉,然后就n,d,m

    #coding:utf-8
    from binascii import a2b_hex, b2a_hex
    import gmpy2
    #flag = "*****************************"
    p = 262248800182277040650192055439906580479
    q = 262854994239322828547925595487519915551
    e = 65533
    n = p*q
    phi = (p-1)*(q-1)
    d = gmpy2.invert(e, phi)
    c = 68405618655091231850901459679785989915772760467494039910176075122809565696913
    m = pow(c, d, n)
    print(m)
    #a=(int(str(m),16))
    a=191853633260784640753082658319123392799532077630882079100618224148262386737246462849
    https://tool.lu/hexconvert/https://www.bejson.com/convert/ox2str/

    4.Re

    sign_up

    直接查看字符串就可看到flag

    re1

    这题比赛的时候看,以为是异或运算+base64换表然后解密,找了半天硬是没找全64个字符。然后就不了了之。Re也不咋会。之后的题可以看官方wp。

    5.Pwn

    calculator

    题目描述:

    python2的input执行输入导致rce

    先用__import__('os').system('/bin/sh')。

    直接rce

    然后用python -c 'import pty;pty.spawn("/bin/bash");'。

    获得一个bash的shell

    找到之后cat即可

    自己写了一个。。发现py直接input就可了

    warmup

    abs函数是取绝对值的意思。所以不可能小于0。考虑abs负数溢出。就是2的31次方。直接写脚本传就可

    backdoor

    字符串查看到sh,跟入

    继续跟

    bash后门

    查看buf到r的位置

    编写脚本溢出即可

    其他pwn题本菜不会,pwn题可以参考某大佬,应该是ak了pwn题的:

    https://www.cnblogs.com/z2yh/p/13771942.html
    合天智汇:合天网络靶场、网安实战虚拟环境
  • 相关阅读:
    安装kafka
    linux安装jdk
    rabbitmq
    企业级docker镜像仓库----Harbor高可用部署
    kubernetes基础概念理解
    kubeadm安装kubernetes集群v1.14.3
    salt-stack深入学习
    salt-stack的数据系统Pillars
    salt-stack的数据系统Grains
    salt-stack
  • 原文地址:https://www.cnblogs.com/hetianlab/p/13986403.html
Copyright © 2011-2022 走看看