安装jdk-6u20-windows-i586.exe(需要java支持,bat里边就是用java执行的)
设置java环境变量,系统变量里配置 JAVA_HOME变量(默认已经设置好了)。
运行 start_webscarab.bat
Ie浏览器-工具-internet选项-连接-局域网设置-代理服务器地址:127.0.0.1,端口8008。
Intercept-intercept request前面打勾,登录http://192.168.125.253:8090/lybbs的拦截结果如下:
POST http://192.168.125.253:8090/lybbs/bbs_loginSubmit.do HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://192.168.125.253:8090/lybbs/bbs_index.do
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727)
Proxy-Connection: Keep-Alive
Content-length: 87
Host: 192.168.125.253:8090
Pragma: no-cache
Cookie: JSESSIONID=FBE828CD30FACC4B48E4E4547C0ADC7E; lybbsUserID="NA=="; hiddenCatalogIDStr=LDAs
userName=kldxzzhc2&password=19831120&cookieDate=0&validateCode=3983&submit=%B5%C7%C2%BC
解析:
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。
请求报文
一个HTTP请求报文由请求行(requestline)、请求头部(header)、空行和请求数据4个部分组成。
1、请求行由请求方法字段、URL字段、HTTP协议版本号字段三部分组成,他们由空格隔开。HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。这里介绍最常用的GET方法和POST方法。
GET:当客户端要从服务器中读取文档时,使用GET方法。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。
POST:当客户端给服务器提供信息较多时可以使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,可用来传送文件。
POST http://192.168.125.253:8090/lybbs/bbs_loginSubmit.do HTTP/1.1
2、请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://192.168.125.253:8090/lybbs/bbs_index.do
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded(POST方式和GET方法的最大区别就是把发送的数据和URI地址分离。请求参数是在http标题的一个不同部分(名为entity body)传输的,这一部分用来传输表单信息,因此必须将Content-type设置为:application/x-www-form-urlencoded。)
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727)
Proxy-Connection: Keep-Alive
Content-length: 87(在所有的HTTP的POST请求中,必须指定合法的内容长度(Content-Length)。
如果HTTP/1.0服务器在接收到请求消息内容时无法确定其长度,就会返回400(非法请求)代码。)
Host: 192.168.125.253:8090
Pragma: no-cache
Cookie: JSESSIONID=FBE828CD30FACC4B48E4E4547C0ADC7E; lybbsUserID="NA=="; hiddenCatalogIDStr=LDAs
空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
请求数据:请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。
userName=kldxzzhc2&password=19831120&cookieDate=0&validateCode=3983&submit=%B5%C7%C2%BC(输入用户名是kldxzzhc2,输入密码是19831120,cookieDate=0表示不保存信息,validateCode=3983表示输入的验证码是3983,此时若将截取到的验证码修改,再传到服务器,则服务器会提示验证码错误。)
备用知识:
WebScarab:分析HTTP和HTTPS协议的应用程序框架
WebScarab的原理很简单,它记录它检测到的会话内容(请求和应答),使用者可以通过多种形式来查看记录。WebScarab的设计目的是让使用者可以掌握某种基于HTTP(S)程序的运作过程;也可以用它来调试程序中较难处理的bug,也可以帮助安全专家发现潜在的程序漏洞。
什么是HTTP代理:www对于每一个上网的人都再熟悉不过了,www连接请求就是采用的http协议,所以我们在浏览网页,下载数据(也可采用ftp协议)时就是用http代理。它通常绑定在代理服务器的80、3128、8080等端口上。
在 Internet 上的每一台主机(Hosts)都有唯一的一个地址(IP),但同一台主机可能同时提供一种以上的服务,比如FTP服务、WWW服务等等,那么每一种服务就要占用该主机的一个端口(PORT)。
代理服务器常用的端口有:
HTTP代理:80/8080/3128/8081/9080
Proxy Server:代理服务器