- 前言
最近因为一些其他事,好长时间都没有更新了,今天终于闲下来了一点,就当写篇日记带大家一起去看看正则回溯吧,当时我第一次还是从 p 神那边知道还可以这么去搞,而且最近的两次比赛确实都遇到了这样的题目,那个题的 wp 我也会更新到我的 blog,大家稍等
-
正文
1.首先来说,今天的文章肯定不会很长,很难懂,因为该讲的之前都讲过,主要就是记住一句最核心的话,出题人或者是一些设计程序的人写的代码,一定是要存在一些没有考虑周全的点,才会出现这样的漏洞,之所以会出现这样的正则回溯的问题,根本原因还是没有将返回的 Flase 进行一个判断,比如说程序设计者想返回一个 0 来代表你的输入是不合法的,但是并没有做个强等于的判断,导致这个 Flase 也可以成功的被判断(弱等于的时候 Flase 和 0 没什么区别)
2.然后就是说为什么可以利用这个点,就像之前文章里面说的那样,正则匹配的上限就是 100 万次,而超过 100 万次就会报 Flase,所以核心就是要让正则匹配能无限的匹配下去,非贪婪(懒惰)模式的话当然很好理解,就像[SHCTF]1zzphp 里面视频一样,它会一直等,会逐个匹配 b 完了之后的字母是不是 s,而贪婪模式的话,t 神也讲过,我另一篇文章也说的很详细了,就是会从后往前一个一个找,那么这个过程也是一个不断的再匹配是否一样的过程
3.只要同时满足了上述这两个条件,那么这个漏洞就能利用了
-
结尾
就这样吧,就当水一篇文章了,就是给大家串一串