ctfshow-文件上传

发布时间 2023-08-30 10:44:52作者: KAKSKY

短标签绕过

1. <?php  echo ('123')    ?>  ---- 常规写法
不需要开启参数设置
2.  <?=(表达式)?>  等价于 <?php echo (表达式)?>
注:
     利用短标签写法可以绕过一些对php字符的过滤
     Windows环境中短标签默认是打开的,Linux下 默认是关闭的。
     控制参数: php支持短标签,需要我们把short_open_tag 设置为On.
3.  <%  echo '123'    %>
注:需要配置php.ini文件。在配置文件中找到asp_tags=off ,将off改为on。改动配置文件后需要重启apache。经过测试发现7.0及以上修改完之后也不能使用,而是报500错误,但是7.0以下版本在修改完配置后就可以使用了。
4.  <script language=”php”>     </script>
不需要修改参数开关,但是只能在7.0以下可用。

web151-前端验证

抓包,上传图片的格式为png的,用burp抓包后修改成php的即可!

web152-Content-Type检查

把Content-Type: image/png修改成php即可,因为上传的是png图片,然后再修改的内容,所以就没有被拦截!

web153-后端不能单一校验-user.ini

先上传一个.user.ini文件,内容是auto_prepend_file=shell.jpg
然后再上传一个shell.jpg文件,shell.jpg文件内容是一句话木马的webshell
images

images

用蚁剑连接即可!
images

.user.ini文件中有两个配置项:
auto_append_file、auto_prepend_file
auto_prepend_file = < filename> // 包含在文件头
auto_append_file = < filename> // 包含在文件尾(遇到exit语句失效)

注意:
1.这两个配置项相当于文件包含 require()
2.该目录下必须存在.php文件

https://blog.csdn.net/qq_45742511/article/details/113817332

web154-后端不能单二校验-.user.ini 大小写绕过

images
一个是过滤了大小写,然后还有一个就是读不出flag.php的内容,最后的f*的方式有点像正则,主要利用的是Linux的特性。

web155-后端不能单三校验-短标签的方式绕过

images

web156-后端不能单四校验-短标签还是可以绕过

images

web157-后端不能单五校验-可以短标签

这个题目过滤了system函数,所以就用到了反引号``
images

web158-后端不能单六校验-

images

web159

短标签+反引号的方式绕过
images

web160

方法一:
images
方法二:
利用日志包含的方式进行注入绕过。

web161

参考博客

https://blog.csdn.net/unexpectedthing/article/details/119479054
https://blog.csdn.net/weixin_45551083/article/details/110289593
https://tyskill.github.io/posts/ctfshow%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/#web154158