时间:2025-04-22 13:35
人气:
作者:admin

结果为20211113005552F
查看便笺数据库

结果为5

结果为Edge

结果为道诡异仙

结果为2025/4/10 11:15:29
居然在沙箱里写日记么,日记里有很多重要信息,后面可能会用到

结果为2025/3/3
找到工具目录


结果为2025/3/10 18:44:56
多个维度判断一下,应该是4个

结果为4
查看和ai的聊天记录,同时记录还提到了用密码20240503LOVE来加密磁盘,可以用它解密bitlocker


结果为Tifa-DeepsexV2-7b-Cot-0222-Q8
这个工具默认端口7860,这里没看到有修改端口的配置
结果为7860

结果为3
查看.assets目录可以看到模型后缀是onnx

结果为inswapper_128_fp16.onnx
这下不得不仿真了,同时BitLocker的下面有存相关思维导图

xmind打开时需要把填充关闭,否则你看不到文字,很烂了,可以找到账号和密码

启动服务

浏览器里可以看到过去的访问记录,直接上就行

结果为graph.db

结果为17088
可以现学,或者根据思维导图来写查询MATCH (p:person) WHERE p.name STARTS WITH '白杰' RETURN p.mobile

结果为13215346813
官方wp的时间好像有问题,不动脑啦
MATCH (u:User)-[:HAS_LOGIN]->(l:Login)-[:FROM_IP]->(ip:IP)
MATCH (l)-[:USING_DEVICE]->(d:Device)
WHERE
l.time < datetime('2025-04-14')
AND l.time > datetime('2025-04-06')
AND ip.city <> u.reg_city
AND NOT (u)-[:TRUSTS]->(d)
WITH
u,
collect(DISTINCT ip.city) AS 异常登录城市列表,
collect(DISTINCT d.device_id) AS 未授权设备列表,
count(l) AS 异常登录次数
WHERE size(异常登录城市列表) > 2
RETURN
u.user_id AS 用户ID,
u.real_name AS 姓名,
异常登录城市列表,
未授权设备列表,
异常登录次数
ORDER BY 异常登录次数 DESC;

结果为2
日记里有提到助记词

藏得有点深啊,微软输入法自定义短语

结果为draft
浏览器里有metamask插件,恢复钱包即可
结果为0xd8786a1345cA969C792d9328f8594981066482e9
注意到网络

浏览器里曾查询过

在记录里找到qianqianbi,跳转过去

结果为1000000qianqian

结果为521qianqian

结果为2025/3/24 2:08:36
找到文件

启动服务,然后提问

结果为flag1{you_are_so_smart}

结果为flag2{prompt_is_easy}

结果为flag3{no_question_can_kill_you}
看官方wp吧,太深奥了

结果为2025/4/15 10:11:18
无输入,直接执行
function getFlag() {
let AESUtil = Java.use("com.example.puzzlegame.util.AESUtil").$new();
console.log(AESUtil.decryptFlag());
}
function main() {
Java.perform(() => {
getFlag();
})
}
setImmediate(main)

结果为flag{Key_1n_the_P1c}
直接查看原图

发现浙中医和浙警很近,把这两个翻个遍


结果为浙江中医药大学
通过浏览器下载


结果为http://192.168.180.107:6262/fix2_sign.apk

结果为23A1527D704210B07B50161CFE79D2E8

结果为Google Service Framework
结果为梆梆加固
传到56.al脱壳

结果为92.67.33.56:8000
在服务器的/tmp/ratlog.txt中记录了日志,拍摄了3张图片,但图片不在服务器中了

结果为3
变态早起王肯定用前置摄像头偷拍

结果为front camera


实现持久化

要算api的话,应该是jobScheduler
结果为jobScheduler
看到有输入法,但是内容被加密



