更新日期:2022年12月6日
青少年CTF训练平台MIsc—Easy部分的WP
有错误请在评论区指出,万分感谢!!!
个人博客:https://www.st1ck4r.top/
(~ ̄▽ ̄)~
考点:与熊论道解密
在线解密:http://hi.pcmoe.net/

考点:百家姓编码,16进制转文本
使用百家姓在线解码解出来一段16进制文本
使用在线16进制转文本进行转换获得flag。

考点:流量包分析,图片隐写
解压附件后得到一个流量包,打开并导出shanghao.zip

解压shanghao.zip,得到一张图片

使用010editor打开图片,翻到最下面发现字符串,猜测为图片隐写密码。

使用steghide工具将隐写的文件提取出来,即可获得flag。


考点:文件读取
下载附件解压,打开文件即可获得flag。

考点:文件读取
跟上题一样。

考点:压缩包密码爆破,伪加密,新佛曰,base64,base32,16进制转文本,凯撒密码,密码字典生成,图片隐写
提示密码为生日,使用压缩包密码爆破工具破解。

解压获得flag1,flag2.zip和flag3.zip
将flag2.zip用010editor打开,修改下面两处数字,去除压缩包伪加密。

解压flag2.zip,获得两个文本。


将flag2.txt进行新佛曰解密

接着依次进行base64,base32,16进制转文本获得第二段flag。



将密码.txt进行凯撒密码解密。

在位移4处获得正确密文。
使用python脚本生成压缩包密码字典。
for i in range(1000):
if i<10:
i = '00'+str(i)
elif 10<=i and i<100:
i ='0'+str(i)
else:
i=str(i)
with open('1.txt', 'a') as f:
f.write('qsnctf'+i+"\n")
f.close()
使用字典进行爆破flag3.zip。

解压后为一张图片,

使用010editor打开,发现压缩包。

将图片后缀改为zip,然后解压打开获得flag3,将三段flag拼起来提交即可。(其实在我打码的地方就能看到flag3,这步就当走个流程)。

考点:F12

f12查看源代码看到加密文本。

base64解两次码获得flag。

考点:迷宫
将附件解压,得到一张迷宫的图片,用画图工具手工连接,然后将路上的图表和字相对应。


按顺序打出,然后根据题目要求换成全拼,加上图片里的前缀cazy{}提交即可。
考点:流量分析,base64,base64转换binary,拼图
下载附件用wireshark打开流量包,选择导出http对象,按大小排序后可以看到一个格外大的txt文本。

保存后打开发现是base64,在网站进行解码发现是一个压缩包。


将文本导入winhex,运用脚本转换为zip文件。

将zip文件解压得到十几张图片。

使用PS拼图得到flag(这里拿Montage(蒙太奇)好像也能拼,但是我太菜了拼了好几次都成没成功,只能采取笨办法了)。

附上一张原图(希望疫情能早点结束):

考点:文件属性查看
下载附件解压后得到十几张末心心P的表情包(?),挨个查看附件属性,就能找到flag(提示:跟Flag有关哦)。

考点:拼图
折磨!!!!直接放原图(某次群聊打电话的截图):

考点:流量取证,mimikatz
先对流量包进行分离,得到一个加密的压缩包,提示是administrator的秘密

猜测需要得到administrator的密码,重新分析流量包,导出http对象,将最大的bmp文件导出。
Tips:dmp文件是windows系统中的错误转储文件,当Windows发生错误蓝屏的时候,系统将当前内存【含虚拟内存】中的数据直接写到文件中去,方便定位故障原因。
(里面包含主机用户密码信息)

使用mimikatz分析.dmp文件,双击启动mimikatz.exe(x64(记得添加信任或者关闭杀毒软件,要不然就被杀掉了))并依次执行以下命令:
//提升权限
privilege::debug(网上抄的,不知道有啥用,我这里执行会报错,但是不影响下面的操作)
//载入dmp文件
sekurlsa::minidump lsass.dmp
//读取登陆密码
sekurlsa::logonpasswords full

将administrator的密码作为压缩包密码解压即可得到flag。

考点:基础文件操作
使用010editor打开往下翻翻就能看到flag…

考点:火狐取证
太菜了不会做,WP奉上。https://blog.csdn.net/weixin_45791884/article/details/118707262
考点:base32,LSB,3DES
解压src.zip,在index.html中找到base32数据,解码得到一个假的flag。


接下来分析那张png图片,用stegsolve打开在0通道发现base64数据

看到U2Fsd开头首先想到AES,但AES需要密钥,将之前解码得到的假flag当作密钥进行解密,并未解密出明文,转而想到DES,经过多次尝试,最终发现加密方式为3DES。


考点:Markdown
打开md文件获得flag。

考点:USB流量分析
解压附件获得一个流量包和exe文件,exe文件打开需要输入密码,先跳过。用wireshark打开流量包,发现是usb流量。

根据题目描述,推测为键盘的usb流量,添加过滤条件**usb.src==“1.8.1”**进行过滤,, 然后导出特定分组并生成一个新的流量包。



使用大佬的usb流量分析脚本进行分析即可获得密码。

打开exe文件输入密码即可获得flag。

