Unicode转码 [ASIS 2019]Unicorn shop1

打开题目

我们买最贵的试试看,结果提示只能输入一个字符

抓包分析一下看看

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

但是我们查看页面源代码,发现页面的编码是utf-8编码

所以,前端html使用的是utf-8,后端python处理使用的是unicode,编码不一致造成了转码问题

所以我们利用这个网址:

Unicode - Compart

我们直接搜索一万的数值用Unicode表示是什么

我们任意选择一个大于1337的数字就行

这里我们选择的是

找到它的utf-8编码

我们把0x替换成%,上传即可

或者直接输入汉字,万或者亿

还可以直接把这个字符复制过去

得到flag

知识点:

python之numeric

语法:unicodedata.numeric(chr[, default])

描述:将Unicode字符(chr)转换为等效的数值。以浮点形式返回【与chr相对应的数值】。若未定义这样的值,则返回默认值default;若未指定默认值,则抛出ValueError异常。(把一个表示数字的字符转换为浮点数。比如,可将’5’、'五’转换数值输出。与digit()不同是numeric()可以转换任意表示数值的字符,不仅仅限于0到9的字符)

示例代码如下:

print(unicodedata.numeric('四'))
print(unicodedata.numeric('a', 0)) # 'a'不能转换为数字,所以返回默认值0

输出结果为:

4.0
0

知识点参考:Python之unicodedata模块的常用函数用法_unicodedata.numeric-CSDN博客

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值