关于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 上的东西。

posted @ 2020-09-29 17:41  huhuf6  阅读(214)  评论(0编辑  收藏  举报