一、护网-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(服务不可用):服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
AI 代码解读
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>
AI 代码解读
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);
AI 代码解读
检测连接
<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);
?>
AI 代码解读
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端口号
AI 代码解读
3.2.4 浏览器
用来解析网页
Netscape(世界上第一个浏览器)
Internet Explorer
Google Chrome(国产浏览器都是谷歌改版的,套壳)
AI 代码解读
3.2.5 web服务器
世界上第一个网站
http://info.cern.ch/
AI 代码解读
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:服务器给的标记(登录还是没登录)
AI 代码解读
(2)响应报文
3.3.3 响应状态码
3.3.4 特点总结
1.请求应答模式
2.灵活可扩展
3.可靠传输(3次握手,4次挥手)
4.无状态
5.明文传输
AI 代码解读
3.4 HTTP服务器
常见的服务器
Apache
Ngnix
tomcat
weblogic
python
AI 代码解读
python服务器
py2下,打开cmd启动
python -m http.server 8089
AI 代码解读
3.5 HTTP客户端
浏览器
APP(微信、支付宝、淘宝)
Python
Java
微信内置浏览器,直接用自己的浏览器上网
AI 代码解读
3.6 HTTP常用调试工具
1、F12 浏览器中开发者工具
2、hackbar(谷歌火狐插件)
3、BurpSuite
4、Postman(做测试必用)
5、Wireshark、Fiddler、Charles(抓包和解析包)
6、CURL(Linux下工具)
AI 代码解读