WriteUp
这题刚开始一脸懵逼,似乎只有id为4
的时候才有用,然后学长说价格只能单个字符,且大于1337
,这下就更懵逼了。
之前碰到过php弱比较绕过数字大小比较的,但是这题限制了1字符,应该不是这种手法。
随便测试,发现输入空格
提交时能够使页面报错,然后顺着报错显示的部分代码找到了GitHub上的原题,查了一下这题的wp,知道了Unicode还有字符等价定义和数值化定义这种神奇的规范。
大致就是unicodedata.numeric
函数能够转换字符为其本身等价的数值,比如说①
、一
、1
、¹
、₁
、㈠
、⒈
、⑴
、ⅰ
、Ⅰ
都可以当作数值1
处理。(没具体测试,部分可能不行)
那么这题想要单个字符的数值化后大于1337
,其实就挺好解了,比如万
、亿
、兆
这种常用计量字符都可以当作payload(还有一堆特殊符号也都可以实现)。
flag
flag{aha_Y0u_G0t_Th14_F1a9!}