实验室每日一题WP-11月25日
题目是ASIS CTF 2019 Quals Unicorn shop原题,除了我把 独角兽 换成了 小猪佩奇。有所修改,其他没动。
打开题目http://,可以看出是让购买小猪佩奇,但是只允许输入一个字符,而小猪佩奇的价格是1337.0,这时候查看网页源码,可以看到提示
为utf8编码,然后了解一下utf8。
UTF-8
到目前为止,它是最流行的Unicode编码,因为它向后兼容ASCII。它是可变宽度的,根据需要使用一个,两个,三个或四个字节来表示所有1,112,064个Unicode代码点。
较常见的代码点位于较低的范围内,因此需要较少的字节表示,而单字节编码的前半部分等效于ASCII的128个字符。在较高的范围内,有一堆奇怪的东西。
所以我们只需要找到一个数值大于1337的unicode字符就行了
这个网站:https://www.compart.com/en/unicode/搜索大于 thousand 的单个字符,得到许多字符,随便挑一个,只要比1337大就可以购买佩奇了。
我随便选了一个数值为10w的,复制它的utf8编码0xE2 0x86 0x88,将“0x”替换成“%”得到"%E2%86%88"(不要有空格)
接着去输入 4 %E2%86%88 ,购买成功,得到flag
下面看一下这道题的源码。用的是 unicodedata.numeric()处理的输入的字符。
关于unicodedata.numeric()的说明:
所以这道题,我们输入中文或者其他字符 大于小猪佩奇的价格也是可以成功的。
输入4 万,操作成功。