跑到native里了,简单看了一下逻辑,加密相关的内容只在so里,可以用unidbg模拟一下
package com.baidu.util;
import com.github.unidbg.AndroidEmulator;
import com.github.unidbg.LibraryResolver;
import com.github.unidbg.arm.backend.DynarmicFactory;
import com.github.unidbg.linux.android.AndroidEmulatorBuilder;
import com.github.unidbg.linux.android.AndroidResolver;
import com.github.unidbg.linux.android.dvm.DalvikModule;
import com.github.unidbg.linux.android.dvm.DvmObject;
import com.github.unidbg.linux.android.dvm.VM;
import com.github.unidbg.linux.android.dvm.jni.ProxyDvmObject;
import com.github.unidbg.memory.Memory;
import java.io.File;
import java.io.UnsupportedEncodingException;
public class ChiperEncrypt {
public static void main(String[] args) throws UnsupportedEncodingException {
long start = System.currentTimeMillis();
ChiperEncrypt chiperEncrypt = new ChiperEncrypt();
System.out.println("load offset=" + (System.currentTimeMillis() - start) + "ms");
chiperEncrypt.decrypt();
}
private final AndroidEmulator emulator;
private final VM vm;
private ChiperEncrypt() {
emulator = AndroidEmulatorBuilder
.for64Bit()
.addBackendFactory(new DynarmicFactory(true))
.build();
Memory memory = emulator.getMemory();
LibraryResolver resolver = new AndroidResolver(23);
memory.setLibraryResolver(resolver);
vm = emulator.createDalvikVM();
vm.setVerbose(false);
DalvikModule dm = vm.loadLibrary(new File("unidbg-android/src/test/resources/baiduinput/arm64-v8a/libchiperencoder_v1_2_1.so"), false);
dm.callJNI_OnLoad(emulator);
}
private void decrypt() throws UnsupportedEncodingException {
DvmObject<?> obj = ProxyDvmObject.createObject(vm, this);
// 百度输入法加密的剪贴板或笔记数据
String encData = "1Sx3zkdJjfMhZrITNg4J91DN4RTjx4-CaDDWy_u0e0mB9kUnqDvgzJV_eMtI8cJ15DEH0YAyB";
// 解密函数
String methodName = "nativeAESB64Decrypt(B[;)B[;";
// 初始化密钥
obj.callJniMethodBoolean(emulator, "nativeChiperInit()Z");
// 调用函数
DvmObject<byte[]> ret = obj.callJniMethodObject(emulator, methodName, encData.getBytes("UTF-8"));
// 输出返回结果
System.out.println(new String(ret.getValue()));
}
}

拿到身份证号310104200108110624,这个身份证号和后面服务器里的图片、exe的密码相印证

服务器root目录下的图

结果为上海市徐汇区

结果为865372026366143

结果为5A20B10792126FFA324B91E506F67223

结果为Python
用pyinstxtractor-ng解包,然后用pycdc反编译,得到源码,可以看到打开密码和payload数据,base64解码并zlib解压,另存为文件



结果为2025/4/8 09:59:40

结果为46.95.185.222


结果为733FC4483C0E7DB1C034BE5246DF5EC0
A.doc
B.xlsx
C.jpg
D.png
E.ppt
模拟一下就行

结果为ABE

结果为LOVE Encrypted File

结果为Flag3{20241224_Our_First_Meet}
love.jpeg尾部存在rsa私钥

结果为RSA
不用逆向,直接rsa解,但是要注意是分块加密的,赛博厨子不支持分块,得写代码,不过问ai就行,测下来是RSAES-RKCS1-V1_5这个算法
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import padding
def decrypt(encrypted_file_path, private_key_path, decrypted_file_path, chunk_size=64) -> bool:
# 默认块大小64,如果不对的话再改
try:
with open(encrypted_file_path, 'rb') as f:
encrypted_data = f.read()
with open(private_key_path, 'rb') as key_file:
private_key = serialization.load_pem_private_key(
key_file.read(),
password=None, # 默认无密码
)
dec_data = bytearray()
for i in range(0, len(encrypted_data), chunk_size):
chunk = encrypted_data[i:i + chunk_size]
try:
dec_chunk = private_key.decrypt(
chunk,
padding.PKCS1v15()
)
dec_data.extend(dec_chunk)
except Exception as e:
print(e)
with open(decrypted_file_path, 'wb') as f:
f.write(dec_data)
return True
except Exception as e:
print(e)
return False
def main():
encrypted_file_path = r"G:\2025平航杯\新建文件夹\test.love"
private_key_path = r"G:\2025平航杯\新建文件夹\私钥.txt"
decrypted_file_path = r"G:\2025平航杯\新建文件夹\test.love.dec"
if decrypt(
encrypted_file_path,
private_key_path,
decrypted_file_path
):
print(f"文件解密成功,已保存到: {decrypted_file_path}")
else:
print(f"解密失败")
if __name__ == "__main__":
main()
解出来是个ppt


结果为flag4{104864DF-C420-04BB5F51F267}
查看/var/log/wtmp,直接用last命令的话看不到秒

结果为2022/2/23 12:23:49

结果为3.10.0-1160。119.1.el7.x86_64

结果为3

结果为wyzshop1.com
example目录下有这几种模式的模板配置,对比一下可以推出是nat

结果为nat
A. 代理流量转发到外部互联网服务器
B. 将流量转发到本地的 HTTP 服务(如Nginx)
C. 用于数据库连接
D. 加密流量解密后的目标地址
结果为A

不知道是哪个网站,这边先看数据库,发现数据库被清空

找到管理员密码,关闭防火墙连接(pc的BitLocker里有数据库备份)

恢复备份

趁着还原备份,先大致找一下,数据库是这个,所以看这个网站



