在回校后,学校发了这个技术竞赛,但是没有时间去准备(论文害人不浅啊),只在比赛前一星期刷了一下题,所以在比赛中直接就是g了。现在结束了,根据留下来的一些附件和题目进行复盘。
misc
number gamenumber game
打开这个题目后,是一个网站。
我一看是个网站,就想抓包。
但是发现bp抓不到。没办法,只能先去看看他的源代码。
在看代码的时候发现他判断,当roll出来的值等于1337的时候,会弹窗出来flag。
我就想,这哪能硬roll啊,谁roll的出来啊。
于是就在控制台输入代码
var _0x14184c = [0x38, 0x6f, 0x1e, 0x24, 0x1, 0x32, 0x51, 0x45, 0x1, 0x3c, 0x24, 0xb, 0x55, 0x38, 0xa, 0x5d, 0x28, 0x12, 0x33, 0xb, 0x5d, 0x20, 0x1e, 0x46, 0x17, 0x3d, 0x10, 0x2a, 0x41, 0x44, 0x49, 0x1a, 0x31, 0x5a]
, _0x477866 = '';
for (var _0x6698b7 = 0x0; _0x6698b7 < _0x14184c['length']; _0x6698b7++)
_0x477866 += String[_0x38f496(0xd9)](_0x14184c[_0x6698b7] ^ _0x6698b7 + 0x5a);
alert(_0x477866);
一运行,就这样,弹出了flag。
Steins_Gate
这个图片,说实话,刚拿到的时候,我以为是那种crc校验改宽高,搞了一下发现,不行。
然后又在kali试binwalk看看有没有拼接。
这一试,给我带弯了,我搁那看sql数据,试编码,最后发现我就是个小丑,根本就不对。
最后,直接点开图片放大一看,李爸爸的,像素都是文字嘟嘟噜。
于是就猜测是lsb隐写。
因为这每个字都是16*16,且都有口字旁,于是从这个口字下手。
from PIL import Image
im = Image.open('Steins_Gate.png')
pix = im.load()
width = im.size[0]
height = im.size[1]
im1 = Image.new("RGB", (int(width / 16), int(height / 16)))
for i in range(0, width, 16):
for j in range(0, height, 16):
dic = {}
for x in range(i, i + 16):
for y in range(j, j + 16):
r, g, b = pix[x, y]
if (r, g, b) in dic:
dic[(r, g, b)] += 1
else:
dic[(r, g, b)] = 1
sorted_dict = sorted(dic.items(), key=lambda x: x[1], reverse=True)
if sorted_dict[0][0]!=(211, 211, 211):
print(sorted_dict)
im1.putpixel((int(i / 16), int(j / 16)), sorted_dict[0][0])
else:
im1.putpixel((int(i / 16), int(j / 16)), sorted_dict[1][0])
im1.show()
im1.save("output.png")
运行完代码后,出来了图片。
好家伙,终于把这个嘟嘟噜给去了。
然后使用stegsolve工具进行查看。
一看,发现base64的东西,所以赶紧导出来看看。
导出来这个bin文件一看,每个==后面都坤巴带着12字节的乱码。
那肯定不能手动去啊,我手不得抽了啊。
with open('1.bin','rb')as f:
with open('1.txt','wb') as f1:
data=f.read()
for i in range(0,len(data),252):
f1.write(data[i:i+240])
f1.write(b'\n')
脚本一用,过滤一下东西,再输出成txt
然后拿过去base解码。