一、护网-Web基础
1.web开发基础
1.1识别网络上的设备
- IP地址(4个八位数)
- MAC地址
1.2DNS请求流程
1.3 HTTP
HTTPS = HTTp + ssl
http请求方法
- GET(从web服务器获取请求)
- POST(向web服务器提交数据)
- PUT(向网络服务器提交请求)
- DELETE()
1.4 HTTP状态码
根据状态码决定下一步攻击思路&防守思路
301(永久的重定向)
302(暂时的变化,版本变化自己会变)
400(告诉浏览器,请求中有错误)
401(一直去查看资源,直到获得网络授权 eg:用户名&密码错误)
403(无论是否登录,都没权限看资源)
404(请求页面资源不存在)
405(资源不允许以这种方式请求,eg:要求用post请求,结果拿get请求,报错)
500(服务器在请求中遇到错误不知道怎么处理)
503(服务器无法取得请求)
200(成功):服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
301(永久移动):请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响
应)时,会自动将请求者转到新位置。
302(临时移动):服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。
304(未修改):自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
401(未授权):请求要求身份验证。
403(禁止):没有权限,禁止访问。
404( 未找到):服务器找不到请求的网页。
500(服务器内部错误):服务器遇到错误,无法完成请求。
503(服务不可用):服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
1.5 Cookie
- 用于客户端计算机暂时&永久保存的信息
- 用于辨别用户身份
1.6 web是如何工作的
1.6.1 PHP
1.6.2 Mysql数据库
- 开源
- 跨平台
- 为多种编程语言提供API
1.6.3 与网安关系
- SQL注入
- Outfile和dumpfile写shell
- 日志getshell
- mof提权和udf提权
1.6.4 常见网站基础架构
- 同服务器
- 站库分离(源码数据库在不同服务器)
- 前后端分离(主流,大公司,安全性最高)
- 宝塔+phpstudy(新手易上手)
- 建站分配站
1.6.5 web应用架构
2. PHP登录页实现
2.1 PHP概念
2.2 前台登录页面
<?php
include("conn.php");
{
mathJaxContainer[0]}_POST['username'];
{
mathJaxContainer[1]}_POST['password'];
//判断输入账号密码是否正确
{
mathJaxContainer[2]}username' and pass='$password';";
//结果记录
{
mathJaxContainer[3]}conn2,$uapsql);
// var_dump($reslust);
// var_dump();
//确定有记录
if(mysqli_num_rows($reslust)){
//跳转到游戏页面
header('Location:youxi.php');
session_start();
$_SESSION['login']='true';
}else{
$login = "登录失败";
$_SESSION['login']='false';
}
?>
<html>
<head>
<meta charset=utf-8>
</head>
<h1>请输入账号以及密码</h1>
<form action="" method="post" ></br>
<input type="text" name="username"> </br>
<input type="password" name="password"> </br>
<input type="submit">
</form>
<a href="zhuce.php">点击注册</a></br>
<?php echo $login;?>
</html>
2.3 后台数据交互过程
连接数据库
<head>
<meta charset=utf-8>
</head>
<?php
$servername = "localhost";
$username = "root";
$password = "root";
// 创建连接(还可以包含库名,端口号)
//建立成功输出1,错误输出0
{
mathJaxContainer[4]}servername, {
mathJaxContainer[5]}password);
// 检测连接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
//输出一条信息,退出脚本
}
echo "连接成功";
?>
// 创建数据库
$sql = "CREATE DATABASE myDB";
if (mysqli_query({
mathJaxContainer[6]}sql)) {
echo "数据库创建成功";
} else {
echo "Error creating database: " . mysqli_error($conn);
}
mysqli_close($conn);
检测连接
<head>
<meta charset=utf-8>
</head>
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "kkk";
// 创建连接
{
mathJaxContainer[7]}servername, {
mathJaxContainer[8]}password);
{
mathJaxContainer[9]}servername, {
mathJaxContainer[10]}password, $dbname);
// 检测连接
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}else{
// echo "数据连接成功</br>";
if(mysqli_connect({
mathJaxContainer[11]}username, {
mathJaxContainer[12]}dbname)){
// // echo "数据库表已经存在";
// $conn2 = mysqli_connect($servername, $username, $password, $dbname);
}else{
echo "开始自动创建数据库</br>";
{
mathJaxContainer[15]}dbname;
mysqli_query({
mathJaxContainer[16]}sql);
echo "数据库创建成功</br>";
//如果不存在kkk_tbl的表头的话进行创建
$createtbl="CREATE TABLE IF NOT EXISTS `kkk_tbl`(
`id` INT UNSIGNED AUTO_INCREMENT,
`user` VARCHAR(10) NOT NULL,
`pass` VARCHAR(10) NOT NULL,
`phone` VARCHAR(11) NOT NULL,
`file` VARCHAR(30) ,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;";
{
mathJaxContainer[17]}servername, {
mathJaxContainer[18]}password, $dbname);
mysqli_query({
mathJaxContainer[19]}createtbl);
echo "数据表创建成功</br>";
}
}
// mysqli_close($conn);
?>
2.4 登录过程实现流程
通过表单获取账号和密码
数据库查询是否存在这个记录(mysql_query($conn,$sql))
3. HTTP协议
3.1 网络协议
第一台网络计算机,1969年发明
3.1.1 网络协议中的约定
3.1.2 TCP/IP协议簇
3.1.3 TCP/IP四层模型
3.1.5 数据的传输
3.1.6 OSI七层参考模型
3.2 HTTP诞生
3.2.1 HTTP协议
超文本传输连接(超链接),打破信息壁垒,让各个网页可以连接在一起
3.2.2 HTML
超文本标记语言,规范网页中的文档
3.2.3 URL
统一资源定位符
除了HTTP协议,还有file协议(本地计算机协议)
当访问百度时,浏览器默认添加443端口号
3.2.4 浏览器
用来解析网页
Netscape(世界上第一个浏览器)
Internet Explorer
Google Chrome(国产浏览器都是谷歌改版的,套壳)
3.2.5 web服务器
世界上第一个网站
http://info.cern.ch/
3.3 HTTP消息详细格式
3.3.1 请求方式
由于语义不同,响应方式不同,发送数据用get,提交数据用POST
(1)GET和POST区别
3.3.2 请求响应报文格式
(1)请求报文
请求头:对请求动作的描述
Accept:请求回来能接收什么类型的文件
Referer:从哪个网页来的
Accept—Language:告诉服务器当前使用的语言
UserAgent:客户端的描述-用什么来访问网页(华为电脑?华为手机?苹果电脑等等)
Content-Type:发送格式
Host:域名端口
Content-Length:请求内容长度
Connection:长链接&短连接
Cache-Control:没有缓存
Cookie:服务器给的标记(登录还是没登录)
(2)响应报文
3.3.3 响应状态码
3.3.4 特点总结
1.请求应答模式
2.灵活可扩展
3.可靠传输(3次握手,4次挥手)
4.无状态
5.明文传输
3.4 HTTP服务器
常见的服务器
Apache
Ngnix
tomcat
weblogic
python
python服务器
py2下,打开cmd启动
python -m http.server 8089
3.5 HTTP客户端
浏览器
APP(微信、支付宝、淘宝)
Python
Java
微信内置浏览器,直接用自己的浏览器上网
3.6 HTTP常用调试工具
1、F12 浏览器中开发者工具
2、hackbar(谷歌火狐插件)
3、BurpSuite
4、Postman(做测试必用)
5、Wireshark、Fiddler、Charles(抓包和解析包)
6、CURL(Linux下工具)