找回密码
 立即注册
首页 业界区 科技 2025盘古石晋级赛

2025盘古石晋级赛

袁勤 2025-6-8 11:57:41
vr案情中获得的关键信息

手机取证

1.分析安卓手机检材,手机的IMSI是? [答案格式:660336842291717]


结果为460036641292715
2.养鱼诈骗投资1000,五天后收益是? [答案格式:123]

qq里,解密一下数据库,首先需要从mmkv里获取用户的uid

然后解密数据库

聊天记录里是图片,但是找不到对应文件

但是在缓存目录里能发现这个图片缓存,不过暂时不知道通过什么可以映射上

结果为175
3.分析苹果手机检材,手机的IDFA是? [答案格式:E377D1D7-BA02-4A79-BB9A-5C2DE5BD1F17]

手工翻找不到哇

结果为E477D4C7-BD02-4979-BC9D-5C5DE7BD1F17
4.Telegram应用的卸载时间是? [答案格式:2023-01-22-17:37:50]

private\var\installd\Library\Logs\MobileInstallation\mobile_installation.log.0

结果为2025-04-17 10:51:39
5.机主hotmail邮箱地址是? [答案格式:123345@hotmail.com]

tg不会解密

结果为hostsixer@hotmail.com
6.苹果电脑开机密码是? [答案格式:12345]

应用快照里,xways没法直接预览

结果为12345678
7.Telegram加密通讯中,加密聊天信息用到的第二个解密载体是? [答案格式:123.zip]

mac电脑备忘录里


结果为2.mp4
8.贾韦码的内部代号是? [答案格式:77]

搜索密文可以找到对应的文档

结果为48
9.特快专递的收货地址是? [答案格式:老牛市快速路11号ADE公司]


结果为西红市中山路35号PGS健身房
APK取证

1.分析安卓检材,远程工具包名是? [答案格式:com.app.cpp]

银联会议,qq里发的


结果为com.carriez.flutter_hbb
2.远程工具中继服务器IP是? [答案格式:192.168.11.11]


结果为59.110.10.229
3.远程工具ID服务器端口是? [答案格式:8088]

结果为21116
4.远程工具中继服务器Key是? [答案格式:HOtGxUuV9OxSSEWRFsr1DVxQBkbbFReOImYMT1zyec=]


结果为WIUqzRq1Ocx4QNnsF26dZQijKdyd2L9OfaT55hDlQCI=
5.远程遥控中收藏的远程ID是? [答案格式:123456]


结果为1807892422
6.远程控制该手机的手机型号是? [答案格式:huawei-Hot]


结果为google-Pixel
7.监听工具包名是? [答案格式:com.app.cpp]

app里找了半天,应该是这个

结果为com.example.liekai
8.监听工具代码主入口是? [答案格式:com.app.cpp.MainActiddidy]


结果为com.example.liekai.MainActivity
9.监听工具的签名算法是? [答案格式:AES123RSA]


结果为SHA256withRSA
10.监听工具运行多少秒后会跳转成黑色幕布? [答案格式:3.000]

高版本安装后一直白屏,查看logcat后发现是存储权限问题,主动给一下
  1. adb shell pm grant com.example.liekai android.permission.READ_EXTERNAL_STORAGEadb shell pm grant com.example.liekai android.permission.WRITE_EXTERNAL_STORAGE
复制代码
使用blutter反编译python3 blutter.py /mnt/g/2025盘古石杯/晋级赛/export/arm64-v8a /mnt/g/2025盘古石杯/晋级赛/export/

asm目录里dart的字节码,在这边可以简单看一些东西,比如黑幕中间的内容

然后到objs.txt里搜索

定位到这里,有个delay函数

查一下值,这里是纯猜

结果为1.000
11.监听工具运行后,黑色幕布上字符串是? [答案格式:aes取证平台]

结果为pgs比武专用
12.监听工具检测到多少分贝开始录音? [答案格式:30]


结果为70
13.监听工具录音连续几秒没有检测到声音停止录音? [答案格式:3]

结果为4
14.监听工具保存文件存储路径的数据库名称是? [答案格式:sqlite.db]


结果为recordings.db
15.监听工具保存录像文件的文件夹是? [答案格式:file]

