admin管理员组文章数量:1794759
简单的poc以及exp编写(入门篇)
本文中主要针对的是Web应用渗透中的漏洞,而与Web应用之间的交互大多是基于HTTP协议的。所以用到python中与HTTP协议相关的一些模块
文章目录- 一、何为poc和exp
- 二、基础环境Python3
- HTTP
- requests模块中的http方法
- 参数
- 对象方法
- 三、使用
- 相关操作
- ①如何定制头部
- ②超时
- ③GET 传参
- ④POST 传参
- ⑤文件上传
- ⑥cookies
POC
Proof of Concept中文意思是“观点证明”,是用来检测是否存在漏洞的脚本
EXP
Exploit的中文意思是“漏洞利用”,是用来利用该漏洞的脚本
二、基础环境Python3 HTTPGET | 获取资源 |
POST | 传输实体主体 |
PUT | 传输文件 |
HEAD | 获得响应报文首部 |
DELETE | 删除文件 |
OPTIONS | 查询支持的方法 |
TRACE | 追踪路径 |
CONNECT | 要求用隧道协议进行连接 |
LINK | 建立和资源之间的连接 |
res = requests.get() |
res = requests.post() |
res = requests.put() |
res = requests.delete() |
res = requests.head() |
res = requests.options() |
HTTP头部 | headers |
POST参数 | data |
文件 | files |
Cookies | cookies |
重定向处理 | allow_redirects=False/True |
超时 | timeout |
证书验证 | verify=False/True |
工作流(延迟下载) | stream=False/True |
事件挂钩 | hooks=dict(response) |
身份验证 | auth= |
代理 | proxies= |
text | .text |
编码 | .encoding/.enconding= |
响应内容 | .content |
Json解码器 | .json |
原始套接字响应 | .raw/.raw.read() |
历史响应代码 | .history |
抛出异常 | .raise_for_status |
查看服务器响应头 | .headers |
查看客户端请求头 | .request.headers |
查看cookies | .cookies |
身份验证 | .auth= |
更新 | .update |
解析连接字头 | .links[] |
了解了这些之后就可以试着去使用python的request模块 先在本地开启phpstudy模拟服务器端 在服务器创建这样的页面用来接收返回数据 接着编写python脚本
import requests res=requests.get("127.0.0.1/pocexp/get.php") print(res.text) #获取内容 print(res.status_code) #获取响应状态码 print(res.encoding) #获取响应编码 print(res.content) #以二进制方式获取响应正文 print(res.headers) #获取响应头部 print(res.url) #获取提交的URL运行后可以看到这些结果
相关操作 ①如何定制头部 import requests url = "127.0.0.1/pocexp/get.php" header = {"User-Agent":"L1NG"} res = requests.get(url=url,headers=header) print(res.request.headers)运行后可以看到这样的结果
②超时在服务器创建这样的页面用来接收返回数据 访问该页面时5s后才会显示 此时编写python超时脚本
import requests url = "127.0.0.1/pocexp/timeout.php" try: res = requests.get(url = url,timeout = 3) #超过3s没获取到页面 输出Timeout print(res.text) except Exception as e: print("Timeout")如果3s没有获取到页面则会显示Timeout
③GET 传参 import requests url = "127.0.0.1/pocexp/get.php" getPara = {"name":"L1NG","pwd":"666"} res = requests.get(url = url,params = getPara) print(res.text) print(res.url) ④POST 传参在服务器创建这样的页面用来接收返回数据
import requests url = "127.0.0.1/pocexp/post.php" postData = {"name":"L1NG","pwd":"123456"} res = requests.post(url = url,data = postData) print(res.text) ⑤文件上传在服务器创建这样的页面用来接收返回数据
<html> <meta charset="utf-8"> <h1> 文件上传测试 </h1> <form action="" method="post" enctype="multipart/form-data" > <input type="file" name="userUpFile"> <input type="submit" name="userSubmit" value= "上传"> </form> </html> <hr /> <?php echo"<pre>"; if(isset($_POST['userSubmit'])){ var_dump($_FILES); $tmp_path=$_FILES['userUpFile']['tmp_name']; $path=__DIR__."\\\\".$_FILES['userUpFile']['name']; //echo $path; if(move_uploaded_file($tmp_path,$path)){ echo "upfile success!"; echo "<br />".$_FILES['userUpFile']['name']; echo $path; }else{ echo "upfile failed"; } } ?>编写上传文件的python脚本
import requests url = "127.0.0.1/pocexp/upfile.php" upFile = {"userUpFile":open("poc.py","rb")} postData = {"userSubmit":"submit"} res = requests.post(url = url,files = upFile,data = postData) print(res.text)会发现文件已经成功上传到php页面的文件夹下
⑥cookies在服务器创建这样的页面用来接收返回数据
import requests url="127.0.0.1/pocexp/cookie.php" coo = {"name":"L1NG"} res = requests.get(url = url,cookies = coo) print(res.text)下一节讲述利用sql-lab-8和sql-lab-9编写获取数据库的exp 简单的poc以及exp编写(进阶篇)
版权声明:本文标题:简单的poc以及exp编写(入门篇) 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686648059a90331.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论