xctf新手区misc刷题记录
刚接触ctf不久,感觉挺有意思的,这里记录一下在xctf上刷的比较有趣的misc的writeup和感想吧
gif
link
:https://adworld.xctf.org.cn/task/answer?type=misc&number=1&grade=0&id=5104&page=1
这个题的附件下载之后如下所示,有104张黑白图
看到这个图之后,我的第一反应是不是组成和二维码。。。但是想一下图像数量太少了不对,然后下意识就想到了二进制上面去,话不多说,这里用python把二进制转化成字符串试试看。但是问题是我们无法确认黑是0还是白是0,所以这里分两个记录,代码如下:
flag_bin1 = ""
flag_bin2 = ""
white = open('0.jpg','rb').read()
black = open('1.jpg','rb').read()
for i in range(104):
f = open(str(i)+".jpg",'rb')
if f.read() == white:
flag_bin1 += "0"
flag_bin2 += "1"
else:
flag_bin1 += "1"
flag_bin2 += "0"
flag1 = ""
flag2 = ""
for i in range(13):
flag1 += chr(int(flag_bin1[8*i:8*(i+1)],2))
flag2 += chr(int(flag_bin2[8*i:8*(i+1)],2))
print(flag1)
print(flag2)
输出结果如下所示:
SimpleRAR
link
:https://adworld.xctf.org.cn/task/answer?type=misc&number=1&grade=0&id=5102&page=1
这个题首先把题目给的附件压缩了出来,发现是一个flag.txt文件
看了下txt大小,嗯16字节,看来这里面确实没什么文章了。接着看一下压缩包的大小,发现压缩包有6K大,这里面肯定不简单,于是使用winhex打开这个rar文件,发现了一个secret.png文件名,如下所示:
那现在就需要把这个文件解压出来,这里盲猜是压缩包受损的缘故导致无法解压,然后开始百度rar文件的结构,但是看着好复杂。。然后突然看到网上一个博客做的关于rar文件块的介绍觉得很不错qwq,我这里引用一下,下面两个图摘自https://blog.csdn.net/weixin_42542313/article/details/103653185
看完结构之后然后怎么做内,这里对比一下winhex看到的文件,如下所示,65是上一个块的结束,这里圈出来的三个,前两个应该是校验码,那么后面就应该是块类型了,这里的7A是子块类型,我们将其改为74,文件块类型,对这个进行修复,然后保存。
重新打开这个文件,我们可以看到多了secret.png文件
我们打开一看,哇,又是什么都没有。然后突然想起题目里面给了提示是双图层,然后马上想到ps,这里电脑上没有装ps,然后找了个在线的,把这个图片传上去一看果然有两个图层,但问题是,这两个图层还是白色的(这也太搞了),然后我把这两个图层保存了下来,使用工具stegsolve打开,然后发现这两个图层有内容的,如下所示:
好像然后现在把这个组合好之后扫码就ok了,这就是misc吗,也太搞人了,i了i了。
坚持60s
link
:https://adworld.xctf.org.cn/task/answer?type=misc&number=1&grade=0&id=5103&page=1
这个题附件是一个jar程序,题目也没有给什么提示,二话不说先下下来运行一下。。。。
我吐了,这么真实的吗,这其实是一个随机控制的程序,当长方形的小片片碰撞时候你就会输,题目要求我们坚持60s,然后我翻来覆去试了好久感觉没啥用,感觉是不是要java反编译一下呀,于是我就开始百度了qwq。。。然后发现一款工具叫jd-gui好像很好用,然后下载下来试试,发现这个还是很np的,然后把刚才的那个附件jar放进去反编译一下,然后发现在这个文件里面有东西嗷。
这个flag里面的东西先提交一下,发现不对劲,感觉里面的东西是base64,然后使用base64解密得到DajiDali_JinwanChiji,那最后的flag就是flag{DajiDali_JinwanChiji}了,拿下。
掀桌子
link
:https://adworld.xctf.org.cn/task/answer?type=misc&number=1&grade=0&id=5105&page=1
这个题给了一个字符串c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2
,让你对其解密,首先看一下这个字符串,应该就是16进制没有别的坑,用python跑一下长度是118,嗯可以被2整除,看来多半就是16进制了,然后使用python化成10进制试试看,发现结果都是大于128的,且大部分集中在200多。
看到这个分布马上想到了ascii码,但是ascii码的表示范围是0到127,所以这里应该是加了一些东西,所以我们把这些数可以模128,然后转化成字符串,代码如下:
str1="c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2"
list1 = [chr(int(str1[2*i:2*(i+1)],16)%128) for i in range(len(str1)//2)]
print(''.join(list1))
然后看到输出如下:
ext3
link
:https://adworld.xctf.org.cn/task/answer?type=misc&number=1&grade=0&id=5098&page=1
这个题给了一个附件,有20M,下载下来之后看了一会不知道是什么东西。。。于是看了下题目是ext3???然后就百度一下发现这个ext3是linux的文件系统,啊第一次知道这个,那是不是说明这个文件系统里面有我们想要的flag呢?然后我使用ghex打开这个文件一看,果然里面有很多和flag.txt有关的东西,现在问题来了,我们应该怎么样菜能安装这个文件系统呢,于是我又开始百度了qwq。。。。
然后百度了好久,发现linux使用的命令mount
来挂载这些系统的,这里mount命令参考了https://www.cnblogs.com/leo2li/p/9962244.html。
然后我们可以开始挂载了,如下所示:
flag.txt肯定在这些文件夹里面,但是要是一个一个找肯定得找死,这里我用了locate,sudo updatedb
后直接locate flag.txt
,
然后我们查看文件发现这里面显然是base64编码,然后我们把这个解码得到最后的结果flag{sajbcibzskjjcnbhsbvcjbjszcszbkzj}