很多站长朋友们都不太清楚ctfphp修改代码,今天小编就来给大家整理ctfphp修改代码,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 ctfshow-SSRF篇 2、 CTF赛题PHP7 正则绕过 3、 各位大佬,ctf的php题,真的急!!求flag ctfshow-SSRF篇参考:
payload:
使用file伪协议看到的flag.php源码如下:
要求是 http 或者 https 协议,以及过滤了 localhost 和 127.0.0.1 。
额为什么 preg_match() 里面没有指定对谁匹配,所以上一题的payload中的http协议的是可以使用的,file伪协议的过不了第一层判断。
不过如果的确做了有效的正则匹配,那么可以127.0.1 、127.1或者转成16进制或者8进制绕过,payload如下:
使用进制转换或者127.1绕过:
把1和0都ban了,可以修改自己域名的A记录为127.0.0.1
A(Address)记录是地址记录,用来指定主机名(或域名)对应的IP地址记录,通过A记录,可以设置不同域名指向不同的IP。
payload如下:
也可以搭一个302跳转,不过也是要有域名的 参考 :
要求host的长度小于等于5,使用如下payload:
还可找一个域名长度不大于5的域名 A 记录解析到127.0.0.1。
要求host长度小于等于3,使用如下payload:
gethostbyname 返回主机名对应的 IPv4地址。
filter_var() 过滤器要求解析出来的ip地址是有效ip,并且不是私有ip或者不是保留ip,所以之前把自己域名的A记录设置为127.0.0.1就不可行了,解析出来的ip是保留ip。
可以使用302重定向,vps搭一个:
payload如下:
还有一个方法是DNS重绑定漏洞,参考:
浅谈DNS重绑定漏洞
具体操作如下:访问 并注册用户,在这儿进行DNS重绑定:
多访问几次即可。
要求解析完的url以 . 开头,以 show 结尾,payload如下:
这样 parse_url() 真正解析出来的host是127.0.0.1, ctf. 变为了user字段,可以尝试本地解析一下:
结果如下:
可以参考:
提示是打无密码的mysql,抓包发现ssrf漏洞应该在check.php中:
输入用户名和想要执行的sql命令:
get方法的url参数,利用ssrf打redis,同上:
然后访问网站根目录下的shell.php即可。
CTF赛题PHP7 正则绕过前言:由于长度限制,且不像其他题目告知flag.php的内容, 笔者并没有求出flag,绕过思路可参考,也欢迎ctf大佬指点迷津。
题目如下,解析flag.php中的flag变量
1.题目不告知flag.php的内容,所以唯一的办法只有打印出flag.php,先想办法绕过
2.因为 _ 也在正则里面,所以 =${_GET}[_]();_=phpinfo() 没办法传入
3.尝试php7 中的($a)();来执行动态函数 例如 ('phpinfo')()
4.那么动态构造函数名称即可,可理解,假如你是:(1+1)(); php会先运算1+1=2 然后在调用:2();
5.借助大牛的payload (~%8F%97%8F%96%91%99%90)(); 成功执行
6.payload构造方式如下
** 如何理解? **
对执行的函数取反然后进行 urlencode 详细可自行科普
7.当前可执行phpinfo,如何获取flag.php的内容?思路继续扩展
以上均是长度限制 笔者解题终于此
那么只需要 执行 getFlag()函数即可
('getFlag')(); 对flag进行编码
以上就是笔者对php绕过的小理解和内容分享
参考文章:
欢迎讨论,持续更新中,感谢关注
各位大佬,ctf的php题,真的急!!求flagheader("location:aaaa.php?flag=1");
其中flag=1是一个URL参数,是一个键值对,键名是flag,键值是1,允许有多对这样的参数,他们之间用号连接,如aaaa.php?flag1=1flag2=2flag3=3...
然后可以在aaaa.php中用$_GET["flag"]来接收该值!
函数表示角时要注意角的范围。 不等式的
关于ctfphp修改代码的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于ctfphp修改代码 ctf php的详细内容...