• idna与utf8编码漏洞


    来自Black hat 2019
    原理
    什么是IDN?
    国际化域名(Internationalized Domain Name,IDN)又名特殊字符域名,是指部分或完全使用特殊文字或字母组成的互联网域名,包括中文、发育、阿拉伯语、希伯来语或拉丁字母等非英文字母,这些文字经过多字节万国码编码而成。在域名系统中,国际化域名使用punycode转写并以ASCII字符串存储。

    什么是idna?
    A library to support the Internationalised Domain Names in Applications (IDNA) protocol as specified in RFC 5891. This version of the protocol is often referred to as “IDNA2008” and can produce different results from the earlier standard from 2003.
    >>> import idna
    >>> print(idna.encode(u'ドメイン.テスト'))
    结果:xn--eckwd4c7c.xn--zckzah
    >>> print idna.decode('xn--eckwd4c7c.xn--zckzah')
    结果:ドメイン.テスト

    Demo:
    ℆这个字符,如果使用python3进行idna编码的话
    print('℆'.encode('idna'))
    结果
    b'c/u'
    如果再使用utf-8进行解码的话
    print(b'c/u'.decode('utf-8'))
    结果
    c/u
    通过这种方法可以绕过网站的一些过滤字符

  • 相关阅读:
    mysql 存储过程
    python 模块 SQLalchemy
    python 模块 DButils
    转:6410中断控制详解
    ARM中MMU地址转换理解
    ok6410内存初始化
    ARM时钟初始化
    ARM处理器启动流程
    uboot启动流程
    ARM处理器启动流程
  • 原文地址:https://www.cnblogs.com/cimuhuashuimu/p/11490431.html
Copyright © 2020-2023  润新知