BUUCTF Easy Calc

BUUCTF Easy Calc

= =

1.打开网站,让我们算术:
在这里插入图片描述
2.看到框框肯定要插一下:(这里两种不同的提示方式,就应该想到waf另有其人的,害)
在这里插入图片描述
在这里插入图片描述
3.拦截了,猜测后端应该是直接对语句执行了输出的,看看源码:
在这里插入图片描述
4.说是有waf,而且之前插入抓包的时候也发现了/calc.php?num=
在这里插入图片描述
5.= =可我真没想到,不加参数的话会直接显示源码的,做题和实战有偏差= =
在这里插入图片描述
这里就是设置了黑名单,然后代码执行。看到这儿就想到了一句话,但是 “ [” 这些被拦截了,我又想到了我写过的异或免杀马儿,但是这里有些字符组不出来。

6.好吧,看到这个拼接语句,我们肯定是可以拼接自己的语句的。但是想想有什么能在eval运行的…只知道一句话和phpinfo = =我tcl
在这里插入图片描述
wc,403,为什么。突然发现waf另有其人,我一直以为就是之前源代码里面的拦截…怎么绕过呢?要不参数污染、要不参数值绕过…恕我知识有限、没有成功。

7.瞄了一眼wp,长知识了。php会把传过来的参数进行处理后再存储到GET或者POST这种数组中,包括:
1)删除初始空格
2)把某些字符转换为下划线
但是在waf层面没有进行这个操作,那waf可能不是php写的吧…
在num参数前面加空格绕过:(有时间试试绕waf)
在这里插入图片描述
8.拿到phpinfo页面也就看一下allow_url…,看一下绝对路径,看一下open_basedir和disable_functions现在也利用不上。去查一些函数,结合disable_functions发现,scandir()函数可以用:
在这里插入图片描述
9.这个函数是指定获取某个目录下的目录和文件,但是引号和$都被过滤了,既不能直接输入目录也不能构造参数然后传入。然后很容易想到了chr函数。
在这里插入图片描述
10.这是获取根目录下的文件和目录,但是为什么没有回显呢?因为它返回的是数组形式,在php里我们不能直接输出,要用var_dump或者print_r。这两个函数都可以把flag打印出来,print_r和var_dump都能输出数组和对象,但print_r对布尔型的输出不太明显;var_dump输出比较详细,一般调试时用得多。
在这里插入图片描述
11.我看到了f1agg,那没跑了。获取文件内容肯定是要用file_get_contents了。不过这里也要用ascii代替。
在这里插入图片描述

昨晚上撑不住睡了,hhh,今儿早上起来补完。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值