用blutter生成的脚本进行hook
  1. function onLibappLoaded() {  // xxx("remove this line and correct the hook value");  const fn_addr = 0x394a84;  Interceptor.attach(libapp.add(fn_addr), {    onLeave: function (retval) {      console.warn("videoKeyByte =>")      console.log(getTaggedObjectValue(retval))    }  });}function videoIVBytes(){  const fn_addr = 0x394928;  Interceptor.attach(libapp.add(fn_addr), {    onLeave: function (retval) {      console.warn("videoIVBytes =>")      console.log(getTaggedObjectValue(retval))    }  });}function pathIVBytes(){  const fn_addr = 0x370f2c;  Interceptor.attach(libapp.add(fn_addr), {    onLeave: function (retval) {      console.warn("pathIVBytes =>")      console.log(getTaggedObjectValue(retval))    }  });}function pathKeyBytes(){  const fn_addr = 0x371054;  Interceptor.attach(libapp.add(fn_addr), {    onLeave: function (retval) {      console.warn("pathKeyBytes =>")      console.log(getTaggedObjectValue(retval))    }  });}function audioIVBytes(){  const fn_addr = 0x395668;  Interceptor.attach(libapp.add(fn_addr), {    onLeave: function (retval) {      console.warn("audioIVBytes =>")      console.log(getTaggedObjectValue(retval))    }  });}function audioKeyBytes(){  const fn_addr = 0x3957c0;  Interceptor.attach(libapp.add(fn_addr), {    onLeave: function (retval) {      console.warn("audioKeyBytes =>")      console.log(getTaggedObjectValue(retval))    }  });}function tryLoadLibapp() {  libapp = Module.findBaseAddress('libapp.so');  if (libapp === null)    setTimeout(tryLoadLibapp, 500);      else{    onLibappLoaded();    videoIVBytes();    pathIVBytes();    pathKeyBytes();    audioIVBytes();    audioKeyBytes();  }}function getTaggedObjectValue(tptr, depthLeft = MaxDepth) {    if (!isHeapObject(tptr)) {        // smi        // TODO: below support only compressed pointer (4 bytes)        return [tptr, Classes[CidSmi], tptr.toInt32() >> 1];    }    // 注意这里一定要把下面这行注释掉    // tptr = decompressPointer(tptr);    let ptr = tptr.sub(1);    const cls = Classes[getObjectCid(ptr)];    const values = getObjectValue(ptr, cls, depthLeft);    return [tptr, cls, values];}
复制代码
可以拿到解密数据库中路径的key和iv


解密路径

结果为recording
16.监听工具数据库中保存音视频文件的路径使用什么加密? [答案格式:Rsa]


结果为Salsa20
17.录音的文件采用什么加密方式? [答案格式:RC4-123]

密钥长度256位

iv是128位的

结果为AES-256
18.录像文件加密密钥的最后一位是? [答案格式:0x6A]

key

iv

结果为0x4D
19.原始文件md5为3b4d****55ae的创建时间是? [答案格式:2024-2-14-16:32:8]

python搓一个解密脚本
  1. from base64 import b64decodefrom Crypto.Cipher import AESfrom Crypto.Util.Padding import unpadimport osdef decrypt_base64_aes_cbc(encrypted_data: str, key: bytes, iv: bytes) -> str:    encrypted_bytes = b64decode(encrypted_data)    cipher = AES.new(key, AES.MODE_CBC, iv)    decrypted_bytes = unpad(cipher.decrypt(encrypted_bytes), AES.block_size)    return decrypted_bytesdef decrypt(folder_path: str, key: bytes, iv: bytes) -> str:    for root,dirs,files in os.walk(folder_path):        for file in files:            with open(os.path.join(root, file), "r") as f:                encrypted_data = f.read()            decrypted_data = decrypt_base64_aes_cbc(encrypted_data, key, iv)            with open(os.path.join(root, file+"_dec"), "wb") as f:                f.write(decrypted_data)def main():    audio_key = bytearray.fromhex("2b7e151628aed2a6abf7158809cf4f3c2a7d141527add1a5aaf6148708ce4e3b")    audio_iv = bytearray.fromhex("000102030405060708090a0b0c0d0e0f")    video_key = bytearray.fromhex("3c8f262739bfe3b7bc0826991ad0504d")    video_iv = bytearray.fromhex("101112131415161718191a1b1c1d1e1f")    decrypt(r"G:\2025盘古石杯\晋级赛\export\files\video", audio_key, audio_iv)    decrypt(r"G:\2025盘古石杯\晋级赛\export\files\recording", video_key, video_iv)if __name__ == "__main__":    main()
复制代码
解密后的哈希也没有对的上的。。
找到文件后,再去数据库里查创建时间
找人问了出题人,得到结果是这个文件,这里肯定是出题人失误,他解密时用的nopadding,导致尾部有脏数据,nopadding解出来哈希就能匹配上了


结果为2025-04-18 14:32:08
计算机取证

1.分析贾韦码计算机检材,计算机系统Build版本为? [答案格式:19000]

网络信息好像由于Registry库的问题,注册表没法正常解析,把那个函数注释掉了

结果为18362
2.计算机最后一次正常关机的时间为UTC +0? [答案格式:2025-05-06 09:00:00]

结果为2025-04-18 03:20:53
3.计算机网卡的MAC地址为? [答案格式:00-0B-00-A0-00-00]

注册表找一下

结果为00-0C-29-0F-60-00
4.计算机用户“贾韦码”安全标识符SID为? [答案格式:S-X-X-X-X-X-X-X]


结果为S-1-5-21-3733482367-3411043098-2536183883-1001
5.计算机默认浏览器为? [答案格式:Mozilla Firefox]


结果为Google Chrome
6.计算机默认浏览器版本为? [答案格式:000.0.0000.00]


结果为135.0.7049.85
7.机主通过浏览器搜索国外社交软件为? [答案格式:Whatsapp]


结果为Telegram
8.机主的邮箱账号是? [答案格式:pgscup@pgs.com]


结果为tqmdavidjohnson300@gmail.com
9.计算机安装过一款反取证软件为? [答案格式:Encrypt.exe]


结果为VeraCrypt.exe
10.计算机通过xshell远程连接的IP地址为? [答案格式:127.0.0.1]


结果为192.168.56.129
11.机主曾买过一个美国的TG账号,请给该账号的两步验证密码? [答案格式:8位数字]

邮件有

结果为13770603
12.给出其电脑内加密容器的解密密码? [答案格式:Abc@123]

找到容器,结合vr里的提示


掩码攻击


结果为Pgs8521d3j
13.给出其电脑内加密容器挂载的盘符? [答案格式:C]


结果为F
14.给出其电脑内存放了多少张伪造身份证? [答案格式:10]


结果为1023
15.给出任敏的身份证编号? [答案格式:18位]


结果为430529195112085460
16.找出其电脑内存放的密钥文件,计算MD5? [答案格式:字母小写]


这个文件在分区间隙里


结果为keyfile.keyfile
17.找出其电脑内存放的密钥文件,解密此密钥文件,给出其内容? [答案格式:第3届pgscup]

结果为zfs加密pool密钥文件
*18.对macOS系统进行分析,登陆的电子邮件服务是谁提供的? [答案格式:pgscup]

 
19.系统备忘录的包名是什么? [答案格式:com.dfefef.note]


结果为com.apple.Notes
20.图片中隐藏的内容是什么? [答案格式:隐藏内容 刷子戏子痞子]

lsb隐写,red通道0

结果为位移加密 正向位移操作
21.被加密文件的扩展名是什么? [答案格式:123]


结果为enc
22.被加密的文件总共有几个? [答案格式:5]


结果为1
23.贾韦码家使用的智能门锁品牌型号是什么? [答案格式:小米XX号]

加密的密钥是固定的,打印出来就行,另外iv是保存在文件头部16个字节的,据此解密即可


结果为金刚Ⅲ号
EXE取证 PE Binary Forensics

1.分析Windows木马,其控制端IP是? [答案格式:192.168.1.11]

先找到木马


结果为104.18.45.79
2.软件会复制自身到哪个文件夹下? [答案格式:DaTa]


结果为SubDir
3.软件复制后,复制后文件名是? [答案格式:AppTmp.exe]

结果为BwAcr.exe
4.软件一共可以窃取多少种浏览器的数据? [答案格式:3]

c#写的,上dnsPy

找到了Application Name,所以全局搜










这里面只有FileZilla和WinSCP不是浏览器
结果为8
5.软件查询安装的杀毒软件出错或异常会返回什么字符串? [答案格式:Apps]


结果为Unkown
苹果应用取证

*1.对Mac电脑中的加密程序进行分析,使用了一个特定的数作为密钥生成过程的种子,请问这个数是什么? [答案格式:1234]


少模块

在lib里找到

反编译一下


结果为42
2.分析文件头部元素并确定它们的正确顺序。将字段名按顺序连接并提交。 [答案格式:字段1_字段2_字段3...]

是加密文件的?

结果为iv_encrypted_data
3.分析密钥派生过程中使用了几个算法步骤。其中一个函数名与其实际功能不符的名称。找出这个函数名并提交? [答案格式:函数名]

这里的mixed_base没有使用,所以并没有descramble

结果为_descramble_key
*4.程序中实现了一个故意减慢加密过程的机制,延迟值是多少? [答案格式:1.1]

做到这里总感觉提取的程序不对。。
*5.程序中隐藏了一个版本标识符,请找出版本号? [答案格式:v1.1.1]

 
服务器取证

需要注意pc17,文件本身是密钥,则密钥为emZz5Yqg5a+GcG9vbOWvhumSpeaWh+S7tg==
1.分析服务器检材,找到服务器系统启动盘的GUID? [答案格式:数字、字母、-的组合,字母大写]


结果为223DCB83-82B0-4C62-864A-DB28D84735B8
2.找出服务器网关IP? [答案格式:1.1.1.1]


结果为192.168.56.128
3.找出服务器数据盘的文件系统格式? [答案格式:ntfs]


结果为zfs
4.找出服务器数据盘的解密密钥文件名? [答案格式:abcd]


结果为keyfile
5.找出服务器密码? [答案格式:key@123]

john字典攻击

结果为P@ssw0rd
6.找出服务器操作系统版本号? [答案格式:0.0.0]

先把系统盘转成vmdk,方便编辑

  • 挂载server2
  • 以server2为现有物理磁盘(最好选SATA协议)创建一个utuntu虚拟机,并在虚拟机设置当中使用uefi引导,此时不要开启虚拟机
  • 编辑vmx文件(这里本来想用xhci,也就是usb3.1来引导的,但是一直不成功,不知道原因),然后启动虚拟机就可以正常引导了
  1. ehci:0.present = "TRUE"ehci:0.deviceType = "disk"ehci:0.fileName="server1.vmdk" 这里是系统盘镜像的路径,最好是复制一份过来用ehci:0.readonly="FALSE"
复制代码

结果为7.0.1
7.找出服务器内网盘Docker的虚拟磁盘位置? [答案格式:/home/abc/adc.raw]

修改网卡配置文件,改到同网段,以便用ssh和web界面

登录到web页面,可以看到磁盘阵列还没解密,这里上传密钥文件或者输入密钥内容就可以点击启动按钮启动阵列了



结果为/mnt/disk1/docker.img
8.找出服务器启动盘的启动标识? [答案格式:D100 (型号即可)]


结果为aigo_U210
9.找出服务器内共有多少个容器镜像? [答案格式:10]


结果为9
10.找出服务器内网盘服务器所用数据库运行的容器端口号? [答案格式:abc-abc-1]


结果为www-db-1
11.找出服务器内虚拟币容器对外暴露的端口号? [答案格式:8000]

结果为22556
12.找出投资理财网站的域名? [答案格式:3w.baidu.com]

启动网站和数据库容器

能看到网站挂载路径是/mnt/disk1/www
日志里有记录后台入口

看一下数据库连接配置,连上数据库

看到密文很像md5,直接123456替换进去,登录一下看看有没有加盐

实测没有加盐直接登录成功,无需分析代码

但是这里的域名不合答案格式

这里的域名在手机qq里有符合答案格式的

结果为2025.pgscup.com
13.找出投资理财网站内连接数据库的密码? [答案格式:password]

结果为www_dkewl_com
14.找出投资理财网站后台访问地址? [答案格式:http://www.baidu.com/login.html]

结果为http://2025.pgscup.com:8080/www9nwcc/login.html
15.找出投资理财网站会员等级储存在哪个数据库表内? [答案格式:user]

前端看一下内容

数据库找一下就行

结果为user_member
16.找出投资理财网站提现成功的金额? [答案格式:10000]

充值提现的表是空的,docker映射能看到2个sql,导入sql


结果为5769477
17.找出投资理财网站内用户王欣的银行卡号? [答案格式:16位数字]



结果为2114313505182218
18.找出投资理财网站用户的最低提现金额? [答案格式:10000]


结果为100
19.给出投资理财网站内0代表用户处于那种状态? [答案格式:核实]



结果为正常
20.投资理财网站内,通过支付宝充值状态为未支付的金额? [答案格式:10000]
  1. select sum(money) from recharge where left(type,3)='支付宝' and status=0
复制代码

结果为11642201.00
21.对贾韦码计算机进行分析,账本系统使用的web框架是什么? [答案格式:Django]

虚拟机

虚拟机加密了,但是pyvmx-cracker好像跑不出来,edpr加载提示没加密

直接将加密字段去掉,这里应该是没有加密磁盘,所以可以这样操作

密码弱口令,123456,反查哈希得到

结果为Nodejs
22.对账本系统进行分析,账本使用的数据库版本是多少? [答案格式:1.1.1]

看历史记录重建网站

前端npm run serve后端npm run dev

ip在前端被写死了,这里可以直接给适配器添加一个ip


数据库这里监听的ip改成0.0.0.0并重启服务,这样本地可以连接,注意这里没有身份验证

现在web可以登录
结果为5.0.3
23.对账本系统进行分析,使用的数据库库名是? [答案格式:test]


结果为crm
24.对账本系统进行分析,用户手机号码在数据库中的加密方法是? [答案格式:xor-325-dfg]


结果为aes-128-cbc
25.分析 crypto.js 中的 _0x3ad7 函数,找出返回加密数据的方法的编码格式? [答案格式:ascii]



结果为utf8
26.分析 crypto.js 中的 _0x3ad7 函数,找出使用异常作为控制流的触发语句? [答案格式:Test:connec]



结果为error:加密处理异常
27.分析KeyManager.js中 `initializeKeys` 函数的密钥获取优先级是什么? [答案格式:优先级1>优先级2>优先级3]




先从.env里直接读取,如果没有密钥且有masterpassword,则随机生成,否则就从key.dat中读取
28.对账本系统进行分析,账本记录的用户总数是多少? [答案格式:1234]

管理员密码bcrypt,123456替换登录


结果为2000
*29.对账本系统进行分析,身份证号 "430014197812200986" 用户的投资金额是多少? [答案格式:111111]

查不到这个身份证
30.对账本系统进行分析,姓名为明凤英的客户有几人? [答案格式:1]


结果为2
物联网取证

1.分析冰箱,请问智能冰箱的品牌? [答案格式:xiaomi]


结果为Panasonic
2.请问智能冰箱的型号? [答案格式:MiFridge2024]

结果为NR-E46CV1
*3.请问智能冰箱的uuid? [答案格式:34567890-12cd-efab-3456-789012cdefab]


结果为12345678-90ab-cdef-1234-567890abcdef
4.请问智能冰箱默认保存几张图片? [答案格式:1]

搜索face,应该是存5张,后面2个没有数据

结果为5
5.请问冰箱中已存的第一张图片上的内容是什么? [答案格式:满城尽带黄金甲]

这边face1,jpg图片,通过签名定位文件内容



结果为盘古石杯贾韦码
6.请问冰箱中已存的第二张图片的名称是什么? [答案格式:123.jpg]

文件签名是jpg
结果为face2.jpg
7.请找冰箱中隐藏的内容? [答案格式:chuxizixipizi]

strings一下

结果为pangushicup
8.请找出冰箱中嫌疑人图片MD5值的后六位? [答案格式:1a2b3d]



结果为882564
*9.找出冰箱最后一次开门时间? [答案格式:10:11]

找不到其他数据,这边的2935是对应了文件大小

考虑之前的解密出的压缩包里有face1,但是不确定

结果为15:48
10.默认图片的存储限制大小是多少? [答案格式:1KB]

文件偏移,中间差了102424给字节,100kb,有一部分是用来存储元数据


结果为100KB
11.分析video.E01,被修改的录像md5前5位是? [答案格式:1a2b3]

这个命名格式的文件都是ts文件,维度这个是mp4

视频内容中,前后时间矛盾



结果为ea7be
数据分析

需要先找到要分析的数据

1.对贾韦码计算机检材进行分析,该诈骗集团的最高层领导者的ID和姓名? [答案格式:M0000001 姓名]

先算层级

  1. select *from members m         left join `tree` t on m.member_id = t.IDwhere t.所处层级 = 1;
复制代码

结果为杨俊
2.找出从直接下线中所有下线提现总金额最高的成员ID? [答案格式:M0000001]
  1. select payer_id, sum(amount) totalfrom transactionswhere `type` = 'withdrawal'group by payer_idorder by total desclimit 1;
复制代码

结果为M019024
3.找出从直接下线获得平均佣金最高的成员ID及其平均佣金金额? [答案格式:M0000001, 123.12]
  1. select payer_id, avg(amount) avgerfrom transactionswhere `type` = 'commission'group by payer_idorder by avger desclimit 1;
复制代码

结果为M028080,999.43
4.找出注册时间最早的前10%成员中,交易次数最多的5位成员的ID列表? [答案格式:M0000001, M0000002, M0000003, M0000004, M0000005]

倾向于整个表的内容都认定为交易
  1. select round(count(1)/10,0) from members; # 3000select member_id, registration_date, b.交易次数 + c.交易次数 次数from (select member_id, registration_date from members order by registration_date limit 3000) a         left join (select t.payer_id, count(1) 交易次数 from transactions t group by t.payer_id) b                   on a.member_id = b.payer_id         left join (select t.payee_id, count(1) 交易次数 from transactions t group by t.payee_id) c                   on a.member_id = c.payee_idorder by 次数 desc, registration_date;
复制代码

结果为M028190,M013525,M020089,M018530,M027815
*5.找出交易次数增长率最高的成员ID及其增长率? [答案格式:M0000001, 24.44%]

以什么依据算增长率?
*6.统计状态"active"、90天无交易、历史交易额前20%的成员数? [答案格式:111]

连续90天无交易还是总计90天及以上无交易,还是恰好必须有90天没有交易??!
7.找出有上线且直接下线最多的成员ID及下线数? [答案格式:M000001:数量]
  1. select upline_id, count(member_id) numsfrom hierarchygroup by upline_idorder by nums desclimit 1;
复制代码

结果为M009748:18
8.比较最早年份Q1与Q4注册成员的总交易额,指出哪个更高及其金额? [答案格式:Q1:123.12]
  1. select a.季度, sum(ts.amount) 交易额from (select member_id,             case                 when left(registration_date, 7) = '2020-01' then 'Q1'                 when left(registration_date, 7) = '2020-02' then 'Q1'                 when left(registration_date, 7) = '2020-03' then 'Q1'                 when left(registration_date, 7) = '2020-10' then 'Q4'                 when left(registration_date, 7) = '2020-11' then 'Q4'                 when left(registration_date, 7) = '2020-12' then 'Q4'                 end AS '季度'      from members      where left(registration_date, 7) in ('2020-01', '2020-02', '2020-03', '2020-10', '2020-11', '2020-12')) a         left join transactions ts on a.member_id = ts.payer_idgroup by a.季度select a.季度, sum(ts.amount) 交易额from (select member_id,             case                 when left(registration_date, 7) = '2020-01' then 'Q1'                 when left(registration_date, 7) = '2020-02' then 'Q1'                 when left(registration_date, 7) = '2020-03' then 'Q1'                 when left(registration_date, 7) = '2020-10' then 'Q4'                 when left(registration_date, 7) = '2020-11' then 'Q4'                 when left(registration_date, 7) = '2020-12' then 'Q4'                 end AS '季度'      from members      where left(registration_date, 7) in ('2020-01', '2020-02', '2020-03', '2020-10', '2020-11', '2020-12')) a         left join transactions ts on a.member_id = ts.payee_idgroup by a.季度
复制代码


结果为Q1:20959551.33
9.找出成员地址中最常出现的省份,并计算居住在该省份的所有成员的总提现金额? [答案格式:省份, 123.12]
  1. select count(member_id) 人数, left(address, 2) 省份from membersgroup by 省份order by 人数 desc; # 江苏select sum(ts.amount)from members m         left join transactions ts on m.member_id = ts.payer_idwhere left(m.address, 2) = '江苏'  and ts.type = 'withdrawal';
复制代码

结果为江苏,2301065.13
10.计算最高层领导者的净资金流? [标准格式:123.12]
  1. select 收入-支出 from(select sum(amount) 支出 from transactions where payer_id='M020038') a,(select sum(amount) 收入 from transactions where payee_id='M020038') b
复制代码

结果为17443.99

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册