加一个题: 攻防世界web之ics-05
也是这个preg_replace
一、不足:
- 在文件包含那里卡住了,想着flag.php还是next.php10多分钟后才想到可以用filter协议来读么,,,等一会看看能不能用data协议来读去???
这个可以的:index.php?text=data://text/plain,I have a dream&file=php://filter/convert.base64-encode/resource=next.php
- 看到正则+str_replace,+ e 修正符,想到的是RCE!?!!。
- 知识点:/e模式的preg_replace,有一个远程代码执行漏洞
二、知识点:
- 点这个:深入研究preg_replace与代码执行。讲真,里面的一些python的小脚本可以学习学习呦
- 看这个我自己吸收了一波之后的:正则中\1的用法—反向引用
- 那个可变变量的花括号,就像是C语言中的小括号一样,明确变量名字的,没有什么实际意义的
- 真就直接就执行了呗,(这里去掉花括号不行!!!不行!!!!)这个是给 第一点 实验用的。那个第一点中的 爬坑三 有详细解释。讲的很棒的,既然这个 ${phpinfo()} 能传,
- 这个 ** \S=${getFlag()} ** 的意思就是执行代码的意思了,我看了,大牛写的博客中也没有说为什么使执行代码,只是讲了怎么构造使之执行代码,。一样的 换成phpinfo()一样执行
三、做完题,看完博客后的 要求:
-
这个套路要会用,看到这个 preg_replace 和 /e 的组合运用的时候,要能够想到使这个代码执行来
然后 -
正则的反向代理\1得会,
-
还有PHP得 可变变量 也要弄得明明白白的!
四、我的思路:没有做出来,,,
php://input 一下子想到了,但是这个文件包含的还是慢了点,这个php://input换成data伪协议也可以做的
这个可以的:index.php?text=data://text/pl