[RoarCTF 2019]Easy Calc 1

考点:
	1、PHP的字符串解析特性
	2、文件读取
	3、WAF绕过
	4、http请求走私

法1

查看源代码:提示有WAF
在这里插入图片描述
访问calc.php:发现可传一个参数num
在这里插入图片描述
尝试:
在这里插入图片描述在这里插入图片描述
发现num为字母时报错,所以WAF可能是拦截num为字母的情况。所以我们要绕过WAF才能做我们想要的操作,而calc.php的黑名单限制了我们直接文件读取。

所以我们只要做两个操作:
	1、过WAF
	2、过黑名单

在做第一个操作时:要先了解PHP的字符串解析特性,(网上大佬的解释.)

php把URL参数转换为变量的过程中,它会做两件事:
1.删除空白符
2.将某些字符转换为下划线(包括空格)

所以我们可以这样写

calc.php?%20num=....
//在num前面加个空格这样在过WAF时,WAF接受到的是%20num 而%20num并不等于num,所以并不会触发WAF的规则,在过WAF后PHP再把URL参数转换为变量的过程中,会删除空白符,就变为num=...

做第二个操作,可以用chr(47)来代替’/’,然后构造payload:

calc.php?%20num=var_dump(scandir(chr(47)))
或
print_r(.....)

在这里插入图片描述
找到flag所在,读取/f1agg中的内容

calc.php?%20num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103));
//file_get_contents() 把整个文件读入一个字符串中。

在这里插入图片描述
另一种payload.(注:<?='aa';?>等同于<?php echo 'aa';?>。)

法2
请求走私网上的解释:HTTP请求走私

我的理解是:前后端服务器不是同时接收请求,并且前后端对请求头结束
的位置理解不统一,形成请求走私

CL-CL式
在这里插入图片描述
前端发生错误,get请求完整发送到后端

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值