所以算法是md5("TPSHOP"+pwd)
结果为f8537858eb0eabada34e7021d19974ea
修改数据库连接配置

找到后台地址http://www.tpshop.com/index.php?m=Admin&c=Index&a=index

已知密码算法,生成哈希替换登录

注意mysql的root用户权限里,域名要修改成localhost,否则无法通过localhost连接


结果为2.1.0 compatible
SELECT count(1) FROM `tp_order` where FROM_UNIXTIME(add_time) >= '2016-04-01 00:00:00' and FROM_UNIXTIME(add_time) < '2025-04-01 00:00:00'
结果为1292

结果为100000
根目录下找到shell

日志过滤该文件名

结果为222.2.2.2

结果为870BF66B4314A5567BD92142353189643B07963201076C5FC98150EF34CBC7CF
找到一个可疑工具,搜索一下确定这是一个扫描工具,默认在当前目录保存结果


结果为administrator:Aa123456@
SELECT
用户ID,
IF
(注册时间 IS NULL,
9999999,最早下单时间-注册时间) 间隔
FROM
(
SELECT
tpo.user_id 用户ID,
min( tpo.add_time ) 最早下单时间,
tpu.reg_time 注册时间
FROM
tp_order tpo
LEFT JOIN tp_users tpu ON tpu.user_id = tpo.user_id
GROUP BY
tpo.user_id
) a
ORDER BY
间隔
LIMIT 1

结果为385
SELECT LEFT
( FROM_UNIXTIME( add_time ), 7 ) AS 月份,
count( order_id ) 订单数量
FROM
tp_order
GROUP BY
月份
ORDER BY
订单数量 DESC
LIMIT 1

结果为2016年12月
ai写的sql
SELECT DISTINCT user_id
FROM (
SELECT
user_id,
date1,
@rank := IF(@user = user_id AND DATEDIFF(date1, @prev_date) = 1,
@rank + 1,
IF(@user := user_id, 1, 1)) AS rank,
@prev_date := date1
FROM (
SELECT DISTINCT user_id, date1
FROM (select user_id,left(FROM_UNIXTIME(add_time),10) date1 from tp_order group by user_id,date1 order by user_id) a
ORDER BY user_id, date1
) t,
(SELECT @user := 0, @prev_date := '1900-01-01', @rank := 0) r
) ranked
WHERE rank >= 3;
不放心用python处理
import pymysql
from datetime import datetime, timedelta
def has_consecutive_days(dates, consecutive_days=3):
if len(dates) < consecutive_days:
return False
dates = sorted([datetime.strptime(d, '%Y-%m-%d').date() for d in dates])
consecutive_count = 1
for i in range(1, len(dates)):
if (dates[i] - dates[i - 1]) == timedelta(days=1):
consecutive_count += 1
if consecutive_count >= consecutive_days:
return True
else:
consecutive_count = 1
return False
conn = pymysql.connect(host='192.168.71.135',
port=3306,
user='root',
passwd='12345678910',
database='tpshop2.0',
charset='utf8mb4')
cursor = conn.cursor()
config = 'SET SESSION group_concat_max_len = 1000000;'
cursor.execute(config)
sql = 'select user_id,GROUP_CONCAT(left(FROM_UNIXTIME(add_time),10)) date1 from tp_order group by user_id order by user_id'
cursor.execute(sql)
data = cursor.fetchall()
dic = {}
for row in data:
dates = list(set(row[1].split(",")))
dates.sort()
if len(dates) < 3:
continue
dic[row[0]] = dates
for key,value in dic.items():
if has_consecutive_days(value, 3):
print(key)
结果都是user_id为1的用户满足条件,只有1个
结果为1

结果为COM3-3.6
搜索device name,搜到这个,百度了一下确实是伪装工具

结果为Flipper 123all
未修改前是80:E1:26:33:32:31,之后搜索伪装的设备,之前搜索device name可以找到3个,剩下2个是Cracked、QQ_WF_SP8OON,找到另一个mac地址

结果为97d79a5f219e6231f7456d307c8cac68
从头开始搜索设备名,找到第一个

结果为2025/4/9 02:31:26.711
就剩这个设备

结果为0x0701434839313430
https://github.com/p0ise/pcap2text现成的项目秒了

结果为Wang_Qi_Zhao

结果为7
应该是qianqianwoaini$/abcdefghijkImn,这里可能识别的不是很好,没有识别到shift
结果为53af9cd5e53e237020bea0932a1cbdaa
还好它大小写使用capslock切换的,不然真难搞了,这个脚本对shift的支持有点儿问题
rundll32 url.dll,FileProtocolHandler https://fakeupdate.net/win10ue/bsod.html
还是ctf-neta好用

结果为0566c1d6dd49db699d422db31fd1be8f