在HTTP响应头中有一部分非常重要的信息就是响应行中的状态码。
状态码都是由三位数字组成,比如状态码200表示请求成功。
状态码主要分为5个大类:
1xx:100-101,指示信息。这种状态码很少见到。
2xx:200-206,客户端请求被服务器成功接收并处理后返回的响应;
3xx:300-305,重定向,通常都是在身份认证成功后重定向到一个页面;
4xx:400-415,客户端请求错误;
5xx:500-505,服务器端错误。
状态码共有50多个,其中比较常见的有:
状态码 |
含义 |
200 |
客户端请求成功,常见状态。 |
302 |
重定向,跳转的地址通过location指定。 |
304 |
服务端资源未更新,服务器告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧。 |
403 |
服务器收到请求,但是拒绝提供服务。 |
404 |
请求资源不存在。 |
500 |
服务器内部错误。 |
大多数的网站扫描工具其基本工作原理都是基于状态码来进行判断。下面我们结合Burpsuite来进一步了解状态码。
我们首先访问服务器中的一个正常页面test1.php,此时的状态码为200。
然后再访问一个不存在的页面test10.php,此时状态码为404:
再去访问一个网站中并不存在的目录admin(注意,目录名字后面要加/),状态码依然是404。
我们接着在服务器中创建出目录admin,再次访问admin目录,此时显示状态码为200。
然后在服务器中执行chmod 700 admin命令,将目录权限设置为700:
再次访问目录时,状态码显示为403。这意味着admin目录存在,但当前用户没有权限访问。
再比如访问在Web服务器中安装的DVWA网站,打开登录页面,正确输入用户名和密码。然后在Burpsuite中拦截请求,并在repeater模块中发送出去,此时看到返回的状态码为302,意外着如果用户名和密码验证正确,那么就会自动跳转到某个指定的页面。至于具体要跳转到哪个页面,是在响应头的location字段中指定的。
如果重复访问某个静态页面,则会收到状态码304。表示服务器端资源未更新。比如将/etc/passwd文件复制到网站主目录中,当对这个文件重复发出访问请求后,服务器就会返回304状态码,表示在这段时间间隔内,所请求访问的文件内容并未发生变化,我们可以直接从本地缓存中来调取文件内容。
51CTO春季充电节活动开始啦,3月1日-3月13日购买本人课程可享5.9折,叠加满300-30,有需求的学员可以冲一波,价格非常实惠。
另外充电节盲盒福利和一元秒杀的羊毛大家也可以去薅一薅,有机会获得apple watch、任天堂游戏机等超多惊喜好礼。
活动链接: https://edu.51cto.com/surl=14qKe