数据包扩展-爱代码爱编程
request请求包格式
1.请求行:请求类型/请求资源路径、协议的版本和类型
由三个标记组成:请求方法、请求URL和HTTP版本,它们用空格分享
例:GET/index.html HTTP/1.1
2.请求头:一些键值对浏览器与web服务器之间都可以发送特定的某种含义
由关键字/值对组成,每成一对,关键字和值用冒号分享,请求头标通知服务器腾于客户端的功能和标识
HOST:主机或域名地址
Accept:指浏览器或其他客户可以接受的MIME文件格式,Servlet可以根据它判断并返回适当的文件格式
User-Agent:是客户浏览器名称
Host:对应网址URL中的web名称和端口号
Accept-Language:指出浏览器可以接受是语言种类,如en或en-us,指英语
connection:用来告诉服务器是否可以维持固定的HTTP连接,http是无连接的,HTTP/1.1使用Keep-Alive为默认值,这样当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都连接
Cookie:浏览器用这个属性向服务器发送Cookie,Cookie是在浏览器中寄存是小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能
Referer:表明产生请求的网页URL,如此从网页/icconcept/index.jsp中点击一个链接到网页/icwork/search,在向服务器发送的GET/icwork/search中的请求中,Referer是http://hostname:8080/icconcept/index.jsp,这个属性可以用来跟踪web请求从什么网站来的
Content-Type:用来表名request的内容类型,可以用HttpServletRequest的getContentType()方法取得
Accept-Charest:指出浏览器可以接受的字符编码,英文浏览器的默认值是ISO-8859-1
Accept-Encoding:指出浏览器可以接受的编码形式,编码方式不同与文件格式,它是为了压缩文件并加速文件传递速度,浏览器在接收到web响应之后先解码,然后再检查文件格式
3.空行:请求头与请求体之间用一个空行隔开
最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不会再有头标
4.请求体:要发送的数据(一般post提交会使用)
例:user=123&pass=123
使用POST传送,最常使用的是Content-Type和1.状态行:协议版本、数字形式的状态代码和状态描述,各个元素之间以空格分隔Content-Length头标
Response返回数据包数据格式:
一个响应由四个部分组成:状态行,响应头标,空行,响应数据
1.状态行:协议版本、数字形式的状态代码和状态描述,各个元素之间以空格分隔
2.响应头标:包含服务器类型、日期、长度、内容类型等
3.空行:响应头与响应体之间用空行隔开
4.响应数据:浏览器会将实体内容中的数据取出来,生成相应的页面
HTTP响应码
1XX——信息,请求收到,继续处理
2XX——成功,信息被成功的接受、理解和采纳
3XX——重定向,为了完成请求,而必须执行的操作
4XX——客户端错误
5XX——服务器错误
200——存在文件
403——存在文件夹
3XX——均可能存在
404——不存在文件或文件夹
500——均可能存在
根据响应码判断文件或文件夹是否存在
php文件获取IP地址的方法:
REMOTE_ADDR
HTTP_X_FORWARDED_FOR
HTTP_CLIENT_IP
CTF部分考题分析
来源页伪造
规定只能从某个特定的网站访问,那么可以进行伪造,通过burpsuite抓包得到数据报,然后可以更换referer=www.google.com,就可以伪造来源进入页面
浏览器信息伪造
更换浏览器信息,改为iPhone与2g条件下的nettype就可以
投票漏洞分析溯源
这类题目给定的是一个投票系统,除了分析前需要的一些条件(比如,它会限定这只能在微信端登录或者只能是2G网络等等,这种题目往往只需要更改USER-AGENT选项,更改浏览器信息就行);
IP地址进行伪造
其次是分析,这种漏洞是php文件对Ip地址的获取存在一个漏洞,它是根据ip地址来进行投票次数的限制,所以我们可以使用ip地址伪造,在burpsuite中进行攻击,从而达到刷票的目的