Python编程实战深度网络安全攻击防御技巧

2510_93630752 2025-10-02 16:37:29

我用Python摸爬滚打的网络安全实战录从脚本小子到防御者的自白


大家好,我是老王,一个从脚本小子转型的安全工程师。今天想和大家聊聊这些年我用Python在网络安全领域摸爬滚打的血泪史。文章会包含端口扫描、漏洞利用、流量分析和防御加固四大核心技能,中间穿插不少我踩过的坑和实战代码。如果你也想像我一样从"只知道import requests的黑客电影模仿者"成长为能写出企业级防御系统的工程师,这篇万字长文可能会让你少走几年弯路。


从零开始的端口扫描术


刚入行时,我理解的扫描就是nmap一把梭。直到有次业务系统被我扫崩,才发现自己连最基本的socket编程都不懂。


python


import socket


from concurrent.futures import ThreadPoolExecutor


def scanport(target, port):


with socket.socket(socket.AFINET, socket.SOCKSTREAM) as s:


s.settimeout(1)


try:


s.connect((target, port))


print(f"[+] port/tcp open")


return True


except:


return False


多线程优化示例


def fastscan(target, ports):


with ThreadPoolExecutor(maxworkers=100) as executor:


results = executor.map(lambda p: scanport(target, p), ports)


return [p for p, r in zip(ports, results) if r]



记得第一次写这段代码时,我傻乎乎地没用线程池,扫描C段足足花了三小时。现在看这个版本虽然简陋,但包含了端口扫描的核心TCP三次握手检测。后来在导师要求下,我给扫描器加上了banner抓取功能


python


def grabbanner(target, port):


try:


s = socket.socket()


s.connect((target, port))


s.send(b'GET / HTTP/1.1\r\n\r\n')


return s.recv(1024).decode().strip()


except Exception as e:


return str(e)



当我在公司内网扫描出redis未授权访问时,那个暴露的"redisversion:5.0.7"让我真正理解了banner信息的重要性。不过要提醒新手的是,未经授权的扫描可能违法,我现在都随身带着领导签字的授权书。


SQL注入攻防博弈记


测试系统时,我发现某个登录框有古怪。随手输入' or 1=1 --居然直接进后台了!兴奋过后我意识到这是个危险的开始注入演示切勿用于非法用途


python


import requests


def naivesqli(url, param):


payloads = ["' or 1=1 --", "' admin' --", "' union select 1,2,3 --"]


for p in payloads:


r = requests.get(url, params=param: p)


if "welcome admin" in r.text:


print(f"漏洞存在!有效载荷: p")


return p


return None



这种简单检测在实战中远远不够。后来我用sqlmap源码改写出更智能的检测模块


python


def advanceddetect(url):


from bs4 import BeautifulSoup


自动识别表单


soup = BeautifulSoup(requests.get(url).text, '.parser')


forms = soup.findall('form')


for form in forms:


inputs = form.findall('input')


data = i.get('name'): f"1' AND 1=CONVERT(int,version)--"


for i in inputs if i.get('type') != 'submit'


if "SQL Server" in requests.post(url, data=data).text:


print("SQL Server版本泄露漏洞")



转防御角色后,我为公司Web系统写的参数化查询组件成功拦截了多次注入尝试


python


安全查询示例


def safequery(query, params):


conn = psycopg2.connect(DATABASEURI)


cur = conn.cursor()


cur.execute(query, params) 参数化关键在这里


return cur.fetchall()



真实案例去年我们有个重要客户被sql注入拖库,调查发现开发竟然在代码里用字符串拼接SQL!这让我连夜给全员做了ORM安全使用培训。


流量分析中的暗战


做流量监控时,我发现传统WAF根本拦不住定制化攻击。于是用Scapy写出了自己的流量指纹系统


python


from scapy.all import


def packethandler(pkt):


if pkt.haslayer(TCP) and pkt[TCP].dport == 80:


payload = str(pkt[TCP].payload)


检测经典XSS尝试


if any(tag in payload for tag in ['

...全文
228 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,464

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