首页 > 其他 > 详细

buuctf easy calc backcup

时间:2021-01-26 22:49:53      阅读:29      评论:0      收藏:0      [点我收藏+]

打开靶机,还不懂什么是calc,直接百度

calc()从字面我们可以把他理解为一个函数function。其实calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来指定元素的长度。

就像是页面展示的一样,一个简单的计算机,

01

查看元素,发现waf(不允许传递字母,就是不能使用num做变量,但是在num前面加上一个空格的话就可以了,php在解析的时候会先把空格去掉)

这个的话对题目没有什么影响,之后就没有什么有价值的线索了,然后查看一下网页的源代码

发现原来是有一个calc.php的文件,然后直接在URL访问

技术分享图片

 

 代码审计:

首先是isset()函数,检查变量是否设置,而且是使用get方式传参

下面是黑名单和正则表达式过滤掉一些输入

构造payload:

calc.php? num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

 

参考博客:

https://blog.csdn.net/weixin_44077544/article/details/102630714

https://blog.csdn.net/a3320315/article/details/102937797

——————————————————————————————————————————————————————————————————————————

02

首先查看到界面是   尝试找出源文件,,,,题目提示了是备份文件

所以直接在URL后面加上  index.php.bak      (bak是备份文件的后缀)

技术分享图片

 

 用记事本打开源代码文件,接下来就是代码审计

isset()函数,首先是要构造key的变量,使用get的方式传参

isnumberic()函数判断是不是只是数字,如果字符串中只包含数字字符,则返回 True,否则返回 False

所以题目传的参数要全为数字,绕过。

intval()函数

intval() 函数用于获取变量的整数值。

intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。

成功时返回 var 的 integer 值,失败时返回 0。 空的 array 返回 0,非空的 array 返回 1

所以最后的话传出来的参数都会变成数字,在最后与字符串的比较的时候被过滤得不到flag

好在他们在比较的时候使用的是==弱比较,这样我们才有可乘之机

直接构造?key=123就好了。

————————————————————————————————————————————————————————————

 

buuctf easy calc backcup

原文:https://www.cnblogs.com/ctfliar/p/14331666.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!