下面附上大佬的脚本(github项目地址):
#!/usr/bin/env python
import sys
import os
DataFileName = "usb.dat"
presses = []
normalKeys = {"04":"a", "05":"b", "06":"c", "07":"d", "08":"e", "09":"f", "0a":"g", "0b":"h", "0c":"i", "0d":"j", "0e":"k", "0f":"l", "10":"m", "11":"n", "12":"o", "13":"p", "14":"q", "15":"r", "16":"s", "17":"t", "18":"u", "19":"v", "1a":"w", "1b":"x", "1c":"y", "1d":"z","1e":"1", "1f":"2", "20":"3", "21":"4", "22":"5", "23":"6","24":"7","25":"8","26":"9","27":"0","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t","2c":"<SPACE>","2d":"-","2e":"=","2f":"[","30":"]","31":"\\","32":"<NON>","33":";","34":"'","35":"<GA>","36":",","37":".","38":"/","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}
shiftKeys = {"04":"A", "05":"B", "06":"C", "07":"D", "08":"E", "09":"F", "0a":"G", "0b":"H", "0c":"I", "0d":"J", "0e":"K", "0f":"L", "10":"M", "11":"N", "12":"O", "13":"P", "14":"Q", "15":"R", "16":"S", "17":"T", "18":"U", "19":"V", "1a":"W", "1b":"X", "1c":"Y", "1d":"Z","1e":"!", "1f":"@", "20":"#", "21":"$", "22":"%", "23":"^","24":"&","25":"*","26":"(","27":")","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t","2c":"<SPACE>","2d":"_","2e":"+","2f":"{","30":"}","31":"|","32":"<NON>","33":"\"","34":":","35":"<GA>","36":"<","37":">","38":"?","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}
def main():
# check argv
if len(sys.argv) != 2:
print("Usage : ")
print(" python UsbKeyboardHacker.py data.pcap")
print("Tips : ")
print(" To use this python script , you must install the tshark first.")
print(" You can use `sudo apt-get install tshark` to install it")
print("Author : ")
print(" WangYihang <wangyihanger@gmail.com>")
print(" If you have any questions , please contact me by email.")
print(" Thank you for using.")
exit(1)
# get argv
pcapFilePath = sys.argv[1]
# get data of pcap
os.system("tshark -r %s -T fields -e usb.capdata 'usb.data_len == 8' > %s" % (pcapFilePath, DataFileName))
# read data
with open(DataFileName, "r") as f:
for line in f:
presses.append(line[0:-1])
# handle
result = ""
for press in presses:
if press == '':
continue
if ':' in press:
Bytes = press.split(":")
else:
Bytes = [press[i:i+2] for i in range(0, len(press), 2)]
if Bytes[0] == "00":
if Bytes[2] != "00" and normalKeys.get(Bytes[2]):
result += normalKeys[Bytes[2]]
elif int(Bytes[0],16) & 0b10 or int(Bytes[0],16) & 0b100000: # shift key is pressed.
if Bytes[2] != "00" and normalKeys.get(Bytes[2]):
result += shiftKeys[Bytes[2]]
else:
print("[-] Unknow Key : %s" % (Bytes[0]))
print("[+] Found : %s" % (result))
# clean the temp data
os.system("rm ./%s" % (DataFileName))
if __name__ == "__main__":
main()
考点:base64
把密文放在cyberchef上自动解密就出来了。

考点:社工
第一层:


百度识图,获得酒店名称。

第二层:


依旧是百度识图,找到一篇文章,获得酒吧名

Tips:
由于题目已经告诉我们密码为全英文大写,这里直接爆破也可以。

第三层:


在图片3.jpg的图片属性中可以看到经纬度。

根据图片的经纬度进行坐标反查(不需要很精细,取第一个数字即可)。

可得出拍摄地为鄂尔多斯市,换成拼音解压即可获得flag。
Tips:
也可利用工具(例如LocaSpaceViewer)提取出图片精确的经纬度。


考点:base64
base64解密后点击加群链接加群,在群文件里放着(真正的签到题!!!)。

欢迎加入青少年CTF:797842833(QQ群)
考点:文件逆序,二维码批量扫描,base64,base64换表
下载附件得到一个压缩包,进行解压会报错,用010editor打开压缩包,发现文件头在末尾。

编写脚本进行逆序:
s=open("从尾到头.zip","rb").read()[::-1]
a=open("从尾到头1.zip","wb")
a.write(s)
a.close()
解压逆序后的压缩包,里面有三十多张二维码,手动或者编写脚本进行批量扫描:
import cv2
import pyzbar.pyzbar as pyzbar
for i in range(1,32):
qrcode = cv2.imread(str(i)+'.png')
data = pyzbar.decode(qrcode)[0].data.decode("utf-8")
with open('qrcode.txt','a') as f:
f.write(data)
f.close()
查看文本发现为base64密文,进行解密得到一串意义不明的文本,先放到一边。

用010editor打开galf.zip文件,发现情况跟第一个压缩包情况一样都是逆序,复用之前的脚本,修复后解压。

发现需要密码,将之前放到一边的文本作为密码进行解压获得flag.txt,这时候提交显示flag错误,将flag中的内容进行解密得到真正的flag。


考点:压缩包密码爆破,图片隐写
解压需要密码,题目提示6位,盲猜密码为qsnctf(拿爆破工具也能爆出来)。

解压出一张图片,用010editor打开,修改图片高度,保存后在此查看图片,发现flag。


考点:base64隐写
解密脚本:
d='''STJsdVkyeDFaR1U4YVc5emRISmxZVzArQ2c9PQ1=
STJsdVkyeDFaR1U4YzNSeWFXNW5QZ289DQ==
STJsdVkyeDFaR1U4WTNOMGNtbHVaejRLDV==
STJsdVkyeDFaR1U4WTNOMFpHbHZQZ289DQ==
STJSbFptbHVaU0J0WVhodUlEazVPUW89Dd==
Q2c9PQ1=
ZFhOcGJtY2dibUZ1WlhOd1lXTmxJSE4wWkRzSw1=
Q2c9PQ0=
WTJoaGNpUmpZVnR0WVhodVhTd2dZMkpiYldGNGJsMDdDZz09DU==
Q2c9PQ1=
YVc1MElHTnRjQ2h6ZEhKcGJtY2dZU3dnYzNSeWFXNW5JR2lwQ2c9PQ2=
ZXdvPQ1=
SUNBZ3lHbG1LR3V1YzJsNlpTZ3BJRDRnWWk1emFYcGxLQ2twQ2c9PQ3=
SUNBZ0lDbWdJb0J5WlhSMWNtNGdNVHNLDb==
SUNBZ0lHVnNjMlVnYVdZb1lTNXphWHBsS0NrZ1BDQmlMbk5wZW1Vb0tTa0sN
SUNBZ0lDQWdJQ0J5WlhSMWNtNGdMVEU3Q2c9PQ0=
SUNBZ0lHVnNjMlVLDd==
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0JtYjNJb2FXNTBJR2tnUFNBd095QnBJRHdnWVM1emFYcGxLQ2s3SUdrckt5a0sN
SUNBZ2lDQWdJQ2I3Q2c9PQ2=
SUNBZ1lDQWdJQ1FnSUNBZ2FXWW9ZVnRwWFNBOElHSmJhVjBwQ2c9PQ1=
SUNBZ0lDYWdJY0FnSUNBZ0lDYWdJSEpsZEhWeWJpYXRNVHNLDY==
SUNBZ1lDQWdJQ1FnSUNBZ2FXWW9ZVnRwWFNBK1lHSmJhVjBwQ2c9PQ1=
SUNBZ0lDXWdJX0FnSUNBZ0lDXWdJSEpsZEhWeWJpXXhPd289DX==
SUNBZ0lDQWdJQ0I5Q2c9PQ0=
SUNBZ0lDdWdJd0J5WlhSMWNtNGdNRHNLDd==
SUNBZ0lIMEsN
ZlFvPQ2=
Q2c9PQ1=
ZG05cFpDQnlaWE5sZEdFb2MzUnlhVzVuSUdFcENnPT0N
ZXdvPQ1=
SUNBZ1lHMWxiWE5sZENoallTd3dMSE5wZW1WdlppaGpZU2twT3dvPQ1=
SUNBZ2lHWnZjaWhwYm5RZ2FTQTlJREE3SUdrZ1BDQmhMbk5wZW1Vb2tUc2dhU3NyS1FvPQ2=
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0JqWVZ0cFhTQTlJR0ZiWVM1emFYcGxLQ2t0TVMxcFhTQXRJQ2N3SnpzSw0=
SUNBZ0lIMEsN
ZlFvPQ2=
Q2c9PQ0=
ZG05cFpDQnlaWE5sZEdJb2MzUnlhVzVuSUdJcENnPT0N
ZXdvPQ3=
SUNBZ1lHMWxiWE5sZENoallpd3dMSE5wZW1WdlppaGpZaWtwT3dvPQ1=
SUNBZ0lHWnZjaWhwYm5RZ2FTQTlJREE3SUdrZ1BDQmlMbk5wZW1Vb0tUc2dhU3NyS1FvPQ0=
SUNBZ0lIc0sN
SUNBZ1lDQWdJQ1JqWWx1cFhTQTlJR1piWWk1emFYcGxLQ2t1TVMxcFhTQXRJQ2N3SnpzSw1=
SUNBZ1lDQWdJQ1F2TDNCeWFXNTBaaWdpSldRaUxHTmlXMmxkS1RzSw1=
SUNBZ0lIMEsN
ZlFvPQ3=
Q2c9PQ3=
YzNSeWFXNW5JR1ZrWkNoemRISnBibWNnWVN3Z2MzUnlhVzVuSUdJcEx5L2xpcURtczVVSw1=
ZXdvPQ2=
SUNBZ0lISmxjMlYwWVNoaEtUc3ZMK2FLaXVhdmorUzRnT1M5amVXdG1PZWFoT1d0bCtlc3B1V1BtT2FJa09hVnNPV3RseXpsdWJia3VKVG1pb3JtbGJEbnU0VGxqNDNvdjRmbW5hWGt2ci9rdW83bGtJN3BuYUxrdUkzbGtJemt2WTNtbGJEbm03amxpcUFLDW==
SUNBZ0lISmxjMlYwWWloaUtUc0sN
SUNBZ0lHWnZjaWhwYm5RZ2FTTTlJREE3SUdrZ1BDTnRZWGh1T3lCcEt5c3BDZz09DT==
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0JqWVZ0cFhTQTlJR05oVzJsZElDc2dZMkpiYVYwN0NnPT0N
SUNBZ0lDQWdJQ0JwWmloallWdHBYU0ErUFNBeUtYc0sN
SUNBZ0lDTWdJT0FnSUNBZ1kyRmJhU3N4WFNBclBTTXhPd289DT==
SUNBZ0lDQWdJQ0FnSUNBZ1kyRmJhVjBnTFQwZ01qc0sN
SUNBZ0lDQWdJQ0I5Q2c9PQ0=
SUNBZ0lIMEsN
SUNBZ0lHSnZiMndnWm14aFp5QTlJSFJ5ZFdVN0NnPT0N
SUNBZ3lITjBjbWx1WnlCaklEMGdJaUk3Q2c9PQ3=
SUNBZ0lHWnZjaWhwYm5RZ2FTQTlJRzFoZUc0Z0xTQXhPeUJwSUQ0OUlEQTdJR2t0TFNrSw0=
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0JwWmlobWJHRm5JQ1ltSUdOaFcybGRJRDA5SURBcENnPT0N
SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN0NnPT0N
SUNBZ0lDQWdJQ0JwWmloallWdHBYU0FoUFNBd0tRbz0N
SUNBZ0lDcWdJc0FnSUNBZ1pteGhaeUE5SUdaaGJITmxPd289Dc==
SUNBZ2lDQWdJQ2JqSUNzOUlDaGpZVnRwWFNBcklDY3dKeWs3Q2c9PQ2=
SUNBZ0lDQWdJQ0F2TDNCeWFXNTBaaWdpSldRaUxHTmhXMmxkS1RzSw0=
SUNBZ0lIMEsN
SUNBZ0lHbG1LR1pzWVdjcENnPT0N
SUNBZ1lDQWdJQ1J5WlhSMWNtNGdJakFpT3dvPQ1=
SUNBZ0lHVnNjMlVLDX==
SUNBZ0lDdWdJd0J5WlhSMWNtNGdZenNLDd==
ZlFvPQ0=
Q2c9PQ0=
YzNSeWFXNW5JRzFwYm5Vb2MzUnlhVzVuSUdFc0lITjBjbWx1WnlCaUtTOHY1WWVQNXJPVkNnPT0N
ZXdvPQ0=
SUNBZ0lHbHVkQ0J6YVdkdUlEMGdNRHNLDQ==
SUNBZ0lHbG1LR050Y0NoaExDQmlLU0E5UFNBdE1Ta3ZMMkhrdUszbHVwVG9yNlhsclpqb3ZvUGxwS2ZubW9UcGdxUGt1S3JtbGJBSw0=
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0J6YVdkdUlEMGdNVHNLDQ==
SUNBZ0lDQWdJQ0J6ZEhKcGJtY2dkR1Z0Y0NBOUlHRTdDZz09DQ==
SUNBZ0lDQWdJQ0JoSUQwZ1lqc0sN
SUNBZ0lDQWdJQ0JpSUQwZ2RHVnRjRHNLDQ==
SUNBZ0lIMEsN
SUNBZ0lISmxjMlYwWVNoaEtUc0sN
SUNBZ0lISmxjMlYwWWloaUtUc0sN
SUNBZ0lHWnZjaWhwYm5RZ2FTQTlJREE3SUdrZ1BDQnRZWGh1T3lCcEt5c3BDZz09DQ==
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0JwWmloallWdHBYU0E4SUdOaVcybGRLWHNLDQ==
SUNBZ0lDQWdJQ0FnSUNBZ1kyRmJhU3N4WFNBdFBTQXhPd289DQ==
SUNBZ0lDQWdJQ0FnSUNBZ1kyRmJhVjBnS3owZ01qc0sN
SUNBZ0lDQWdJQ0I5Q2c9PQ0=
SUNBZ0lDQWdJQ0JqWVZ0cFhTQTlJR05oVzJsZElDMGdZMkpiYVYwN0NnPT0N
SUNBZ0lIMEsN
SUNBZ0lHSnZiMndnWm14aFp5QTlJSFJ5ZFdVN0NnPT0N
SUNBZ0lITjBjbWx1WnlCa0lEMGdJaUk3Q2c9PQ0=
SUNBZ0lHWnZjaWhwYm5RZ2FTQTlJRzFoZUc0Z0xTQXhPeUJwSUQ0OUlEQTdJR2t0TFNrSw0=
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0JwWmlobWJHRm5JQ1ltSUdOaFcybGRJRDA5SURBcENnPT0N
SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN0NnPT0N
SUNBZ0lDQWdJQ0JwWmloallWdHBYU0FoUFNBd0tRbz0N
SUNBZ0lDQWdJQ0FnSUNBZ1pteGhaeUE5SUdaaGJITmxPd289DQ==
SUNBZ0lDQWdJQ0JrSUNzOUlDaGpZVnRwWFNBcklDY3dKeWs3Q2c9PQ0=
SUNBZ0lDQWdJQ0F2TDNCeWFXNTBaaWdpSldRaUxHTmhXMmxkS1RzSw0=
SUNBZ0lIMEsN
SUNBZ0lHbG1LR1pzWVdjcENnPT0N
SUNBZ0lDQWdJQ0J5WlhSMWNtNGdJakFpT3dvPQ0=
SUNBZ0lHVnNjMlVLDQ==
SUNBZ0lDQWdJQ0J5WlhSMWNtNGdaRHNLDQ==
ZlFvPQ0=
Q2c9PQ0=
YzNSeWFXNW5JRzExYkNoemRISnBibWNnZUN3Z2MzUnlhVzVuSUhrcEx5OXo1TGk2NTZ5bTVZKzM1TDJOQ2c9PQ0=
ZXdvPQ0=
SUNBZ0lHbHVkQ0JzWlc1NElEMGdlQzV6YVhwbEtDazdDZz09DQ==
SUNBZ0lHbHVkQ0JzWlc1NUlEMGdlUzV6YVhwbEtDazdDZz09DQ==
SUNBZ0lHbG1LR3hsYm5nZ1BUMGdNU2tLDQ==
SUNBZ0lIc0sN
SUNBZ0lDQWdJQ0F2TDJOdmRYUThQSGc4UENJZ0lDQWlQRHg1UER4bGJtUnNPd289DQ==
SUNBZ0lDQWdJQ0JwWmloNElEMDlJQ0l4SWlBbUppQjVJRDA5SUNJeElpa0sN
SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNJeElqc0sN
SUNBZ0lDQWdJQ0JsYkhObENnPT0N
SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNJd0lpQTdDZz09DQ==
SUNBZ0lIMEsN
Q2c9PQ0=
SUNBZ0lDOHZjSEpwYm5SbUtDSWxaQzB0SldSY2JpSXNiR1Z1ZUN4c1pXNTVLVHNLDQ==
Q2c9PQ0=
SUNBZ0lITjBjbWx1WnlCaExDQmlMQ0JqTEdRN0NnPT0N
SUNBZ0lHRWdQU0I0TG5OMVluTjBjaWd3TENCc1pXNTRMeklwT3dvPQ0=
SUNBZ0lHSWdQU0I0TG5OMVluTjBjaWhzWlc1NEx6SXNJR3hsYm5ndk1pazdDZz09DQ==
SUNBZ0lHTWdQU0I1TG5OMVluTjBjaWd3TENCc1pXNTVMeklwT3dvPQ0=
SUNBZ0lHUWdQU0I1TG5OMVluTjBjaWhzWlc1NUx6SXNJR3hsYm5rdk1pazdDZz09DQ==
SUNBZ0lIQnlhVzUwWmlnaUpXUXRMU1ZrTFMwbFpDMHRKV1F0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMU1ZrTFNWa1hHNGlMR0V1YzJsNlpTZ3BMQ0JpTG5OcGVtVW9LU3dnWXk1emFYcGxLQ2tzSUdRdWMybDZaU2dwTENCNExuTnBlbVVvS1N3Z2VTNXphWHBsS0NrcE93bz0N
SUNBZ0lDOHZZMjkxZER3OGVEdzhJam9pUER4aFBEd2lJQ0k4UEdJOFBDSWdJanc4WXp3OElpQWlQRHhrUER4bGJtUnNPd289DQ==
SUNBZ0lITjBjbWx1WnlCaFl5QTlJRzExYkNoaExDQmpLVHNLDQ==
SUNBZ0lITjBjbWx1WnlCaVpDQTlJRzExYkNoaUxDQmtLVHNLDQ==
SUNBZ0lDOHZZMjkxZER3OGVEdzhJam9pUER4aFl6dzhJaUFpUER4aVpEdzhaVzVrYkRzSw0=
Q2c9PQ0=
SUNBZ0lITjBjbWx1WnlCaFlpQTlJRzFwYm5Vb1lTd2dZaWs3THk5aExXSUsN
SUNBZ0lITjBjbWx1WnlCalpDQTlJRzFwYm5Vb1pDd2dZeWs3Q2c9PQ0=
SUNBZ0lDOHZZMjkxZER3OGVEdzhJam9pUER4aFlqdzhJaUFpUER4alpEdzhaVzVrYkRzSw0=
Q2c9PQ0=
SUNBZ0lITjBjbWx1WnlCaFltTmtJRDBnYlhWc0tHRmlMQ0JqWkNrN0NnPT0N
SUNBZ0lDOHZZMjkxZER3OGVEdzhJam9pUER4aFltTmtQRHhsYm1Sc093bz0N
Q2c9PQ0=
SUNBZ0lITjBjbWx1WnlCbWFYSnpkQ0E5SUdGak93bz0N
SUNBZ0lHWnZjaWhwYm5RZ2FTQTlJREE3SUdrZ1BDQW9iR1Z1ZUNrN0lHa3JLeWtLDQ==
SUNBZ0lDQWdJQ0JtYVhKemRDQXJQU0FpTUNJN0NnPT0N
SUNBZ0lDOHZZMjkxZER3OFlXTThQQ0lnTFMwdExTMWhZeTB0TFMwZ0lqdzhabWx5YzNROFBHVnVaR3c3Q2c9PQ0=
Q2c9PQ0=
SUNBZ0lITjBjbWx1WnlCelpXTnZibVFnUFNCaFpHUW9ZV0pqWkN3Z1lXTXBPd289DQ==
SUNBZ0lITmxZMjl1WkNBOUlHRmtaQ2h6WldOdmJtUXNJR0prS1RzSw0=
SUNBZ0lHWnZjaWhwYm5RZ2FTQTlJREE3SUdrZ1BDQW9iR1Z1ZUM4eUtUc2dhU3NyS1FvPQ0=
SUNBZ0lDQWdJQ0J6WldOdmJtUWdLejBnSWpBaU93bz0N
Q2c9PQ0=
SUNBZ0lITjBjbWx1WnlCbWFXNGdQU0JoWkdRb1ptbHljM1FzSUhObFkyOXVaQ2s3Q2c9PQ0=
SUNBZ0lISmxkSFZ5YmlCaFpHUW9abWx1TENCaVpDazdDZz09DQ==
Q2c9PQ0=
ZlFvPQ0=
Q2c9PQ0=
YVc1MElHMWhhVzRvZG05cFpDa0sN
ZXdvPQ0=
SUNBZ0lITjBjbWx1WnlCNExDQjVPd289DQ==
SUNBZ0lIQnlhVzUwWmlnaTZLKzM2TDZUNVlXbDVMaWs1TGlxNUxxTTZMK2I1WWkyNXBXdzVhMlhPaUFpS1RzSw0=
SUNBZ0lHTnBiajQrZUQ0K2VUc0sN
SUNBZ0lITjBjbWx1WnlCaGJuTWdQU0J0ZFd3b2VDd2dlU2s3Q2c9PQ0=
SUNBZ0lHTnZkWFE4UEdGdWN6c0sN
ZlFvPQ0=
'''
e=d.splitlines()
binstr=""
base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
for i in e :
if i.find("==")>0:
temp=bin((base64.find(i[-3])&15))[2:]
#取倒数第3个字符,在base64找到对应的索引数(就是编码数),取低4位,再转换为二进制字符
binstr=binstr + "0"*(4-len(temp))+temp
#二进制字符补高位0后,连接字符到binstr
elif i.find("=")>0:
temp=bin((base64.find(i[-2])&3))[2:]
#取倒数第2个字符,在base64找到对应的索引数(就是编码数),取低2位,再转换为二进制字符
binstr=binstr + "0"*(2-len(temp))+temp
#二进制字符补高位0后,连接字符到binstr
str=""
for i in range(0,len(binstr),8):
str=str+chr(int(binstr[i:i+8],2))
#从左到右,每取8位转换为ascii字符,连接字符到字符串
print(str)
考点:snow隐写
打开flag文本,全选后发现存在空白部分,猜测为snow隐写(在一同解压出来的那种图片的属性中也能找到提示为snow)。

用snow隐写工具进行解密,出现乱码,猜测需要密码。

返回文本仔细阅读,找到key1,再次进行解密,获得flag。


考点:binwalk,pyc反编译
下载文件解压得到一个exe执行文件,但这题不是考的逆向。

将exe文件用binwalk进行分解,可以获得一个可疑的pyc文件。


利用在线网站进行pyc反编译即可获得flag。

考点:steghide隐写,base64换表
在图片属性中看到出题人名字。

使用steghide分析,密码为出题人名字。

获得flag.txt。

向下翻找,在1200行找到hint。

丢到cyberchef解密。

在Q群查看出题人账号。

考点:社工,英雄联盟赛事

开局一张图,做题全靠搜。
经常看英雄联盟比赛应该知道这个女主持人骆歆,使用谷歌识图进行识别。

看日期知道是2021年8月13日的某一场比赛,百度搜索骆歆。

根据日期推断为夏季赛,继续搜索。

在常规赛第九周找到8月3日,在bilibili搜索该场比赛。

在8分17秒处看到该图片动作,确定前半个flag。
后面的就依次查看即可,在8月6日19:00的比赛上再次看到骆歆。

确定后半flag。
考点:压缩包爆破,掩码攻击
和ctfshow的2022七夕杯Misc部分的海盗的密码题目类似(指除了压缩包密码不同以外其它都一样),可以直接搜索WP进行参考。
下载文件获得一个加密的压缩包,根据提示获得密码线索。

百度搜索索马里的ip。

使用archpr工具的掩码攻击进行爆破。

解压后获得一个flag.zip,点击查看提示压缩包损坏。

使用010Editor打开即可获得flag。

考点:凯撒密码

网站在线解密,位移数为1。

考点:压缩包爆破
下载文件用archpr工具爆破密码。

解压后获得一张图片,查看图片属性获得flag。

考点:zip伪加密,snow隐写,docx文件隐写,lsb隐写,aes解密
下载题目压缩包,解压发现需要密码,使用010Editor打开,发现压缩包为伪加密。


修改01为00,解压这个压缩包,获得docx文件。

在末尾处发现空白行,猜测为snow隐写,将空白部分复制出来并保存为文本,使用snow工具进行解密。


获得aes_key,暂时没用。
将docx文档后缀改为zip并解压。

在word\media\images路径下发现一堆图片。

用Stegsolve工具打开一张图片,在最低有效位下发现密文。

根据之前找到的aes_key猜测为aes加密,使用在线网站进行解密。

获得一个字符f,接着依次解密前几张图片,结果为:flag{
编写批量提取解密脚本:
'''
# @Author: https://github.com/librauee/Steganalysis/blob/master/LSB/get_info.py
# @Date: 2022-12-02 16:08:22
# @LastEditors: St1ck4r
# @LastEditTime: 2022-12-02 17:13:07
# @link: https://www.st1ck4r.top
'''
from PIL import Image
from Crypto.Cipher import AES
import base64
# aes密钥
password = b'welcome_to_misc!'
# AES ECB模式解密
def aesecb(c):
en_text = base64.b64decode(c) #需要加密的内容,bytes类型
aes = AES.new(password,AES.MODE_ECB) #创建一个aes对象
# AES.MODE_ECB 表示模式是ECB模式
den_text = aes.decrypt(en_text) # 解密密文
return den_text.decode().strip(b'\x00'.decode()) # den_text.decode():转化为str类型,strip(b'\x00'.decode()):去除末尾生成的\x00
def mod(x,y):
return x%y
def toasc(strr):
return int(strr, 2)
#le为所要提取的信息的长度,str1为加密载体图片的路径,str2为提取文件的保存路径
def func(le,str1,str2):
b=""
im = Image.open(str1)
lenth = le*8
width,height = im.size[0],im.size[1]
count = 0
for h in range(height):
for w in range(width):
#获得(w,h)点像素的值
pixel = im.getpixel((w, h))
#此处余3,依次从R、G、B三个颜色通道获得最低位的隐藏信息
if count%3==0:
count+=1
b=b+str((mod(int(pixel[0]),2)))
if count ==lenth:
break
if count%3==1:
count+=1
b=b+str((mod(int(pixel[1]),2)))
if count ==lenth:
break
if count%3==2:
count+=1
b=b+str((mod(int(pixel[2]),2)))
if count ==lenth:
break
if count == lenth:
break
# 提取隐藏信息
c=''
for i in range(0,len(b),8):
#以每8位为一组二进制,转换为十进制
stra = toasc(b[i:i+8])
#将转换后的十进制数视为ascii码,再转换为字符串写入到文件中
#print((stra))
c+=chr(stra)
# 写入指定文件
with open(str2,"a",encoding='utf-8') as f:
f.write(aesecb(c))
f.close()
def main():
#文件长度
le = 24
#含有隐藏信息的图片
for i in range(1,167):
new = "new_"+str(i)+".png"
#信息提取出后所存放的文件
get_info = "flag.txt"
func(le,new,get_info)
print("完成信息提取!")
if __name__=='__main__':
main()
获得base64加密的flag。

将flag的值经过6次base64解密即可获得最终flag。

考点:数据逆置,文件头修补,宽高隐写
下载文件解压获得一个压缩包,解压时提示损坏,使用010editor打开发现数据逆置。

编写修复脚本:
a = open('fuck.zip', 'rb')
aa = a.read()
aaa = aa[::-1]
b = open('flag.zip', 'wb')
b.write(aaa)
a.close()
b.close()
解压flag.zip文件,获得一张png图片,但是无法查看,使用010editor查看发现缺少文件头。

将png文件头(89 50 4e 47)补上去.

查看图片发现高度显示不正确。

修改图片高度(不用必须改正确,只要能把文字显示全即可)。

再次查看图片即可获得flag。

考点:兽音解密,base58,16进制转字符,凯撒密码
根据题目提示猜测压缩包密码为《三体》的英文threebody,解压后获得flag密文,然后依次解密。
兽音解密

base58

16进制转字符

凯撒密码

考点:excel,汉明码
懒得写了,直接看WP吧( ̄︶ ̄)
https://blog.csdn.net/qq_43871179/article/details/118310357
考点:文件分离、压缩包爆破,字频统计排序
下载文件解压出一张图片。

使用binwalk分离,得到一个加密压缩包。

使用archpr工具爆破密码。

解压获得加密文本,多次尝试解密无效后,猜测为字频排序,百度随便找个脚本修改运行即可。
list = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- =\\{\\}[]"
cipher = open('./flag.txt').read()
result = {}
for i in list:
counts = cipher.count(i)
i = '{0}'.format(i)
result[i] = counts
res = sorted(result.items(),key=lambda item:item[1],reverse=True)
for data in res:
print(data)
for i in res:
flag = str(i[0])
print(flag[0],end="")
青少年ctf论坛注册回复帖子即可。

考点:图片隐写
010editor查看图片。

考点:16进制位移,0宽隐写,steghide密码爆破
下载附件得到一张图片和一个需要密码的压缩包。

尝试打开图片,未果,使用010editor查看。

取反:
f=open("1.jpg",'rb')
f1=f.read()#二进制形式
with open('flag.jpg','wb') as f2:
for i in f1:
if i==0:
f2.write(bytes([0x0]))
#这里的b是int形式,要转换成bytes时,使用bytes(),且里面的内容需要加[]
else:
f2.write(bytes([0x100-i]))
f.close()
f2.close()
打开生成的图片,获得压缩包密码。

解压后获得两张图和一个txt文本。

3.jpg还是运用刚才的16进制取反脚本即可获得后半段flag。

查看txt文本,提示给出密码,但是需要爆破,猜测为大小写组合爆破。

推测图片2使用steghide隐写。
编写爆破脚本:
import os
def all_casings(input_string):
if not input_string:
yield""
else:
first = input_string[:1]
if first.lower() == first.upper():
for sub_casing in all_casings(input_string[1:]):
yield first + sub_casing
else:
for sub_casing in all_casings(input_string[1:]):
yield first.lower() + sub_casing
yield first.upper() + sub_casing
if __name__ =='__main__':
for x in all_casings("qsnctf"):
os.system("steghide extract -sf 2.jpg -p "+x)
print(x)

查看flag1.txt。

发现0宽隐写。

使用在线网站提取,获得前半部分flag。
0宽解密:http://330k.github.io/misc_tools/unicode_steganography.html

此文章不定时更新…
十四届蓝桥青少组模拟赛Python-20221108T1.二进制位数十进制整数2在十进制中是1位数,在二进制中对应10,是2位数。十进制整数22在十进制中是2位数,在二进制中对应10110,是5位数。请问十进制整数2022在二进制中是几位数?print(len(bin(2022))-2)#运行结果:11T2.晨跑小蓝每周六、周日都晨跑,每月的1、11、21、31日也晨跑。其它时间不晨跑。已知2022年1月1日是周六,请问小蓝整个2022年晨跑多少天?#样例代码1ls=[0,31,28,31,30,31,30,31,31,30,31,30,31]ans=0k=6foriinrange(1,13)
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。我是一名经验丰富的网络开发人员,但只有一点点Ruby/Rails经验。我周一刚在一家Ruby商店接受面试,他们确实意识到我没有太多Ruby经验。除了我手边的2或3本Ruby书籍外,我还可以利用哪些其他资源来参加周末的Ruby速成类。顺便说一下,我在hostingrails上确实有一个最低限度的帐户,尽管我从未使用过它。我没有看到任何其他与搜索“rubyi
我在RubyonRails中创建了一个图书馆风格的系统,我试图想出一种方法来计算逾期天数,同时排除归还借来的项目的周末。现在我只是计算“dayslate”作为截止日期和项目实际退回日期之间的差异,但我想排除周末,因为项目只能在工作日退回。这是我第一次真正体验Ruby和Rails,所以如果我遗漏了一些明显的东西,我深表歉意。感谢大家提供的任何帮助。这是我的“返回”功能的代码:defreturn@product=Product.find(params[:id])today=Date.todaydayslate=today-@product.due_dateif@product.due_da
我的Rails应用程序中有一个DailyQuote模型,它具有股票的日期和价格。数据库中的数据已为此模型捕获,包括周末。周末价格值已设置为0。我想将周六和周日的所有周末价格更改为周五的价格。在Ruby中执行此操作的最佳方法是什么?要确定日期是星期六还是星期日并将其值更改为该周末的星期五? 最佳答案 TFM展示了一种识别星期几的有趣方法:t=Time.nowt.saturday?#=>returnsabooleanvaluet.sunday?#=>returnsabooleanvalue
首先打开环境 查看源码发现有个base64解开后发现是图片源码这让我联想到地址栏中的参数 发现它经过了两次base64编码和一次十六进制编码Base64在线编码解码|Base64加密解密-Base64.usCTF在线工具-Hex在线编码|Hex在线解码|十六进制编码转换(hiencode.com) 解开后发现是图片名 我们反向操作一波查看index.php的源码 696e6465782e706870TmprMlpUWTBOalUzT0RKbE56QTJPRGN3下面传参 进行base64解密 得到源码';die("xixi~noflag");}else{$txt=base64_encod
打开题目,审题。发现题目明确给出登录的用户名为Syclover,并要求我们爆破一个长度为6位纯数字的简单密码,并告诉我们密码开头为774。由此我们知道这是一题非常基础的密码爆破题。打开环境发现存在一个登录界面:我们根据提示输入用户名,密码不妨就随便尝试774,再用BurpUnlimited抓包进行分析: 分析抓到的这个包,发现我们上传的密码好像被前端进行了MD5加密。 进一步验证了我们的猜想。将包发送到BP的Inturuder进行爆破。选择好我们的爆破对象,在Payloads中进行爆破方式的设置,我们选择的是明文爆破(这题也可以进行数字爆破),这时我们通过已知信息用脚本(这里我是用的是C语
内容持续更新中......报考对象C++程序设计组,包括初级(U10,7-10岁学生,约1-4年级),中级(U14,11-14岁学生,约5-8年级),高级(U18,15-18岁学生,约9-12年级)考试时长•C++程序设计组,所有级别均为90分钟;C++程序设计考试组考试范围C++程序设计组考试范围考试所涉及的C++基础知识包括:•基本数据类型及类型转换:整型(int,longlong)、布尔型(bool)、字符型(char)和实型(float,double);•变量与常量,字符与字符串,数组,赋值运算符、算数运算符、逻辑运算符、关系运算符;•顺序结构、分支结构、循环结构程序设计;•函数:定义
目的Python中内置了一个random库,用来产生随机数其内置的算法为梅森算法(MersenneTwister)梅森算法具体内容可见:https://blog.csdn.net/tianshan2010/article/details/83247000我们今天要关心的是破解梅森算法,也就是预测随机数首先简单了解一下什么是梅森算法梅森旋转算法可以产生高质量的伪随机数,并且效率高效,弥补了传统伪随机数生成器的不足。梅森旋转算法的最长周期取自一个梅森素数:由此命名为梅森旋转算法。常见的两种为基于32位的MT19937-32和基于64位的MT19937-64我们注意到一个梅森素数为,也就是说只要超过
Billu_b0x文章目录Billu_b0x前言目标运行环境信息收集漏洞挖掘测试首页SQL注入利用文件包含漏洞获取php源码、passwd文件通过得到的mysql密码登录phpmyadmin继续暴破phpmy目录,文件包含phpmyadmin配置文件获取shell登录index首页,并获得cmdshell和反弹shell找一个可写权限目录,写入菜刀马提升权限查看内核、系统版本,寻找提权exp编译、提权后记前言最近新找到的一个靶场,跟vulnhub靶场渗透思路差不多,不过没有设计到内网的渗透,只是单方面的进行渗透提权,获取对方的主机权限,对于打CTF的小伙伴们还是很有帮助的。但我感觉这次的难度好
攻防世界Misc入门题之坚持60s继续开启全栈梦想之逆向之旅~这题是攻防世界Misc入门题之坚持60s下载附件,一开始我默认用压缩包对jar文件,搞到一解压出来还以为是某个游戏存档,后来才发现是.jar文件。运行.jar程序命令:java-jar文件名这种没用户输入的程序,flag通常要不是完整存在的字符串要不是根据时间推算出来的公式字符串。所以查看源码,用jd-gui打开或直接拉到AndroidKiller中:猜测是完整存在的字符串,如果不是再继续想:搜索flag,打开对应类:有完整的flag,因为题目说坚持60S,所以这里也是在case6处,逻辑上符合。直接提交,直接报错,人傻了,看了wp