从零开始学Python:测试的必修课
📌 微信:CTF_JunMo
君陌-LNM发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担! |
📢 如侵权请私聊我们删文
在渗透测试与安全攻防领域,Python 是每一位安全从业者的必修课。它能让我们从手动点击浏览器,升级为自动化探测、批量测试漏洞的高效猎手。本文将围绕「好靶场」的五个核心练习,带你从零掌握 Python HTTP 请求的核心技能。
如果你是零基础,建议先夯实一些基础知识。这里也推荐一下国家网络空间安全人才培养基地的NISP一级 和 NISP二级 认证,非常适合刚入门的小伙伴系统学习,快速搭建知识框架。
👉[NISP一级购买微信跳转链接]👈#小程序://CISP/X519g8JFppaMbpG
👉[NISP二级购买微信跳转链接]👈#小程序://CISP/X519g8JFppaMbpG
(如无法点击,请添加微信咨询)
如果你想系统学习,同时获得权威认证,提升就业竞争力,强烈推荐报考 NISP一级 和 NISP二级。
NISP是国家网络空间安全人才培养基地的认证,含金量高,流程简单,尤其适合在校大学生和刚入行的网络安全从业者,是入门的“敲门砖”。
👉[NISP一级购买微信跳转链接]👈#小程序://CISP/X519g8JFppaMbpG
👉[NISP二级购买微信跳转链接]👈#小程序://CISP/X519g8JFppaMbpG
(如无法点击,请添加微信咨询)
Python GET:被动信息收集的基石
GET 请求是 HTTP 协议中最基础的「只读」请求,它不会修改服务器数据,是安全测试中最安全的初筛手段。
一、核心作用
信息收集:爬取网页源码、响应头,提取中间件、CMS 指纹、敏感文件路径。
资产探测:批量扫描 robots.txt、.git、备份文件等敏感路径。
参数漏洞测试:在 URL 中拼接 Payload,测试 SQL 注入、XSS 等 URL 参数型漏洞。
二、实战代码示例
import requests# 目标地址:http://域名:端口/flagurl = "http://xxx.xxx.xxx.xxx:xxxx/flag"# 发送GET请求response = requests.get(url)# 分析响应print(f"状态码: {response.status_code}")print(f"响应内容: {response.text}")# 这里通常会直接返回flag
✅关键要点:GET 参数直接拼接在 URL 后,适合被动、无侵入的探测场景。
Python POST:主动攻击的核心
与 GET 不同,POST 请求是主动向服务器提交数据的方法,是漏洞利用、登录爆破的核心载体。
一、核心作用
登录 / 弱口令爆破:批量提交用户名和密码,探测未授权访问。
POST 型漏洞利用:提交恶意 Payload 到表单或接口,测试 SQL 注入、命令注入等。
越权测试:篡改提交的数据,测试水平 / 垂直越权漏洞。
二、基础代码模板
import requestsurl = "http://xxx.xxx.xxx.xxx:xxxx/flag"# 基础POST请求(后续练习会在此基础上扩展)response = requests.post(url, data={})print(response.text)
✅关键要点:POST 数据藏在请求体中,比 GET 更隐蔽,适合传输敏感信息和攻击载荷。
Python POST-data:表单传参的标准姿势
application/x-www-form-urlencoded 是最传统的表单数据格式,也是 90% 网站登录框、后台表单采用的传参方式,我们称之为 Post-Data。
一、核心作用
弱口令爆破:这是最常用的场景,将 username 和 password 作为键值对提交。
表单漏洞测试:在表单字段中注入 Payload,测试 POST 型 SQL 注入、XSS。
二、实战代码示例
import requestsurl = "http://xxx.xxx.xxx.xxx:xxxx/flag"# Post-Data:键值对格式,对应HTML表单的name和valuepost_data = {"username":"admin","password":"123456"}response = requests.post(url, data=post_data)print(response.text)
✅关键要点:requests.post(url, data=字典) 会自动将字典编码为标准表单格式,无需手动处理 URL 编码。
Python POST-ua:伪造请求头,绕过基础防护
很多服务器和 WAF 会通过 User-Agent(UA)头来识别客户端。如果 UA 是 Python 脚本的默认标识,很容易被拦截。因此,伪造 UA 头是渗透测试的必备技能。
一、核心作用
绕过反爬 / 防护:将 UA 伪装成浏览器,避免被识别为脚本。
身份伪装:配合其他请求头(如 Referer、Cookie),绕过更复杂的验证逻辑。
二、实战代码示例
import requestsurl = "http://xxx.xxx.xxx.xxx:xxxx/flag"# 伪造请求头,模拟Chrome浏览器headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}post_data = {"key": "value"}# 携带自定义请求头发送POST请求response = requests.post(url, data=post_data, headers=headers)print(response.text)
✅关键要点:除了 UA,还可以伪造 Referer、Cookie、X-Forwarded-For 等头,进一步绕过防护。
Python POST-json:现代接口测试的必备技能
随着前后端分离架构的流行,越来越多的 Web 应用使用 JSON 格式 来传输数据。与传统的 Post-Data 不同,JSON 接口需要指定 Content-Type 并使用 json 参数提交。
一、核心作用
API 接口测试:测试 RESTful API、微服务接口的安全性。
JSON 型漏洞测试:在 JSON 字段中注入 Payload,测试 JSON 注入、命令执行等漏洞。
二、实战代码示例
import requestsurl = "http://xxx.xxx.xxx.xxx:xxxx/flag"# JSON格式数据json_data = {"user":"test","pass":"test123"}# 使用json参数提交,requests会自动设置Content-Type: application/jsonresponse = requests.post(url, json=json_data)print(response.text)
✅关键要点:requests.post(url, json=字典) 与 data=字典 的区别:
ldata=字典:默认 Content-Type: application/x-www-form-urlencoded
ljson=字典:自动设置 Content-Type: application/json,并将数据序列化为 JSON 字符串
总结与进阶
这五个练习层层递进,构成了 Python 安全测试的基础框架:
lGET:被动收集,摸清家底。
lPOST基础:主动出击,提交数据。
lPost-Data:表单交互,爆破核心。
lUA伪造:隐藏身份,绕过防护。
lJSON:对接现代 Web,测试 API。
掌握这些技能后,你就可以编写自动化脚本,批量扫描漏洞、爆破弱口令,成为一名高效的安全测试工程师。
⚠️ 重要提醒:所有测试必须在授权的合法靶场中进行,未经授权的渗透测试是违法行为。
文末福利 🎁
如果你对漏洞挖掘感兴趣,想获取更多学习资料(工具包、教程、靶场资源)和实战技巧,欢迎添加我的微信,拉你进交流群一起学习、一起进步!
📌 备注“公众号”,即可通过好友验证
【作者微信二维码图片占位】

(请扫描上方二维码添加好友,群内定期分享干货、解答疑问)