No one knows regex better than meWEB 未解决

分数: 25 金币: 5
题目作者: yeedo
一  血: 硝基苯爸爸
一血奖励: 10金币
解  决: 2773
提  示:
描  述:
正则好像没有想象中那么简单
评论
yeedo 3年前

看了大家的评论,有部分同学提出了对payload是否包含|的质疑,并给出了相关正则匹配的网站结果,事实上,在出这道题的时候我就发现了基本所有的正则匹配规则网站对这个正则的匹配结果都是存在问题的,这也是出这道题的初衷。建议大家做题时先学习php正则匹配优先级的相关知识,这样可以更好的理解这道题xd

回复 15
发到付件埃里克FDA 2年前

这个正则就TM神奇。 \\|我以为是表示 \符号的 结果是表示| 符号。。。

回复 2

现在有点开心了 3年前

感觉有点问题?

回复 0

727761286 3年前

这一串匹配结果有大佬可以详细解答吗,/\\|\056\160\150\x70/i /\\|.php/i 不是最后是\或者.php吗,还是说\的优先级比|高,先对\|进行转义,多出来的\又转义一次?。虚心求教

回复 1

XiaoHexi 3年前

给第一次做这种题的人一点建议(我也是第一次),先试着把代码读懂,不然不知道怎么下手,web题目大部分都是要弄playload,代码弄懂之后playload基本可以自己写出来了

回复 0

2817001550 3年前

php正则表达式建议使用单引号括起来而不是双引号,这个题目充分说明了这一准则的重要性。

回复 1

orobos1 3年前

并不是“字符串转译一次,正则再转译一次”,而是遇到/会转译到尽头吧,因为在自己的电脑上将//改成/照样是同样的答案

回复 0

competition 3年前

http://www.regexp.cn/Regex,大家在这个网站上试试,感觉答案不对,仅有.php也可以匹配

回复 0
yswdlll 3年前

不太会,大佬能说一下这个怎么用么,为用那个生成代码功能跑python,跑不出来

回复 0

competition 3年前

感觉不太对啊,"/\\|.php/"不是应该是\或者.php的字符吗?为什么一定要有|这个符号?

回复 3
4thrun 3年前

同问,(\\)|.php行不行呢

回复 1

roguelike 3年前

同问

回复 1

王曦之啊 3年前

if(preg_match("/\\|\056\160\150\x70/i",$third)) 有大佬能详细讲解一下这一步怎么搞吗?

回复 0
Anyyy 3年前

$end=substr($third,5);就是表示截断third的前五位,所以要拼接成xxxx|.php,这样保留下的就是.php,最后要和base64解码后的zero拼接成flag.php就出来了

回复 2

Anyyy 3年前

\056\160\150\x70 是 十六进制和八进制的Ascii编码,解出来就是 ".php" /\\|.php/i

回复 1

fstr0w 3年前

这道题挺好,对我这种php和re都不太熟悉的人来说,能学到很多。

回复 0

WriteUp

image
DD03

8 金币

评分(8)

解题动态

sun_space 攻破了该题 2天前
zmzm 攻破了该题 4天前
冯123456 攻破了该题 4天前
a5580990 攻破了该题 4天前
shingu 攻破了该题 6天前
看writeup刷题 攻破了该题 12天前
liujiahaoctf 攻破了该题 12天前
1926104116 攻破了该题 13天前
223080174 攻破了该题 17天前
qgys 攻破了该题 17天前
YEaling 攻破了该题 18天前
A-L 攻破了该题 19天前
288728 攻破了该题 20天前
15080841307 攻破了该题 20天前
小手冰凉 攻破了该题 21天前
tingsi464 攻破了该题 22天前
c2F1eQ 攻破了该题 22天前
ymkiras 攻破了该题 22天前
clannad 攻破了该题 23天前
nina123 攻破了该题 24天前
问题反馈