izer_0@ctfshow萌新赛

admin 2022年1月5日23:06:41评论40 views字数 4411阅读14分42秒阅读模式

>

>

izer_0@ctfshow萌新赛

izer_0

Web

萌新赛web_签到题
system只用了..来拼接我们输入的字符串
直接?url=;ls;
得到flag文件
cat flag就行了

萌新赛web_给她
根据题目提示git源码泄露
得到hint.php
可以发现是考察sprintf格式化字符串没做检查造成的漏洞(https://paper.seebug.org/386/)
构造payload=?name=admin&pass=%1$'+or+1=1%23
name就盲猜
pass的%1$用来吃掉单引号被addslashes转换成\'的\即可逃逸单引号 '
+会被urlencode编码为空格
#网页有特殊的用途所以要手动urlencode为%23
跳转得到
izer_0@ctfshow萌新赛
好的404重启题目...
屁一开始没仔细看给坑了
问群里师傅得到提示让我仔细看(感谢各位师傅)
可以发现注释有说flag的位置,还有cookie的file
解16进制可以发现是flag.txt
很明显是用来读取文件的,试试自己构造/flag
16进制转码后的传过去发现提示not has flag
在随便构造发现报错得到是
函数file_get_contents()来读的文件
那么用伪协议
一开始用的php://input
发现没用,查后发现原因
izer_0@ctfshow萌新赛
那么转用php://filter/read=convert.base64-encode/resource=xxx.php
提示not has base64
说明是可以的但过滤了字符串base64,那就换个过滤器(再次感谢群里师傅提醒)
php://filter/read=string.rot13/resource=/flag
得到rot13后的flag
网上在线解密回来即可(ROT13在线:https://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php)

Crypto

萌新赛密码学_签到题
Ao(mgHXE)AN2PSBOu3qI0o
开头的Ao(mg就是flag base85编码后的结果
直接在线https://www.qtool.net/baseencode得到flag

萌新赛密码学_抱我
抱我??
群主出的题!!!
盲猜36d

钉提交成功下一题

分析源码可以发现就是
大循环299次每次随机从[0,36]之间选个数字
再从cssting取出对应位置的字符添加到密文中
接着进入小循环10次
随机从[0, len(key) - 1]选个数字
再从key取出对应位置的字符添加到密文中
一次大循环得到11位的密文,其中第一个都是密钥,是要提取仍掉的
直接上代码

def decode(cipher):
    deCipher = ''
    for i in range(1,len(cipher),11):
        deCipher+=cipher[i:i+10]
    return deCipher

print(decode(cipher))

就可以得到乱序的flag,词频统计一下(在线http://www.aihanyu.org/cncorpus/CpsTongji.aspx)
izer_0@ctfshow萌新赛
抛开flag{}就只剩36d了
flag直接就出来了

萌新赛密码_妈呀,完了
2进制转为字符串
#二进制转字符串

int_ ="01000100010100110111100100110011010010100111100101001011011101100101000001000011010100000110110101001000001101000101011101000011011110100010101101010100011010000101011101101001001100100100011001100111010010110110111100111001011001010101001101010000010101010011010001100101001101010110011100101011011010100101101001010101001100110100011001110010010101110100111001110110010011000100110100110101001101010110101101000101011001100011000101101000010001010110110101001110011100100111010100101011010011100100010100110011"
str_= ",".join([str(int(int_[i:i+8],2)) for i in range(0,len(int_),8)])
print(str_)

得到
DSy3JyKvPCPmH4WCz+ThWi2FgKo9eSPU4e5g+jZU3FrWNvLM55kEf1hEmNru+NE3
分析一下是64位
emm这时候就需要去群里拿小本本记录大佬们的发言
最后36D群主说了密钥为20121221
也解释可妈呀,完了的意思,
图是用来让我们向玛雅这边想出这密钥的
有密文和密钥,而且有+号那么就是非对称那边猜了
最后AES在线解密出得
解密网站:http://tool.chacuo.net/cryptaes(不知道偏移量所以加密模式选择ECB,还有字符集需要选择为utf8)

杂项

萌新赛杂项_签到
打开网页源码可以看到异常的行标号
izer_0@ctfshow萌新赛
右键另存为下载html源码
16进制查看可以看到尾部有一串20 09
重复的两个数可以先联想到二进制
把20转为0,09转为1
转为字符串得到一串摩尔斯密码
http://www.zhongguosou.com/zonghe/moersicodeconverter.aspx(摩尔斯在线解密)
摩尔斯解密得到一串16进制数
最后转为字符则可得到flag

萌新赛杂项_千字文
下载转png后缀打开发现是二维码,直接扫没结果
用Stegsolve找plane 0 发现有好多好多的二维码
izer_0@ctfshow萌新赛
可以用ps等分划出来https://jingyan.baidu.com/article/59703552817b468fc00740c4.html
把水平划分和垂直划分设置为25(二维码大小为625可等分为25*25)
另存为web格式
izer_0@ctfshow萌新赛
或者用代码来整

from PIL import Image

image = "solved.png"
img = Image.open(image)

index=0
for i in range(25):
	for j in range(25):
		box = (25*i,25*j,25+25*i,25+25*j)
		img.crop(box).save('./png/'+str(index)+'.png')
		index+=1

最后在用微微二维码批量(群里有)扫描得到内容
打开自动保存的csv文件发现真的是千字文(哇哦)
往下划就发现flag啦

萌新赛杂项_qrcode
解压的到一串二进制结合题目很明显是要我们把二进制转为二维码
直接上代码

from PIL import Image
x = 25
y = 25
im = Image.new('RGB', (x, y))
white = (255, 255, 255)
black = (0, 0, 0)
text="0101***"#二维码的二进制
index=0
for i in range(x):
    for j in range(y):
        if text[index] == '1':
        	im.putpixel((i, j), black)
        	index+=1
        else:
        	im.putpixel((i, j), white)
        	index+=1
im.save("QRcode.jpg")

二维码只有黑白两色,rgb的颜色:黑(255,255,255)和白(0,0,0)对应二进制的1和0
行和高都为25(可以看下二进制数一共是有625个)
得到二维码图片后需要放大才能用工具扫出来
扫完便可得到flag了

萌新赛杂项_萌新福利
一波梭哈分析没任何发现,
直接解压show.zip出得到show.bin
用16进制查看(HxD或Winhex还有010editor都行)
emm看不懂的16进制
水群去发现36D群主说了取反
噢噢噢取反,这么说就简单明了了嘛
百度走起
输入python 取反
izer_0@ctfshow萌新赛
既然show.bin是取反后的结果那么反过来得到源码就行了

import struct
list_=[]
with open("show.bin",'rb') as f:
	list_ = f.read()
	
list_s=[]
for i in list_:
	if i == 0:
		list_s.append(i)
	else:
		list_s.append((i^255)+1)
		
with open("flag.mp4","wb") as f:
	for i in list_s:
		a = struct.pack('B', i)
		f.write(a)

直接.mp4是取反后发现头部的
izer_0@ctfshow萌新赛
其实在分析show.bin的时候就可以发现头部第一行的前三字节和后四字节都为00了,
然而我只知道mp4有这种格式头
如果有师傅还知道有别的特征请务必分享下,双手合十感谢
最后听个十几二十遍小姐姐的语音差不多就知道flag了


izer_0

密码题妈呀的代码写错了,第二行的","多了个逗号抱歉- -
修改下:

int_ ="01000100010100110111100100110011010010100111100101001011011101100101000001000011010100000110110101001000001101000101011101000011011110100010101101010100011010000101011101101001001100100100011001100111010010110110111100111001011001010101001101010000010101010011010001100101001101010110011100101011011010100101101001010101001100110100011001110010010101110100111001110110010011000100110100110101001101010110101101000101011001100011000101101000010001010110110101001110011100100111010100101011010011100100010100110011"
str_= "".join([str(int(int_[i:i+8],2)) for i in range(0,len(int_),8)])
print(str_)

admin

不是mp4格式的,是m4a格式


izer_0

感谢admin师傅的提醒
可以在这看到各种ftype对应的文件类型(http://www.ftyps.com/)
萌新福利的题取反后头文件的ftype为m4a那么对应也是m4a的文件了
izer_0@ctfshow萌新赛

怪不得我整的mp4也能听


  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月5日23:06:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   izer_0@ctfshow萌新赛https://cn-sec.com/archives/719928.html

发表评论

匿名网友 填写信息