BUUCTF:[ASIS 2019]Unicorn shop

Posted 末 初

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BUUCTF:[ASIS 2019]Unicorn shop相关的知识,希望对你有一定的参考价值。

https://buuoj.cn/challenges#[ASIS%202019]Unicorn%20shop



功能是一个购物商店,输入商品ID和价钱进行点击购买。

源代码中提醒<meta charset="utf-8">很重要
html使用的是UTF-8编码

id和price都为空点击购买,返回报错及原因

从中可以发现源代码是如何处理price
使用的是unicodedata.numeric()

>>> import unicodedata
>>>
>>> unicodedata.numeric('1')
1.0
>>> unicodedata.numeric('11')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: numeric() argument 1 must be a unicode character, not str
>>>
>>> unicodedata.numeric('7')
7.0
>>> unicodedata.numeric('17')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: numeric() argument 1 must be a unicode character, not str
>>>


只能输入单个字符,猜测flag就是id = 4、price >= 1337
前端html使用的是utf-8,后端python处理使用的是unicode,编码不一致造成了转码问题

利用这个网站https://www.compart.com/en/unicode
找一下大于单个字符数值化之后1337的


找到这个字符的UTF-8 Encoding0xF0 0x90 0x84 0xA3
0x替换成%

id=4&price=%F0%90%84%A3

购买得到flag

以上是关于BUUCTF:[ASIS 2019]Unicorn shop的主要内容,如果未能解决你的问题,请参考以下文章

[ASIS 2019]Unicorn shop

[ASIS 2019]Unicorn shop

关于unicode编码问题——[ASIS 2019]Unicorn shop

BUUCTF | [GXYCTF2019]BabySQli

BUUCTF-web

BUUCTF-WEB