关于utf-8编码值 [ASIS 2019]Unicorn shop
0x00 前言
这题拿到之后有点懵,后来看了 网上的 wp 更加懵,网上大多数都是直接说 去 compart 搜thousand,然后找个大于1337 的就可以,至于为什么?基本都没有给出解答。
于是乎 就有了这篇水文
0x01 自找 wp 过程
既然网上的wp 基本都没给出一个合理的解释,那么我们就自己去找原因。首先 想这道题要是有源码的话,那么一切都好解决了,于是尝试性地 去 github 搜了搜 ,还真搜到源码了。https://github.com/Tiaonmmn/asis_2019_unicorn_shop
关键代码在 shop.py 里面
注意框起来的那两处的作用就是把传入的price 参数 url 解码之后utf-8解码,然后返回对应的 Numeric Value 值
unicodedata.numric :
官方文档中的解释为:
讲实话没看懂,然后又去网上搜了搜,找到了一个通俗易懂的解释:
那么现在就知道网上为什么要去搜thousand了就是为了找大于3117的 numeric value 值,搜了thousand之后
然后一个个字符找,看哪个字符里面的numeric value 大于 1337,比如这个:
但是如果没有numeric value 比如这个:
或者numeric value 小于3317,比如这个:
都是不行的。
然后我想 为啥要搜呢? 我直接用 中文 “万” 不就可以了吗?‘亿’ 也不错啊 😂 (手动滑稽)
所以最后:
就可以得到flag:
0x03 后记
对于查看了wp 之后有不懂的地方或者wp 上没讲明白的地方(也可能是自己水平太次,写 wp 的大佬 一笔带过的地方 ,自己却不清楚原因),要自己去探索,动手去查,还有要发散自己的思维,有自己的想法,而不是硬搬 wp 上的东西。