目录
IP是什么:是计算机在互联网上的唯一标识(坐标,代号),用于在互联网中寻找计算机。
内网IP:路由以内的网络,可以连接互联网,但是互联网无法直接连接内网(需要端口映射)
BS架构:浏览器Browser---发送请求--->服务器Server---响应--->浏览器Browser
SQL注入:泄露破坏数据库,数据库中可能有账号密码等敏感信息
命令执行:获取目标机器命令权限,执行非法命令,破坏或控制受害机
前置知识导图:
TCP/IP体系结构(IP和端口):
IP是什么:是计算机在互联网上的唯一标识(坐标,代号),用于在互联网中寻找计算机。
访问网站时:域名会通过DNS(解析服务)解析成IP。
所以,互通的前提条件就是双方都能找到对方的IP地址。
内网(局域网)IP和公网(互联网)IP:
内网IP:路由以内的网络,可以连接互联网,但是互联网无法直接连接内网(需要端口映射)
如何判断自己的电脑是内网还是公网:
--在本地电脑命令行输入jipconfig,ifconfig(Linux,macos)查看IP地址
--如果使用了路由器,则在路由器管理界面查看外网IP
--百度搜索IP,查看百度显示的IP和本地电脑(或路由器)获取的IP是否一致
--不一致,则判断为内网IP
不一致,当前连接的是内网。
公网IP:互联网IP地址。
可以直接和互联网资源互通,不需要端口映射,日常应用如摄像头远程监控、电脑远程开机、主机游戏互联、NAS等等。
IP地址就像家庭地址一样,公网IP是小区地址,小区中又有很多住户,内网IP就是你家具体的门牌号,你可以从小区里出去(内网连接互联网),但是外人进入你家需要通过门岗验证(公网无法直接连接内网)。
端口是什么:是应用程序(服务)在计算机中的唯一标识。
端口是英文port的意译,可以认为是设备与外界通讯交流的出口。
端口可以分为虚拟端口和物理端口,其中虚拟端口指计算机内部或者交换机路由器内的端口,不可见。
端口一般使用数字编号进行排序。(网站一般是80端口)
源端口(客户机)端口随机,目标端口(服务器)端口固定开启监听。端口范围为0~65535
HTTP协议--网站访问的基础:
BS架构:浏览器Browser---发送请求--->服务器Server---响应--->浏览器Browser
HTTP协议是什么:超文本传输协议
传输协议定义了浏览器和客户端传输数据的格式(统一标准规范)
过程:浏览器请求服务器request请求消息---->服务器响应请求response响应消息
特点:
--基于tcp/ip协议
--默认端口号为80(可改)
--请求和响应一一对应
--每次请求相互独立,是无状态协议(“无状态“保证了网站传输的安全性)
请求消息: 
uri是什么:”统一资源定位符“
请求头:用于标识说明请求方的情况
请求空行:必须得有,这是个固定格式
请求体:空
HTTP常见有八种请求方式,常用get,post:
get请求:请求参数在url地址中,url有长度限制
post请求:请求参数在请求体中,无大小限制
区别:
--get的参数”wk=111“放在了网址的后面并加上了”?“
--post的参数则放在了请求体的位置
--post的请求头的最后多了一个Content-Type
请求头解析:
响应消息:
响应状态码:
常见Web漏洞:
---SQL注入 ---XSS ---文件上传 ---反序列化 ---文件包含 ---CSRF
---命令执行 ---信息泄露 ---XXE ---SSRF ---未授权访问
SQL注入:泄露破坏数据库,数据库中可能有账号密码等敏感信息
文件上传:上传后门病毒木马到网站中,破坏网站甚至系统
命令执行:获取目标机器命令权限,执行非法命令,破坏或控制受害机
命令执行:一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上,一般会给用户提供一个ping操作的web界面,用户从web界面输入目标ip,提交后后台会对该IP地址进行一次ping测试并返回测试结果。而如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交恶意命令,让后台进行执行,从而获得后台服务器权限。
命令连接符:
cmd1|cmd2:无论cmd1是否执行成功,cmd2将被执行
cmd1;cmd2:无论cmd1是否执行成功,cmd2将被执行
cmd1&cmd2:无论cmd1是否执行成功,cmd2将被执行
cmd1||cmd2:仅在cmd1执行失败时才执行cmd2
cmd1&&cmd2:仅在cmd1执行成功后时才执行
常见cmd命令:
whoami(查看当前用户名}
ipconfig(查看网卡信息)
shutdown -s -t 0(关机)
net user [username] [password] /add(增加一个用户名为username密码为password的新用户)
type [file_name](查看filename文件内容)
cmd防御low:
cmd防御medium:
最高效方法:过滤命令连接符---将这些符号替换成空,或者判断用户输入这些符号就终止执行
缺陷:过滤命令连接符时并没有把五个写全,所以用没有写上的连接符仍可以执行
渗透尝试解决方法:
白盒测试:可以看到源代码,查看源代码过滤机制
黑盒测试:看不到源代码,依次尝试常见命令连接符
cmd防御high:
注意:仔细观察开发者是否有失误,比如有时不时敲一下空格的习惯,导致过滤的不是连接符
这个过滤的就不是“|”,而是“| ”(多了一个空格)
cmd防御impossible:
源码:
分析:
典型算法解析:(整理-->拆分-->验证-->复原)