# 解题思路

  1. easyrce

    首先观察到有 eval 函数可以把字符串作为 PHP 代码执行,所以只要绕过过滤利用这个函数就能 websell

    preg_match 函数执行的是对变量 a 的正则表达式匹配,可以看到没有被过滤的字符有,a?/><` ' +

    百度搜索到了离别歌的一篇无字母数字 webshell 文章,可以发现主要有俩种方式来绕过

    php 里有 'a'++ => 'b','b'++ => 'c'... 所以,只要利用 a,通过自增操作即可获得 a-z 中所有字符。

    但是 有长度限制,考虑用数组来绕过 strlen 函数,但定义变量的_也被过滤了,遂放弃。

    第二种方法是利用通配符来绕过,用?来匹配任意字符,也就是说???/??? =bin/cat

    所以构造 payload 为?a=' 反引号 /???/?a? ??a????? 反引号 ' 匹配为 bin/cat flag.php, 由于。号被过滤了

    所以尝试用?空格,/ 代替 ,无果

    搭建本地 php 环境测试

    将 flag.php 写入 123 放在同级目录下执行命令,无显示,说明执行失败,感觉是。号的问题

    原来是用短标签闭合,我去

    a=?><?= ' /???/?a? ??a????? '?>

  2. # ezsqli

    首先先用 burp 的爆破模块来测试有没有过滤

    image-20210328104204867

​ 发现无论什么都是登录密码错误,接着用报错注入试一下,根本没有回显,说明没有开报错,去学习了一下时间盲注,就是利用 if 语句和 sheep 函数来不断判断确定数据库的名称

image-20210328105246522

先测试一下有没有注入点,发现返回时间并没有什么变化,应该是有过滤

不管了去找了一个时间盲注的 python 脚本改了 url 跑了跑,无果。

心态略崩

更新于 阅读次数