从面试题中学Web安全
转载自90sec
根据 Github 上的面经总结的一些安全岗面试的基础知识,这些基础知识不仅要牢记,而且要熟练操作,分享给大家,共勉。
如果有漏掉的大家可以留言或是联系作者补充,谢谢。
1.对Web安全的理解
我觉得 Web 安全首先得懂 Web、第三方内容、Web 前端框架、Web 服务器语言、Web 开发框架、Web 应用、Web容器、存储、操作系统等这些都要了解,然后较为常见且危害较大的,SQL 注入,XSS 跨站、CSRF 跨站请求伪造等漏洞要熟练掌握。
第三方内容: 广告统计、mockup 实体模型
Web前端框架: jQuery 库、BootStrap
Web服务端语言: aps.net、php
Web开发框架: Diango/Rails/Thinkphp
Web应用: BBS ( discuz、xiuno ) / CMS ( 帝国、织梦、动易、Joomla ) / BLOG ( WordPress、Z-Blog、emlog )
Web 容器: Apache ( php )、IIS ( asp )、Tomcat ( java ) – 处理从客户端发出的请求
存储:数据库存储 / 内存存储 / 文件存储
操作系统: linux / Windows
2.http协议
安装火狐浏览器常用插件方便HTTP抓包调试:
firebug:抓包与各种调试Tamper Data:拦截修改Live Http Header:重放功能Hackbar:编码解码 / POST 提交Modify Headers:修改头部
http常见状态码:
1xx:信息提示,表示请求已被成功接收,继续处理。2xx:成功,服务器成功处理了请求3xx:重定向,告知客户端所请求的资源已经移动4xx:客户端错误状态码,请求了一些服务器无法处理的东西。5xx:服务端错误,描述服务器内部错误200 请求成功,一般用于 GET 和 POST 请求301 URL 重定向,永久移动302 URL 重定向,临时移动404 请求资源不存在400 客户端请求有语法错误,不能被服务器理解401 请求未经授权403 服务器收到请求,但是拒绝服务500 服务器内部错误503 服务器当前不能处理客户端请求,一段时间后可能恢复正常
GET 和 POST:
GET方法用于获取请求页面的指定信息,如点击链接POST方法是有请求内容的,由于向服务器发送大量数据,如提交表单
http 请求:
http 请求包括三个部分,请求行 ( 请求方法 )、请求头 ( 消息报头 ) 和请求正文
http响应:
http 响应也由三部分组成,响应行,响应头 ( 消息报头 ) 和响应正文 ( 消息主题 )
3.数据库
基本 SQL 语句
增:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)删:DELETE FROM 表名称 WHERE 列名称 = 值查:SELECT 列名称 FROM 表名称改:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
mysql 有哪些表
mysql 自带的数据库有 information_schema、performance_schema、sys、mysql,information_schema 数据库是 mysql 自带的,它提供了访问元数据库的方式。
在 mysql 数据库中,有 mysql_install_db 脚本初始化权限表,存储权限的表有:
1、user表: 用户列、权限列、安全列、资源控制列2、db表 : 用户列、权限列3、host表4、table_priv表5、columns_priv表6、proc_priv表
sys 数据库表说明 sys_config ,这是在这个系统库上存在的唯一一个表了:
详见这两篇文章:
http://blog.csdn.net/xlxxcc/article/details/51754524http://blog.csdn.net/huwei0518/article/details/43563583
mysql 提权方式 ( 搭建环境使用 mysql5.1 或以前的版本)
mof 提权:
拿到 Webshell 后:
1.找一个可写目录上传mof文件,例如上传到 C:/Windows/nullevt.mof 代码如下:
2.执行load_file及into dumpfile把文件导出到正确的位置即可:
Select load_file('C:/Windows/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'
执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接即可
反弹端口提权
1、拿到 mysql root 权限,无法通过网站 Getshell,利用 mysql 客户端工具连接 mysql 服务器,然后执行下面的操作:
2、本地监听你反弹的端口
nc.exe -vv -l -p 2010
成功后,你将获得一个 system 权限的 cmdshell
Mysql udf 提权
目录位置:
c:\windows\system32
1、最常见的是直接使用 udf.php ( http://pan.baidu.com/s/1jIEIQbk ) 此类的工具来执行 udf 提权
具体如下:
连接到 mysql 以后,先导出 udf.dll 到 c:\windows\system32 目录下。
2、创建相应的函数并执行命令,具体如下:
某些情况下,我们会遇到 Can’t open shared library 的情况,
这时就需要我们把 udf.dll 导出到 lib\plugin 目录下才可以,利用 NTFS ADS 流来创建文件夹
select @@basedir; //查找到mysql的目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION'; //利用NTFS ADS创建plugin目录
执行成功以后再进行导出即可。
4.操作系统
死锁以及为什么发生死锁,解除死锁
死锁是指一组相互竞争系统资源或进行通信的进程间的"永久"阻塞。
产生死锁的原因:
(1)竞争系统资源(2)进程的推进顺序不当
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
解除死锁:
当发现有进程死锁后,应立即把它从死锁状态中解脱出来,常采用的方法有:
剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态;撤消进程可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态消除为止所谓代价是指优先级、运行代价、进程的重要性和价值等。
进程之间通信方式:
信号,管道,消息队列,共享内存。
启动流程 ( Windows ):
基本上操作系统是从计算机通电自检完成后开始进行的,这一过程可以分为 ( 预引导、引导、载入内核、初始化内核、登录等 5 个阶段 )
1) 预引导
通电自检后,从引导设备中读取并运行主引导记录MBR
2) 引导
引导阶段又可以分为 初始化引导载入程序、操作系统选择、硬件检测、硬件配置文件选择
在这一过程中需要使用的文件包括 ntldr、boot.ini、ntdetect.com、ntoskrnl.exe、ntbootdd.sys、bootsect.dos ( 非必须 )
A 初始化引导载入程序:
程序 ntldr 会自动寻找系统自带的一个微型的文件驱动,读取文件系统驱动并成功找到硬盘上的分区后,引导载入程序的初始化过程就已经完成。
B 操作系统选择:
ntldr 程序完成了初始化工作后就会从硬盘上读取 boot.ini 文件,进行操作系统选择(多系统)
C 硬件检测:
操作系统选择了想要载入的 Windows 系统后,ntdetect.com 首先要将当前计算机中安装的所有硬件信息收集起来并列成一个表,接着将该表发送给 ntldr,这个表的信息稍后会被用来创建注册表中有关硬件的键。这里需要被收集信息的硬件包括总线 / 适配器类型显卡、通讯端口、串口、浮点运算器 ( CPU )、可移动存储器、键盘、指示装置 ( 鼠标 )。
D 配置文件选择:
这个步骤不是必须的。
只有在计算机(常用于笔记本电脑)创建了多个硬件配置文件的时候才需要处理这一步
3) 载入内核阶段
在这一阶段,ntldr 会载入 Windows 的内核文件 ntoskrnl.exe,但这里仅仅是载入,内核此刻还不会被初始化。随后被载入的是硬件抽象层。接下来要被内核载入的是:HKEY_LOCAL_MACHINE\System 注册表键。
ntldr 会根据载入的 Select 键的内容判断接下来需要载入哪个 ControlSet 注册表键,这些键决定随后系统会载入哪些设备驱动或者启动哪些服务。
这些注册表键的内容被载入后,系统将进入初始化内核阶段。
这时候ntldr会将系统的控制权交给操作系统内核。
4) 初始化内核阶段
在这一阶段中主要会完成 4 项任务:
创建 Hardware 注册表键、对 Control Set 注册表键进行复制载入和初始化设备驱动、启动服务
A.创建Hardware注册表键:
Windows 内核会使用前面硬件检测阶段收集倒的硬件信息来创建 HKEY_LOCAL_MACHINE/Hardware 键。也就是说注册表中该键的内容不是固定的,会根据系统中的硬件配置情况动态更新。
B.对Control Set注册表键进行复制:
如果上一步成功,系统内核会对 Control Set 键的内容创建一个备份。这个备份会被用在系统的高级启动菜单中 "最后一次正确的配置" 选项。
例如,系统新装了一个显卡驱动,Hardware 还没有创建成功系统就崩溃了,这时就可以使用"最后一次正确的配置"选项,用上一次 Control Set 注册表键的备份内容重新生成 Hardware 键,从而撤销因安装了显卡驱动对系统设置的更改。
C.载入和初始化设备驱动:
操作系统内核首先会初始化之前在载入内核阶段载入的底层设备驱动,然后会在注册表的,HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 键下查找所有 Strat 键值为 1 的设备驱动,这些设备驱动将会在载入之后立刻进行初始化。
D.启动服务:
系统内核成功载入并且成功初始化所有底层设备驱动后,ntoskrnl.exe 创建会话管理器进程 smss.exe,这是第一个用户态进程 会话管理器会启动其他高层子系统和服务,加载并初始化内核模式中的 Win32 子系统 ( win32k.sys ),启动 csrss.exe ( win32 子系统在用户模式的部分 ),进而启动 Win32 子系统。Win32 子系统的作用是控制所有输入 / 输出设备以及访问显示设备。当这些操作都完成后,Windows 的图形界面就可以显示出来了,同时用户也将可以使用键盘以及其他 I/O 设备。
接下来会话管理器会启动 winlogon 进程。至此,初始化内核阶段已经成功完成,这时候用户就可以开始登陆了。
5)登录阶段
这一阶段,由会话管理器启动的 winlogon.exe 进程将会启动本地安全性授权 lsass.exe 子系统,加载图形化标识和验证 ( Graphical Identfication and Authentication,GINA ) 并等待用户登录。
默认 GINA 是 Msgina.dll,可以自行开发 GINA 实现基于生物信息的用户登录 ( 指纹识别,人脸识别 ),然后启动后台服务管理器 services.exe ,通过它启动所有标识为自动启动的 Win32 服务程序。
在登录过程中,后台可能仍在加载一些非关键的设备驱动。系统会再次扫描 HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 注册表键,寻找 Start 键的数值是 2 或者更大数字的服务。这些服务就是非关键服务,系统直到成功登录后才开始加载这些服务,至此,Windows 启动过程完成。
线程:
线程有时候又被称为轻量级进程,是程序执行的最小单元。
一个进程可对应多个线程,而一个线程只属于一个进程。进程的执行是以线程为单位进行的,比如说一个简单 “hello world” 程序只有一个线程,就是 main() 函数对应的线程。
保护模式,实模式
保护模式与实模式相对应,在保护模式下, CPU 的寻址模式与实模式不同。
实模式下的寻址方式是 “段基址+段偏移”,段的默认大小为 64kb ,所有段都是可读写的,唯有代码段是可执行的,段的特权级为 0。
特权级有 0、1、2、3 四个级别,0 特权级别最高,3 特权级别最低想要控制系统,就必须取得0特权级,比如调试工具 SoftICE 就工作在0特权级上。
5.https的建立过程
1.客户端发送请求到服务器端 ( 支持的加密协议及版本,SSL,TLS )
2.服务端筛选合适的加密协议,返回 CA 证书和公开秘钥(公开秘钥作为证书的一部分而存在)
3.客户端使用浏览器根证书验证证书的合法性
4.如果验证通过,客户端生成对称秘钥,通过证书中的公钥加密,发送到服务端
5.服务端使用私钥解密,获取对称秘钥,使用对称秘钥加密数据
6.客户端使用共享秘钥解密数据,建立 SSL 加密通信…
6.TCP三次握手的过程以及对应的状态转换
源主机给目标主机发送一个 SYN 标志位为 1 的数据包
目标主机自动应答,SYN 和 ACK 均设置为 1,序号 SEQ 为 Y,并将确认号设置为 Y+1
源主机收到目标主机返回的第二次握手的数据包后,向目的主机发送一个 ACK 标志位为 1 的应答包示意对第二次握手确认要建立连接,第三次握手数据包的序号为 SEQ 为 X+1,确认号为 Y+1。
7.SQL注入漏洞
基本原理和防范
应用程序对用户输入的数据校验处理不严或者根本没有校验,以至用户可以直接执行 SQL 查询
1.对特殊字符进行转义处理(可能被编码绕过)
2.使用参数化语句 (完全杜绝 SQL 注入) 以 PHP 的 PDO 或 mysqli 为例:
PDO ( 使用序数参数 ):
除了数据库数据,利用方式还有哪些?
A 获取系统 shell
B 留数据库后门
8.XSS漏洞
基本原理和分类
当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞。
分类:
反射型:经过后端,不经过数据库存储型:经过后端,经过数据库DOM 型:不经过后端,DOM—based XSS 漏洞,是基于文档对象模型 ( Document Objeet Model,DOM ) 的一种漏洞,DOM xss 是通过 url 传入参数去控制触发的。
XSS防范
前端:
对用户输入进行编码转换
后端(在入口和出口都过滤):
对输入和输出都编码转换
可以自己编写过滤函数,调用也行。或者查找网上的 XSS 过滤函数。
xssfuzzing
一个基本的流程是:
1.检测输入点
2.潜在注入点检测
3.生成 payload
4.Payload 攻击验证
详细参考下面这篇文章:
https://www.qcloud.com/community/article/172258001490259493
xss还能干什么?
A 重定向网站
B 组建僵尸网络
更多:
http://bobao.360.cn/learning/detail/159.html
9.CSRF
原理与防范
由于浏览器自动发送会话 Cookie 等认证凭证,导致攻击者能够创建恶意的 Web 页面来产生伪造请求
案例:
上面一句话概括了 CSRF 的原理,下面我虚构了一个案例帮助理解:
123456:李白的用户 ID741741:杜甫的用户 ID941941:白居易的用户 ID
李白正在某银行网站给白居易转账,则有以下 URL
http://www.abc.com/zhuanzhang?=amount=500&fromAccount=123456&toAccount=941941
杜甫构造一个请求,把李白账户中的钱转到自己账户中(并且修改了金额为 5000 )
杜甫在他控制的多个网站中嵌入这段代码,李白只要登录了银行网站,又恰巧访问了杜甫控制的网站,李白的 5000 块钱就会转给杜甫
防范:
1.给每个 HTTP 请求添加一个不可预测的令牌,并保证该令牌对每个合法用户来说是唯一的,将独有的令牌包含在隐藏字段中,通过 HTTP 请求发送,避免在URL中暴露出来。
2.要求用户重新认证或判断他是一个真实的用户
csrf 如何不带 referer 访问?
那么什么是referer呢?
根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站。比如某银行的转账是通过用户访问 http://bank.test/test?page=10&userID=101&money=10000 页面完成,用户必须先登录 bank.test,然后通过点击页面上的按钮来触发转账事件。当用户提交请求时,该转账请求的 Referer 值就会是转账按钮所在页面的 URL(本例中,通常是以 bank. test 域名开头的地址)。而如果攻击者要对银行网站实施 CSRF 攻击,他只能在自己的网站构造请求,当用户通过攻击者的网站发送请求到银行时,该请求的 Referer 是指向攻击者的网站。因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.test 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,就有可能是 CSRF 攻击,则拒绝该请求。
测试发现:
测试发现 302 跳转不会带 referer,可以直接请求配置写 php 代码实现不带 referer 访问
302 跳转 php 代码实现
还有更简单的方式,使用 html 中 a 标签的一个属性
<a href="http://www.51xkx.cn" rel="noreferrer">test
10.SSRF 漏洞
原理介绍
SSRF ( Server-Side Request Forgery: 服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统 SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,下载等等.
如何寻找?
一、从 Web 功能上寻找
1)分享:通过URL地址分享网页内容
2)图片加载与下载:通过URL地址加载或下载图片
3)图片、文章收藏功能
二、从 URL 关键字寻找
大致有以下关键字:
share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain
如果利用 google 语法加上这些关键字去寻找 SSRF 漏洞,耐心的验证,现在还是可以找到存在的 SSRF 漏洞
如何深入利用?如何探测非 HTTP 协议?如何防范?
这两篇文章写的不错,搭建环境什么的都有:
http://www.91ri.org/17111.htmlhttps://www.t00ls.net/articles-41070.html
11.如何渗透一个网站/思路(渗透测试流程)
1.信息收集
whois 查询 //站长工具
DNS 信息 //站长工具
子域名查询 //站长工具
旁站、C 段查询:http://www.webscan.cc/
开放协议、操作系统、中间件、使用的开源 Web 应用(如 WordPress,凭借经验判断)
用 nmap 进行端口扫描:
nmap-sP 192.168.1.100 //查看一个主机是否在线nmap 192.168.1.100 //查看一个主机上开放的端口nmap-p 1-1000 192.168.1.100 //扫描指定端口范围nmap-p 80 192.168.1.* //扫描特定端口nmap-O 192.168.1.100 //判断目标操作系统类型nmap-sV 192.168.1.100 //查看目标开放端口对应的协议及版本信息
获取 WAF、IDS、防火墙信息 ( 使用 hping3、wafw00f 等工具)
网站目录 ( 使用工具 DirBuster )
数据库类型:
我通常是通过中间件信息和开放端口来判断,这些只是判断思路并不是 100% 正确
MySQL:Apache+PHP:3306MSSQL:asp+IIS:1433Oracle:Java+Tomcat:1521PostgreSQL:5432
2.漏洞扫描
使用 w3af、AWVS、Nessus、APPscan 等专业的漏洞扫描器自动化扫描,或者,用自己收集的EXP编写漏洞扫描器
3.漏洞利用
SQLmap:SQL 注入利用BeFF:XSS 漏洞利用Metasploit:漏洞利用模块
总而言之,根据扫描到的漏洞选择合适的方法或工具来利用
4.权限获取
后台编辑器提权、Webshell 提权、数据库提权、内网渗透提权
5.分析报告
渗透测试范围和内容 ( 包不包括社工··· )
脆弱性分析:
有哪些漏洞哪些风险等等、漏洞信息以图示出。
检测过程
使用的方法和工具改善建议和修复方案
如何社工一个企业的员工信息:
嗯,不太擅长,简单说一下吧~先线上搜索他的公开信息,社交账号,社交圈子等等可以先从他身边的人间接了解他本人然后以顾客的身份接近,套取所需信息再者时间充裕的可以跟踪一下(违法危险,被抓住容易被揍成猪头)然后就是投其所好获取信任了
12.需要认识的常见端口
13.如何获取 Web 指纹
1:网页中发现关键字
2:特定文件的 MD5(主要是静态文件、不一定要是 MD5 )
3:指定 URL 的关键字
4:指定 URL 的 TAG 模式
whatweb ( Ruby 写的 ) 是一个 web 应用程序指纹识别工具,可以鉴别出内容管理系统 ( CMS ),博客平台、统计分析软件、javascript 库、服务器和其他更多Web程序。
whatweb 拥有超过 900 个插件,插件是用来鉴别 Web 应用系统的。
可以说 whatweb 是目前网络上比较强大的一款应用识别程序了。
它支持正则表达式、md5 hash 匹配、url 识别、HTML 标记模式、蜘蛛爬行等等
下载地址:
https://github.com/urbanadventurer/whatweb/
plecost 是基于 python 架构,利用了 Beautiful Soup 来解析 html、xml 文件,识别网站使用的插件及版本。kali 系统上集成了这个工具。(感兴趣的可以试着读读它的代码,自己开发一个指纹识别工具)
14.如何代码审计
自己找到过的代码审计问题
15.如何做扫描器-思路-为什么要这么设计
端口扫描器:
通过连接测试服务端口可以判断端口是否开放
(1) TCP 全连接扫描
尝试与目标主机建立正常的TCP三次握手,如果能建立三次握手,说明目标端口开放,但是扫描过程容易被检测到。
(2) TCP SYN 扫描 ( TCP 的半连接扫描)
利用 TCP 前两次握手,如第二次握手回复了,则证明端口开放,因为没有第三次握手建立连接,降低了被发现的可能,同时提高了扫描性能
(3) TCP FIN 扫描
向目标主机发送 FIN 标志位为 1 的数据包进行探测。
如果目标端口开放,则丢弃此包,不进行回应
若未开放,则返回一个 RST 标志位为 1 的数据包
这种扫描更隐秘又叫秘密扫描通常用于 UNIX 操作系统主机
有的 Windows 主机 ( Windows NT ),不论端口是否开放都回复 RST。
(4) UDP 的 ICMP 端口不可达扫描
用 UDP 协议向目标主机 UDP 端口发送探测数据包。
如果目标端口未打开,会返回一个 ICMP_PORTUNREACHABLE 错误。
根据是否收到这个消息,可以发现关闭的 UDP 端口
(5) ICMP 扫描
用 ICMP 协议向目标主机发送一个协议存在错误的 IP 数据包
根据反馈的 ICMP 信息判断目标主机使用的网络服务和端口
(6) 乱序扫描和慢速扫描
将扫描端口的顺序打乱,降低扫描速度,躲避防火墙和入侵检测系统的检查
漏洞扫描器
用模拟攻击扫描出具体的漏洞类型
比如 SQL 漏洞扫描器用 payload 字符去试、使页面报错
一个 SQL 漏洞扫描器实例:
http://blog.csdn.net/oxuzhenyi/article/details/72763486?locationNum=13&fps=1
防范扫描可以在目标主机和网络的外围边界部署防火墙和入侵检测系统
16.黑客兵器谱(渗透常用工具)
信息收集: Maltego
Web 程序 ( 拦截、重放 ):Burp suite
端口扫描: nmap (其实不仅仅是端口扫描它的脚本也很有用)
漏洞扫描:w3af、AWVS、Nessus、AppScan
SQL 注入神器: SQLmap
sqlmap 给出类型对安全研究有什么帮助(区别有、无),tamper 脚本使用:信安之路的一篇总结挺好,地址:
http://mp.weixin.qq.com/s/vEEoMacmETUA4yZODY8xMQ
XSS利用框架:BeEF
漏洞利用框架:metasploit
爆破利器:Hydra
17.python
基础类库
常用第三方类库、爬虫的基本流程
18.挖过哪些有趣的漏洞讲述过程
分享一个域名劫持钓鱼获取管理权限的思路文章吧:
http://mp.weixin.qq.com/s/iteYPCNPq0Sly1nf8QJWhg
https://forum.90sec.com/t/topic/503
根据 Github 上的面经总结的一些安全岗面试的基础知识,这些基础知识不仅要牢记,而且要熟练操作,分享给大家,共勉。
如果有漏掉的大家可以留言或是联系作者补充,谢谢。
1.对Web安全的理解
我觉得 Web 安全首先得懂 Web、第三方内容、Web 前端框架、Web 服务器语言、Web 开发框架、Web 应用、Web容器、存储、操作系统等这些都要了解,然后较为常见且危害较大的,SQL 注入,XSS 跨站、CSRF 跨站请求伪造等漏洞要熟练掌握。
第三方内容: 广告统计、mockup 实体模型
Web前端框架: jQuery 库、BootStrap
Web服务端语言: aps.net、php
Web开发框架: Diango/Rails/Thinkphp
Web应用: BBS ( discuz、xiuno ) / CMS ( 帝国、织梦、动易、Joomla ) / BLOG ( WordPress、Z-Blog、emlog )
Web 容器: Apache ( php )、IIS ( asp )、Tomcat ( java ) – 处理从客户端发出的请求
存储:数据库存储 / 内存存储 / 文件存储
操作系统: linux / Windows
2.http协议
安装火狐浏览器常用插件方便HTTP抓包调试:
firebug:抓包与各种调试Tamper Data:拦截修改Live Http Header:重放功能Hackbar:编码解码 / POST 提交Modify Headers:修改头部
http常见状态码:
1xx:信息提示,表示请求已被成功接收,继续处理。2xx:成功,服务器成功处理了请求3xx:重定向,告知客户端所请求的资源已经移动4xx:客户端错误状态码,请求了一些服务器无法处理的东西。5xx:服务端错误,描述服务器内部错误200 请求成功,一般用于 GET 和 POST 请求301 URL 重定向,永久移动302 URL 重定向,临时移动404 请求资源不存在400 客户端请求有语法错误,不能被服务器理解401 请求未经授权403 服务器收到请求,但是拒绝服务500 服务器内部错误503 服务器当前不能处理客户端请求,一段时间后可能恢复正常
GET 和 POST:
GET方法用于获取请求页面的指定信息,如点击链接POST方法是有请求内容的,由于向服务器发送大量数据,如提交表单
http 请求:
http 请求包括三个部分,请求行 ( 请求方法 )、请求头 ( 消息报头 ) 和请求正文
http响应:
http 响应也由三部分组成,响应行,响应头 ( 消息报头 ) 和响应正文 ( 消息主题 )
3.数据库
基本 SQL 语句
增:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)删:DELETE FROM 表名称 WHERE 列名称 = 值查:SELECT 列名称 FROM 表名称改:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
mysql 有哪些表
mysql 自带的数据库有 information_schema、performance_schema、sys、mysql,information_schema 数据库是 mysql 自带的,它提供了访问元数据库的方式。
在 mysql 数据库中,有 mysql_install_db 脚本初始化权限表,存储权限的表有:
1、user表: 用户列、权限列、安全列、资源控制列2、db表 : 用户列、权限列3、host表4、table_priv表5、columns_priv表6、proc_priv表
sys 数据库表说明 sys_config ,这是在这个系统库上存在的唯一一个表了:
详见这两篇文章:
http://blog.csdn.net/xlxxcc/article/details/51754524http://blog.csdn.net/huwei0518/article/details/43563583
mysql 提权方式 ( 搭建环境使用 mysql5.1 或以前的版本)
mof 提权:
拿到 Webshell 后:
1.找一个可写目录上传mof文件,例如上传到 C:/Windows/nullevt.mof 代码如下:
2.执行load_file及into dumpfile把文件导出到正确的位置即可:
Select load_file('C:/Windows/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'
执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接即可
反弹端口提权
1、拿到 mysql root 权限,无法通过网站 Getshell,利用 mysql 客户端工具连接 mysql 服务器,然后执行下面的操作:
2、本地监听你反弹的端口
nc.exe -vv -l -p 2010
成功后,你将获得一个 system 权限的 cmdshell
Mysql udf 提权
目录位置:
c:\windows\system32
1、最常见的是直接使用 udf.php ( http://pan.baidu.com/s/1jIEIQbk ) 此类的工具来执行 udf 提权
具体如下:
连接到 mysql 以后,先导出 udf.dll 到 c:\windows\system32 目录下。
2、创建相应的函数并执行命令,具体如下:
某些情况下,我们会遇到 Can’t open shared library 的情况,
这时就需要我们把 udf.dll 导出到 lib\plugin 目录下才可以,利用 NTFS ADS 流来创建文件夹
select @@basedir; //查找到mysql的目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION'; //利用NTFS ADS创建plugin目录
执行成功以后再进行导出即可。
4.操作系统
死锁以及为什么发生死锁,解除死锁
死锁是指一组相互竞争系统资源或进行通信的进程间的"永久"阻塞。
产生死锁的原因:
(1)竞争系统资源(2)进程的推进顺序不当
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
解除死锁:
当发现有进程死锁后,应立即把它从死锁状态中解脱出来,常采用的方法有:
剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态;撤消进程可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态消除为止所谓代价是指优先级、运行代价、进程的重要性和价值等。
进程之间通信方式:
信号,管道,消息队列,共享内存。
启动流程 ( Windows ):
基本上操作系统是从计算机通电自检完成后开始进行的,这一过程可以分为 ( 预引导、引导、载入内核、初始化内核、登录等 5 个阶段 )
1) 预引导
通电自检后,从引导设备中读取并运行主引导记录MBR
2) 引导
引导阶段又可以分为 初始化引导载入程序、操作系统选择、硬件检测、硬件配置文件选择
在这一过程中需要使用的文件包括 ntldr、boot.ini、ntdetect.com、ntoskrnl.exe、ntbootdd.sys、bootsect.dos ( 非必须 )
A 初始化引导载入程序:
程序 ntldr 会自动寻找系统自带的一个微型的文件驱动,读取文件系统驱动并成功找到硬盘上的分区后,引导载入程序的初始化过程就已经完成。
B 操作系统选择:
ntldr 程序完成了初始化工作后就会从硬盘上读取 boot.ini 文件,进行操作系统选择(多系统)
C 硬件检测:
操作系统选择了想要载入的 Windows 系统后,ntdetect.com 首先要将当前计算机中安装的所有硬件信息收集起来并列成一个表,接着将该表发送给 ntldr,这个表的信息稍后会被用来创建注册表中有关硬件的键。这里需要被收集信息的硬件包括总线 / 适配器类型显卡、通讯端口、串口、浮点运算器 ( CPU )、可移动存储器、键盘、指示装置 ( 鼠标 )。
D 配置文件选择:
这个步骤不是必须的。
只有在计算机(常用于笔记本电脑)创建了多个硬件配置文件的时候才需要处理这一步
3) 载入内核阶段
在这一阶段,ntldr 会载入 Windows 的内核文件 ntoskrnl.exe,但这里仅仅是载入,内核此刻还不会被初始化。随后被载入的是硬件抽象层。接下来要被内核载入的是:HKEY_LOCAL_MACHINE\System 注册表键。
ntldr 会根据载入的 Select 键的内容判断接下来需要载入哪个 ControlSet 注册表键,这些键决定随后系统会载入哪些设备驱动或者启动哪些服务。
这些注册表键的内容被载入后,系统将进入初始化内核阶段。
这时候ntldr会将系统的控制权交给操作系统内核。
4) 初始化内核阶段
在这一阶段中主要会完成 4 项任务:
创建 Hardware 注册表键、对 Control Set 注册表键进行复制载入和初始化设备驱动、启动服务
A.创建Hardware注册表键:
Windows 内核会使用前面硬件检测阶段收集倒的硬件信息来创建 HKEY_LOCAL_MACHINE/Hardware 键。也就是说注册表中该键的内容不是固定的,会根据系统中的硬件配置情况动态更新。
B.对Control Set注册表键进行复制:
如果上一步成功,系统内核会对 Control Set 键的内容创建一个备份。这个备份会被用在系统的高级启动菜单中 "最后一次正确的配置" 选项。
例如,系统新装了一个显卡驱动,Hardware 还没有创建成功系统就崩溃了,这时就可以使用"最后一次正确的配置"选项,用上一次 Control Set 注册表键的备份内容重新生成 Hardware 键,从而撤销因安装了显卡驱动对系统设置的更改。
C.载入和初始化设备驱动:
操作系统内核首先会初始化之前在载入内核阶段载入的底层设备驱动,然后会在注册表的,HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 键下查找所有 Strat 键值为 1 的设备驱动,这些设备驱动将会在载入之后立刻进行初始化。
D.启动服务:
系统内核成功载入并且成功初始化所有底层设备驱动后,ntoskrnl.exe 创建会话管理器进程 smss.exe,这是第一个用户态进程 会话管理器会启动其他高层子系统和服务,加载并初始化内核模式中的 Win32 子系统 ( win32k.sys ),启动 csrss.exe ( win32 子系统在用户模式的部分 ),进而启动 Win32 子系统。Win32 子系统的作用是控制所有输入 / 输出设备以及访问显示设备。当这些操作都完成后,Windows 的图形界面就可以显示出来了,同时用户也将可以使用键盘以及其他 I/O 设备。
接下来会话管理器会启动 winlogon 进程。至此,初始化内核阶段已经成功完成,这时候用户就可以开始登陆了。
5)登录阶段
这一阶段,由会话管理器启动的 winlogon.exe 进程将会启动本地安全性授权 lsass.exe 子系统,加载图形化标识和验证 ( Graphical Identfication and Authentication,GINA ) 并等待用户登录。
默认 GINA 是 Msgina.dll,可以自行开发 GINA 实现基于生物信息的用户登录 ( 指纹识别,人脸识别 ),然后启动后台服务管理器 services.exe ,通过它启动所有标识为自动启动的 Win32 服务程序。
在登录过程中,后台可能仍在加载一些非关键的设备驱动。系统会再次扫描 HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 注册表键,寻找 Start 键的数值是 2 或者更大数字的服务。这些服务就是非关键服务,系统直到成功登录后才开始加载这些服务,至此,Windows 启动过程完成。
线程:
线程有时候又被称为轻量级进程,是程序执行的最小单元。
一个进程可对应多个线程,而一个线程只属于一个进程。进程的执行是以线程为单位进行的,比如说一个简单 “hello world” 程序只有一个线程,就是 main() 函数对应的线程。
保护模式,实模式
保护模式与实模式相对应,在保护模式下, CPU 的寻址模式与实模式不同。
实模式下的寻址方式是 “段基址+段偏移”,段的默认大小为 64kb ,所有段都是可读写的,唯有代码段是可执行的,段的特权级为 0。
特权级有 0、1、2、3 四个级别,0 特权级别最高,3 特权级别最低想要控制系统,就必须取得0特权级,比如调试工具 SoftICE 就工作在0特权级上。
5.https的建立过程
1.客户端发送请求到服务器端 ( 支持的加密协议及版本,SSL,TLS )
2.服务端筛选合适的加密协议,返回 CA 证书和公开秘钥(公开秘钥作为证书的一部分而存在)
3.客户端使用浏览器根证书验证证书的合法性
4.如果验证通过,客户端生成对称秘钥,通过证书中的公钥加密,发送到服务端
5.服务端使用私钥解密,获取对称秘钥,使用对称秘钥加密数据
6.客户端使用共享秘钥解密数据,建立 SSL 加密通信…
6.TCP三次握手的过程以及对应的状态转换
源主机给目标主机发送一个 SYN 标志位为 1 的数据包
目标主机自动应答,SYN 和 ACK 均设置为 1,序号 SEQ 为 Y,并将确认号设置为 Y+1
源主机收到目标主机返回的第二次握手的数据包后,向目的主机发送一个 ACK 标志位为 1 的应答包示意对第二次握手确认要建立连接,第三次握手数据包的序号为 SEQ 为 X+1,确认号为 Y+1。
7.SQL注入漏洞
基本原理和防范
应用程序对用户输入的数据校验处理不严或者根本没有校验,以至用户可以直接执行 SQL 查询
1.对特殊字符进行转义处理(可能被编码绕过)
2.使用参数化语句 (完全杜绝 SQL 注入) 以 PHP 的 PDO 或 mysqli 为例:
PDO ( 使用序数参数 ):
除了数据库数据,利用方式还有哪些?
A 获取系统 shell
B 留数据库后门
8.XSS漏洞
基本原理和分类
当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞。
分类:
反射型:经过后端,不经过数据库存储型:经过后端,经过数据库DOM 型:不经过后端,DOM—based XSS 漏洞,是基于文档对象模型 ( Document Objeet Model,DOM ) 的一种漏洞,DOM xss 是通过 url 传入参数去控制触发的。
XSS防范
前端:
对用户输入进行编码转换
后端(在入口和出口都过滤):
对输入和输出都编码转换
可以自己编写过滤函数,调用也行。或者查找网上的 XSS 过滤函数。
xssfuzzing
一个基本的流程是:
1.检测输入点
2.潜在注入点检测
3.生成 payload
4.Payload 攻击验证
详细参考下面这篇文章:
https://www.qcloud.com/community/article/172258001490259493
xss还能干什么?
A 重定向网站
B 组建僵尸网络
更多:
http://bobao.360.cn/learning/detail/159.html
9.CSRF
原理与防范
由于浏览器自动发送会话 Cookie 等认证凭证,导致攻击者能够创建恶意的 Web 页面来产生伪造请求
案例:
上面一句话概括了 CSRF 的原理,下面我虚构了一个案例帮助理解:
123456:李白的用户 ID741741:杜甫的用户 ID941941:白居易的用户 ID
李白正在某银行网站给白居易转账,则有以下 URL
http://www.abc.com/zhuanzhang?=amount=500&fromAccount=123456&toAccount=941941
杜甫构造一个请求,把李白账户中的钱转到自己账户中(并且修改了金额为 5000 )
杜甫在他控制的多个网站中嵌入这段代码,李白只要登录了银行网站,又恰巧访问了杜甫控制的网站,李白的 5000 块钱就会转给杜甫
防范:
1.给每个 HTTP 请求添加一个不可预测的令牌,并保证该令牌对每个合法用户来说是唯一的,将独有的令牌包含在隐藏字段中,通过 HTTP 请求发送,避免在URL中暴露出来。
2.要求用户重新认证或判断他是一个真实的用户
csrf 如何不带 referer 访问?
那么什么是referer呢?
根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站。比如某银行的转账是通过用户访问 http://bank.test/test?page=10&userID=101&money=10000 页面完成,用户必须先登录 bank.test,然后通过点击页面上的按钮来触发转账事件。当用户提交请求时,该转账请求的 Referer 值就会是转账按钮所在页面的 URL(本例中,通常是以 bank. test 域名开头的地址)。而如果攻击者要对银行网站实施 CSRF 攻击,他只能在自己的网站构造请求,当用户通过攻击者的网站发送请求到银行时,该请求的 Referer 是指向攻击者的网站。因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.test 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,就有可能是 CSRF 攻击,则拒绝该请求。
测试发现:
测试发现 302 跳转不会带 referer,可以直接请求配置写 php 代码实现不带 referer 访问
302 跳转 php 代码实现
还有更简单的方式,使用 html 中 a 标签的一个属性
<a href="http://www.51xkx.cn" rel="noreferrer">test
10.SSRF 漏洞
原理介绍
SSRF ( Server-Side Request Forgery: 服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统 SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,下载等等.
如何寻找?
一、从 Web 功能上寻找
1)分享:通过URL地址分享网页内容
2)图片加载与下载:通过URL地址加载或下载图片
3)图片、文章收藏功能
二、从 URL 关键字寻找
大致有以下关键字:
share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain
如果利用 google 语法加上这些关键字去寻找 SSRF 漏洞,耐心的验证,现在还是可以找到存在的 SSRF 漏洞
如何深入利用?如何探测非 HTTP 协议?如何防范?
这两篇文章写的不错,搭建环境什么的都有:
http://www.91ri.org/17111.htmlhttps://www.t00ls.net/articles-41070.html
11.如何渗透一个网站/思路(渗透测试流程)
1.信息收集
whois 查询 //站长工具
DNS 信息 //站长工具
子域名查询 //站长工具
旁站、C 段查询:http://www.webscan.cc/
开放协议、操作系统、中间件、使用的开源 Web 应用(如 WordPress,凭借经验判断)
用 nmap 进行端口扫描:
nmap-sP 192.168.1.100 //查看一个主机是否在线nmap 192.168.1.100 //查看一个主机上开放的端口nmap-p 1-1000 192.168.1.100 //扫描指定端口范围nmap-p 80 192.168.1.* //扫描特定端口nmap-O 192.168.1.100 //判断目标操作系统类型nmap-sV 192.168.1.100 //查看目标开放端口对应的协议及版本信息
获取 WAF、IDS、防火墙信息 ( 使用 hping3、wafw00f 等工具)
网站目录 ( 使用工具 DirBuster )
数据库类型:
我通常是通过中间件信息和开放端口来判断,这些只是判断思路并不是 100% 正确
MySQL:Apache+PHP:3306MSSQL:asp+IIS:1433Oracle:Java+Tomcat:1521PostgreSQL:5432
2.漏洞扫描
使用 w3af、AWVS、Nessus、APPscan 等专业的漏洞扫描器自动化扫描,或者,用自己收集的EXP编写漏洞扫描器
3.漏洞利用
SQLmap:SQL 注入利用BeFF:XSS 漏洞利用Metasploit:漏洞利用模块
总而言之,根据扫描到的漏洞选择合适的方法或工具来利用
4.权限获取
后台编辑器提权、Webshell 提权、数据库提权、内网渗透提权
5.分析报告
渗透测试范围和内容 ( 包不包括社工··· )
脆弱性分析:
有哪些漏洞哪些风险等等、漏洞信息以图示出。
检测过程
使用的方法和工具改善建议和修复方案
如何社工一个企业的员工信息:
嗯,不太擅长,简单说一下吧~先线上搜索他的公开信息,社交账号,社交圈子等等可以先从他身边的人间接了解他本人然后以顾客的身份接近,套取所需信息再者时间充裕的可以跟踪一下(违法危险,被抓住容易被揍成猪头)然后就是投其所好获取信任了
12.需要认识的常见端口
13.如何获取 Web 指纹
1:网页中发现关键字
2:特定文件的 MD5(主要是静态文件、不一定要是 MD5 )
3:指定 URL 的关键字
4:指定 URL 的 TAG 模式
whatweb ( Ruby 写的 ) 是一个 web 应用程序指纹识别工具,可以鉴别出内容管理系统 ( CMS ),博客平台、统计分析软件、javascript 库、服务器和其他更多Web程序。
whatweb 拥有超过 900 个插件,插件是用来鉴别 Web 应用系统的。
可以说 whatweb 是目前网络上比较强大的一款应用识别程序了。
它支持正则表达式、md5 hash 匹配、url 识别、HTML 标记模式、蜘蛛爬行等等
下载地址:
https://github.com/urbanadventurer/whatweb/
plecost 是基于 python 架构,利用了 Beautiful Soup 来解析 html、xml 文件,识别网站使用的插件及版本。kali 系统上集成了这个工具。(感兴趣的可以试着读读它的代码,自己开发一个指纹识别工具)
14.如何代码审计
自己找到过的代码审计问题
15.如何做扫描器-思路-为什么要这么设计
端口扫描器:
通过连接测试服务端口可以判断端口是否开放
(1) TCP 全连接扫描
尝试与目标主机建立正常的TCP三次握手,如果能建立三次握手,说明目标端口开放,但是扫描过程容易被检测到。
(2) TCP SYN 扫描 ( TCP 的半连接扫描)
利用 TCP 前两次握手,如第二次握手回复了,则证明端口开放,因为没有第三次握手建立连接,降低了被发现的可能,同时提高了扫描性能
(3) TCP FIN 扫描
向目标主机发送 FIN 标志位为 1 的数据包进行探测。
如果目标端口开放,则丢弃此包,不进行回应
若未开放,则返回一个 RST 标志位为 1 的数据包
这种扫描更隐秘又叫秘密扫描通常用于 UNIX 操作系统主机
有的 Windows 主机 ( Windows NT ),不论端口是否开放都回复 RST。
(4) UDP 的 ICMP 端口不可达扫描
用 UDP 协议向目标主机 UDP 端口发送探测数据包。
如果目标端口未打开,会返回一个 ICMP_PORTUNREACHABLE 错误。
根据是否收到这个消息,可以发现关闭的 UDP 端口
(5) ICMP 扫描
用 ICMP 协议向目标主机发送一个协议存在错误的 IP 数据包
根据反馈的 ICMP 信息判断目标主机使用的网络服务和端口
(6) 乱序扫描和慢速扫描
将扫描端口的顺序打乱,降低扫描速度,躲避防火墙和入侵检测系统的检查
漏洞扫描器
用模拟攻击扫描出具体的漏洞类型
比如 SQL 漏洞扫描器用 payload 字符去试、使页面报错
一个 SQL 漏洞扫描器实例:
http://blog.csdn.net/oxuzhenyi/article/details/72763486?locationNum=13&fps=1
防范扫描可以在目标主机和网络的外围边界部署防火墙和入侵检测系统
16.黑客兵器谱(渗透常用工具)
信息收集: Maltego
Web 程序 ( 拦截、重放 ):Burp suite
端口扫描: nmap (其实不仅仅是端口扫描它的脚本也很有用)
漏洞扫描:w3af、AWVS、Nessus、AppScan
SQL 注入神器: SQLmap
sqlmap 给出类型对安全研究有什么帮助(区别有、无),tamper 脚本使用:信安之路的一篇总结挺好,地址:
http://mp.weixin.qq.com/s/vEEoMacmETUA4yZODY8xMQ
XSS利用框架:BeEF
漏洞利用框架:metasploit
爆破利器:Hydra
17.python
基础类库
常用第三方类库、爬虫的基本流程
18.挖过哪些有趣的漏洞讲述过程
分享一个域名劫持钓鱼获取管理权限的思路文章吧:
http://mp.weixin.qq.com/s/iteYPCNPq0Sly1nf8QJWhg
https://forum.90sec.com/t/topic/503
根据 Github 上的面经总结的一些安全岗面试的基础知识,这些基础知识不仅要牢记,而且要熟练操作,分享给大家,共勉。
如果有漏掉的大家可以留言或是联系作者补充,谢谢。
1.对Web安全的理解
我觉得 Web 安全首先得懂 Web、第三方内容、Web 前端框架、Web 服务器语言、Web 开发框架、Web 应用、Web容器、存储、操作系统等这些都要了解,然后较为常见且危害较大的,SQL 注入,XSS 跨站、CSRF 跨站请求伪造等漏洞要熟练掌握。
第三方内容: 广告统计、mockup 实体模型
Web前端框架: jQuery 库、BootStrap
Web服务端语言: aps.net、php
Web开发框架: Diango/Rails/Thinkphp
Web应用: BBS ( discuz、xiuno ) / CMS ( 帝国、织梦、动易、Joomla ) / BLOG ( WordPress、Z-Blog、emlog )
Web 容器: Apache ( php )、IIS ( asp )、Tomcat ( java ) – 处理从客户端发出的请求
存储:数据库存储 / 内存存储 / 文件存储
操作系统: linux / Windows
2.http协议
安装火狐浏览器常用插件方便HTTP抓包调试:
firebug:抓包与各种调试Tamper Data:拦截修改Live Http Header:重放功能Hackbar:编码解码 / POST 提交Modify Headers:修改头部
http常见状态码:
1xx:信息提示,表示请求已被成功接收,继续处理。2xx:成功,服务器成功处理了请求3xx:重定向,告知客户端所请求的资源已经移动4xx:客户端错误状态码,请求了一些服务器无法处理的东西。5xx:服务端错误,描述服务器内部错误200 请求成功,一般用于 GET 和 POST 请求301 URL 重定向,永久移动302 URL 重定向,临时移动404 请求资源不存在400 客户端请求有语法错误,不能被服务器理解401 请求未经授权403 服务器收到请求,但是拒绝服务500 服务器内部错误503 服务器当前不能处理客户端请求,一段时间后可能恢复正常
GET 和 POST:
GET方法用于获取请求页面的指定信息,如点击链接POST方法是有请求内容的,由于向服务器发送大量数据,如提交表单
http 请求:
http 请求包括三个部分,请求行 ( 请求方法 )、请求头 ( 消息报头 ) 和请求正文
http响应:
http 响应也由三部分组成,响应行,响应头 ( 消息报头 ) 和响应正文 ( 消息主题 )
3.数据库
基本 SQL 语句
增:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)删:DELETE FROM 表名称 WHERE 列名称 = 值查:SELECT 列名称 FROM 表名称改:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
mysql 有哪些表
mysql 自带的数据库有 information_schema、performance_schema、sys、mysql,information_schema 数据库是 mysql 自带的,它提供了访问元数据库的方式。
在 mysql 数据库中,有 mysql_install_db 脚本初始化权限表,存储权限的表有:
1、user表: 用户列、权限列、安全列、资源控制列2、db表 : 用户列、权限列3、host表4、table_priv表5、columns_priv表6、proc_priv表
sys 数据库表说明 sys_config ,这是在这个系统库上存在的唯一一个表了:
详见这两篇文章:
http://blog.csdn.net/xlxxcc/article/details/51754524http://blog.csdn.net/huwei0518/article/details/43563583
mysql 提权方式 ( 搭建环境使用 mysql5.1 或以前的版本)
mof 提权:
拿到 Webshell 后:
1.找一个可写目录上传mof文件,例如上传到 C:/Windows/nullevt.mof 代码如下:
2.执行load_file及into dumpfile把文件导出到正确的位置即可:
Select load_file('C:/Windows/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'
执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接即可
反弹端口提权
1、拿到 mysql root 权限,无法通过网站 Getshell,利用 mysql 客户端工具连接 mysql 服务器,然后执行下面的操作:
2、本地监听你反弹的端口
nc.exe -vv -l -p 2010
成功后,你将获得一个 system 权限的 cmdshell
Mysql udf 提权
目录位置:
c:\windows\system32
1、最常见的是直接使用 udf.php ( http://pan.baidu.com/s/1jIEIQbk ) 此类的工具来执行 udf 提权
具体如下:
连接到 mysql 以后,先导出 udf.dll 到 c:\windows\system32 目录下。
2、创建相应的函数并执行命令,具体如下:
某些情况下,我们会遇到 Can’t open shared library 的情况,
这时就需要我们把 udf.dll 导出到 lib\plugin 目录下才可以,利用 NTFS ADS 流来创建文件夹
select @@basedir; //查找到mysql的目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION'; //利用NTFS ADS创建plugin目录
执行成功以后再进行导出即可。
4.操作系统
死锁以及为什么发生死锁,解除死锁
死锁是指一组相互竞争系统资源或进行通信的进程间的"永久"阻塞。
产生死锁的原因:
(1)竞争系统资源(2)进程的推进顺序不当
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
解除死锁:
当发现有进程死锁后,应立即把它从死锁状态中解脱出来,常采用的方法有:
剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态;撤消进程可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态消除为止所谓代价是指优先级、运行代价、进程的重要性和价值等。
进程之间通信方式:
信号,管道,消息队列,共享内存。
启动流程 ( Windows ):
基本上操作系统是从计算机通电自检完成后开始进行的,这一过程可以分为 ( 预引导、引导、载入内核、初始化内核、登录等 5 个阶段 )
1) 预引导
通电自检后,从引导设备中读取并运行主引导记录MBR
2) 引导
引导阶段又可以分为 初始化引导载入程序、操作系统选择、硬件检测、硬件配置文件选择
在这一过程中需要使用的文件包括 ntldr、boot.ini、ntdetect.com、ntoskrnl.exe、ntbootdd.sys、bootsect.dos ( 非必须 )
A 初始化引导载入程序:
程序 ntldr 会自动寻找系统自带的一个微型的文件驱动,读取文件系统驱动并成功找到硬盘上的分区后,引导载入程序的初始化过程就已经完成。
B 操作系统选择:
ntldr 程序完成了初始化工作后就会从硬盘上读取 boot.ini 文件,进行操作系统选择(多系统)
C 硬件检测:
操作系统选择了想要载入的 Windows 系统后,ntdetect.com 首先要将当前计算机中安装的所有硬件信息收集起来并列成一个表,接着将该表发送给 ntldr,这个表的信息稍后会被用来创建注册表中有关硬件的键。这里需要被收集信息的硬件包括总线 / 适配器类型显卡、通讯端口、串口、浮点运算器 ( CPU )、可移动存储器、键盘、指示装置 ( 鼠标 )。
D 配置文件选择:
这个步骤不是必须的。
只有在计算机(常用于笔记本电脑)创建了多个硬件配置文件的时候才需要处理这一步
3) 载入内核阶段
在这一阶段,ntldr 会载入 Windows 的内核文件 ntoskrnl.exe,但这里仅仅是载入,内核此刻还不会被初始化。随后被载入的是硬件抽象层。接下来要被内核载入的是:HKEY_LOCAL_MACHINE\System 注册表键。
ntldr 会根据载入的 Select 键的内容判断接下来需要载入哪个 ControlSet 注册表键,这些键决定随后系统会载入哪些设备驱动或者启动哪些服务。
这些注册表键的内容被载入后,系统将进入初始化内核阶段。
这时候ntldr会将系统的控制权交给操作系统内核。
4) 初始化内核阶段
在这一阶段中主要会完成 4 项任务:
创建 Hardware 注册表键、对 Control Set 注册表键进行复制载入和初始化设备驱动、启动服务
A.创建Hardware注册表键:
Windows 内核会使用前面硬件检测阶段收集倒的硬件信息来创建 HKEY_LOCAL_MACHINE/Hardware 键。也就是说注册表中该键的内容不是固定的,会根据系统中的硬件配置情况动态更新。
B.对Control Set注册表键进行复制:
如果上一步成功,系统内核会对 Control Set 键的内容创建一个备份。这个备份会被用在系统的高级启动菜单中 "最后一次正确的配置" 选项。
例如,系统新装了一个显卡驱动,Hardware 还没有创建成功系统就崩溃了,这时就可以使用"最后一次正确的配置"选项,用上一次 Control Set 注册表键的备份内容重新生成 Hardware 键,从而撤销因安装了显卡驱动对系统设置的更改。
C.载入和初始化设备驱动:
操作系统内核首先会初始化之前在载入内核阶段载入的底层设备驱动,然后会在注册表的,HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 键下查找所有 Strat 键值为 1 的设备驱动,这些设备驱动将会在载入之后立刻进行初始化。
D.启动服务:
系统内核成功载入并且成功初始化所有底层设备驱动后,ntoskrnl.exe 创建会话管理器进程 smss.exe,这是第一个用户态进程 会话管理器会启动其他高层子系统和服务,加载并初始化内核模式中的 Win32 子系统 ( win32k.sys ),启动 csrss.exe ( win32 子系统在用户模式的部分 ),进而启动 Win32 子系统。Win32 子系统的作用是控制所有输入 / 输出设备以及访问显示设备。当这些操作都完成后,Windows 的图形界面就可以显示出来了,同时用户也将可以使用键盘以及其他 I/O 设备。
接下来会话管理器会启动 winlogon 进程。至此,初始化内核阶段已经成功完成,这时候用户就可以开始登陆了。
5)登录阶段
这一阶段,由会话管理器启动的 winlogon.exe 进程将会启动本地安全性授权 lsass.exe 子系统,加载图形化标识和验证 ( Graphical Identfication and Authentication,GINA ) 并等待用户登录。
默认 GINA 是 Msgina.dll,可以自行开发 GINA 实现基于生物信息的用户登录 ( 指纹识别,人脸识别 ),然后启动后台服务管理器 services.exe ,通过它启动所有标识为自动启动的 Win32 服务程序。
在登录过程中,后台可能仍在加载一些非关键的设备驱动。系统会再次扫描 HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 注册表键,寻找 Start 键的数值是 2 或者更大数字的服务。这些服务就是非关键服务,系统直到成功登录后才开始加载这些服务,至此,Windows 启动过程完成。
线程:
线程有时候又被称为轻量级进程,是程序执行的最小单元。
一个进程可对应多个线程,而一个线程只属于一个进程。进程的执行是以线程为单位进行的,比如说一个简单 “hello world” 程序只有一个线程,就是 main() 函数对应的线程。
保护模式,实模式
保护模式与实模式相对应,在保护模式下, CPU 的寻址模式与实模式不同。
实模式下的寻址方式是 “段基址+段偏移”,段的默认大小为 64kb ,所有段都是可读写的,唯有代码段是可执行的,段的特权级为 0。
特权级有 0、1、2、3 四个级别,0 特权级别最高,3 特权级别最低想要控制系统,就必须取得0特权级,比如调试工具 SoftICE 就工作在0特权级上。
5.https的建立过程
1.客户端发送请求到服务器端 ( 支持的加密协议及版本,SSL,TLS )
2.服务端筛选合适的加密协议,返回 CA 证书和公开秘钥(公开秘钥作为证书的一部分而存在)
3.客户端使用浏览器根证书验证证书的合法性
4.如果验证通过,客户端生成对称秘钥,通过证书中的公钥加密,发送到服务端
5.服务端使用私钥解密,获取对称秘钥,使用对称秘钥加密数据
6.客户端使用共享秘钥解密数据,建立 SSL 加密通信…
6.TCP三次握手的过程以及对应的状态转换
源主机给目标主机发送一个 SYN 标志位为 1 的数据包
目标主机自动应答,SYN 和 ACK 均设置为 1,序号 SEQ 为 Y,并将确认号设置为 Y+1
源主机收到目标主机返回的第二次握手的数据包后,向目的主机发送一个 ACK 标志位为 1 的应答包示意对第二次握手确认要建立连接,第三次握手数据包的序号为 SEQ 为 X+1,确认号为 Y+1。
7.SQL注入漏洞
基本原理和防范
应用程序对用户输入的数据校验处理不严或者根本没有校验,以至用户可以直接执行 SQL 查询
1.对特殊字符进行转义处理(可能被编码绕过)
2.使用参数化语句 (完全杜绝 SQL 注入) 以 PHP 的 PDO 或 mysqli 为例:
PDO ( 使用序数参数 ):
除了数据库数据,利用方式还有哪些?
A 获取系统 shell
B 留数据库后门
8.XSS漏洞
基本原理和分类
当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞。
分类:
反射型:经过后端,不经过数据库存储型:经过后端,经过数据库DOM 型:不经过后端,DOM—based XSS 漏洞,是基于文档对象模型 ( Document Objeet Model,DOM ) 的一种漏洞,DOM xss 是通过 url 传入参数去控制触发的。
XSS防范
前端:
对用户输入进行编码转换
后端(在入口和出口都过滤):
对输入和输出都编码转换
可以自己编写过滤函数,调用也行。或者查找网上的 XSS 过滤函数。
xssfuzzing
一个基本的流程是:
1.检测输入点
2.潜在注入点检测
3.生成 payload
4.Payload 攻击验证
详细参考下面这篇文章:
https://www.qcloud.com/community/article/172258001490259493
xss还能干什么?
A 重定向网站
B 组建僵尸网络
更多:
http://bobao.360.cn/learning/detail/159.html
9.CSRF
原理与防范
由于浏览器自动发送会话 Cookie 等认证凭证,导致攻击者能够创建恶意的 Web 页面来产生伪造请求
案例:
上面一句话概括了 CSRF 的原理,下面我虚构了一个案例帮助理解:
123456:李白的用户 ID741741:杜甫的用户 ID941941:白居易的用户 ID
李白正在某银行网站给白居易转账,则有以下 URL
http://www.abc.com/zhuanzhang?=amount=500&fromAccount=123456&toAccount=941941
杜甫构造一个请求,把李白账户中的钱转到自己账户中(并且修改了金额为 5000 )
杜甫在他控制的多个网站中嵌入这段代码,李白只要登录了银行网站,又恰巧访问了杜甫控制的网站,李白的 5000 块钱就会转给杜甫
防范:
1.给每个 HTTP 请求添加一个不可预测的令牌,并保证该令牌对每个合法用户来说是唯一的,将独有的令牌包含在隐藏字段中,通过 HTTP 请求发送,避免在URL中暴露出来。
2.要求用户重新认证或判断他是一个真实的用户
csrf 如何不带 referer 访问?
那么什么是referer呢?
根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站。比如某银行的转账是通过用户访问 http://bank.test/test?page=10&userID=101&money=10000 页面完成,用户必须先登录 bank.test,然后通过点击页面上的按钮来触发转账事件。当用户提交请求时,该转账请求的 Referer 值就会是转账按钮所在页面的 URL(本例中,通常是以 bank. test 域名开头的地址)。而如果攻击者要对银行网站实施 CSRF 攻击,他只能在自己的网站构造请求,当用户通过攻击者的网站发送请求到银行时,该请求的 Referer 是指向攻击者的网站。因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.test 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,就有可能是 CSRF 攻击,则拒绝该请求。
测试发现:
测试发现 302 跳转不会带 referer,可以直接请求配置写 php 代码实现不带 referer 访问
302 跳转 php 代码实现
还有更简单的方式,使用 html 中 a 标签的一个属性
<a href="http://www.51xkx.cn" rel="noreferrer">test
10.SSRF 漏洞
原理介绍
SSRF ( Server-Side Request Forgery: 服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统 SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,下载等等.
如何寻找?
一、从 Web 功能上寻找
1)分享:通过URL地址分享网页内容
2)图片加载与下载:通过URL地址加载或下载图片
3)图片、文章收藏功能
二、从 URL 关键字寻找
大致有以下关键字:
share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain
如果利用 google 语法加上这些关键字去寻找 SSRF 漏洞,耐心的验证,现在还是可以找到存在的 SSRF 漏洞
如何深入利用?如何探测非 HTTP 协议?如何防范?
这两篇文章写的不错,搭建环境什么的都有:
http://www.91ri.org/17111.htmlhttps://www.t00ls.net/articles-41070.html
11.如何渗透一个网站/思路(渗透测试流程)
1.信息收集
whois 查询 //站长工具
DNS 信息 //站长工具
子域名查询 //站长工具
旁站、C 段查询:http://www.webscan.cc/
开放协议、操作系统、中间件、使用的开源 Web 应用(如 WordPress,凭借经验判断)
用 nmap 进行端口扫描:
nmap-sP 192.168.1.100 //查看一个主机是否在线nmap 192.168.1.100 //查看一个主机上开放的端口nmap-p 1-1000 192.168.1.100 //扫描指定端口范围nmap-p 80 192.168.1.* //扫描特定端口nmap-O 192.168.1.100 //判断目标操作系统类型nmap-sV 192.168.1.100 //查看目标开放端口对应的协议及版本信息
获取 WAF、IDS、防火墙信息 ( 使用 hping3、wafw00f 等工具)
网站目录 ( 使用工具 DirBuster )
数据库类型:
我通常是通过中间件信息和开放端口来判断,这些只是判断思路并不是 100% 正确
MySQL:Apache+PHP:3306MSSQL:asp+IIS:1433Oracle:Java+Tomcat:1521PostgreSQL:5432
2.漏洞扫描
使用 w3af、AWVS、Nessus、APPscan 等专业的漏洞扫描器自动化扫描,或者,用自己收集的EXP编写漏洞扫描器
3.漏洞利用
SQLmap:SQL 注入利用BeFF:XSS 漏洞利用Metasploit:漏洞利用模块
总而言之,根据扫描到的漏洞选择合适的方法或工具来利用
4.权限获取
后台编辑器提权、Webshell 提权、数据库提权、内网渗透提权
5.分析报告
渗透测试范围和内容 ( 包不包括社工··· )
脆弱性分析:
有哪些漏洞哪些风险等等、漏洞信息以图示出。
检测过程
使用的方法和工具改善建议和修复方案
如何社工一个企业的员工信息:
嗯,不太擅长,简单说一下吧~先线上搜索他的公开信息,社交账号,社交圈子等等可以先从他身边的人间接了解他本人然后以顾客的身份接近,套取所需信息再者时间充裕的可以跟踪一下(违法危险,被抓住容易被揍成猪头)然后就是投其所好获取信任了
12.需要认识的常见端口
13.如何获取 Web 指纹
1:网页中发现关键字
2:特定文件的 MD5(主要是静态文件、不一定要是 MD5 )
3:指定 URL 的关键字
4:指定 URL 的 TAG 模式
whatweb ( Ruby 写的 ) 是一个 web 应用程序指纹识别工具,可以鉴别出内容管理系统 ( CMS ),博客平台、统计分析软件、javascript 库、服务器和其他更多Web程序。
whatweb 拥有超过 900 个插件,插件是用来鉴别 Web 应用系统的。
可以说 whatweb 是目前网络上比较强大的一款应用识别程序了。
它支持正则表达式、md5 hash 匹配、url 识别、HTML 标记模式、蜘蛛爬行等等
下载地址:
https://github.com/urbanadventurer/whatweb/
plecost 是基于 python 架构,利用了 Beautiful Soup 来解析 html、xml 文件,识别网站使用的插件及版本。kali 系统上集成了这个工具。(感兴趣的可以试着读读它的代码,自己开发一个指纹识别工具)
14.如何代码审计
自己找到过的代码审计问题
15.如何做扫描器-思路-为什么要这么设计
端口扫描器:
通过连接测试服务端口可以判断端口是否开放
(1) TCP 全连接扫描
尝试与目标主机建立正常的TCP三次握手,如果能建立三次握手,说明目标端口开放,但是扫描过程容易被检测到。
(2) TCP SYN 扫描 ( TCP 的半连接扫描)
利用 TCP 前两次握手,如第二次握手回复了,则证明端口开放,因为没有第三次握手建立连接,降低了被发现的可能,同时提高了扫描性能
(3) TCP FIN 扫描
向目标主机发送 FIN 标志位为 1 的数据包进行探测。
如果目标端口开放,则丢弃此包,不进行回应
若未开放,则返回一个 RST 标志位为 1 的数据包
这种扫描更隐秘又叫秘密扫描通常用于 UNIX 操作系统主机
有的 Windows 主机 ( Windows NT ),不论端口是否开放都回复 RST。
(4) UDP 的 ICMP 端口不可达扫描
用 UDP 协议向目标主机 UDP 端口发送探测数据包。
如果目标端口未打开,会返回一个 ICMP_PORTUNREACHABLE 错误。
根据是否收到这个消息,可以发现关闭的 UDP 端口
(5) ICMP 扫描
用 ICMP 协议向目标主机发送一个协议存在错误的 IP 数据包
根据反馈的 ICMP 信息判断目标主机使用的网络服务和端口
(6) 乱序扫描和慢速扫描
将扫描端口的顺序打乱,降低扫描速度,躲避防火墙和入侵检测系统的检查
漏洞扫描器
用模拟攻击扫描出具体的漏洞类型
比如 SQL 漏洞扫描器用 payload 字符去试、使页面报错
一个 SQL 漏洞扫描器实例:
http://blog.csdn.net/oxuzhenyi/article/details/72763486?locationNum=13&fps=1
防范扫描可以在目标主机和网络的外围边界部署防火墙和入侵检测系统
16.黑客兵器谱(渗透常用工具)
信息收集: Maltego
Web 程序 ( 拦截、重放 ):Burp suite
端口扫描: nmap (其实不仅仅是端口扫描它的脚本也很有用)
漏洞扫描:w3af、AWVS、Nessus、AppScan
SQL 注入神器: SQLmap
sqlmap 给出类型对安全研究有什么帮助(区别有、无),tamper 脚本使用:信安之路的一篇总结挺好,地址:
http://mp.weixin.qq.com/s/vEEoMacmETUA4yZODY8xMQ
XSS利用框架:BeEF
漏洞利用框架:metasploit
爆破利器:Hydra
17.python
基础类库
常用第三方类库、爬虫的基本流程
18.挖过哪些有趣的漏洞讲述过程
分享一个域名劫持钓鱼获取管理权限的思路文章吧:
http://mp.weixin.qq.com/s/iteYPCNPq0Sly1nf8QJWhg
https://forum.90sec.com/t/topic/503
根据 Github 上的面经总结的一些安全岗面试的基础知识,这些基础知识不仅要牢记,而且要熟练操作,分享给大家,共勉。
如果有漏掉的大家可以留言或是联系作者补充,谢谢。
1.对Web安全的理解
我觉得 Web 安全首先得懂 Web、第三方内容、Web 前端框架、Web 服务器语言、Web 开发框架、Web 应用、Web容器、存储、操作系统等这些都要了解,然后较为常见且危害较大的,SQL 注入,XSS 跨站、CSRF 跨站请求伪造等漏洞要熟练掌握。
第三方内容: 广告统计、mockup 实体模型
Web前端框架: jQuery 库、BootStrap
Web服务端语言: aps.net、php
Web开发框架: Diango/Rails/Thinkphp
Web应用: BBS ( discuz、xiuno ) / CMS ( 帝国、织梦、动易、Joomla ) / BLOG ( WordPress、Z-Blog、emlog )
Web 容器: Apache ( php )、IIS ( asp )、Tomcat ( java ) – 处理从客户端发出的请求
存储:数据库存储 / 内存存储 / 文件存储
操作系统: linux / Windows
2.http协议
安装火狐浏览器常用插件方便HTTP抓包调试:
firebug:抓包与各种调试Tamper Data:拦截修改Live Http Header:重放功能Hackbar:编码解码 / POST 提交Modify Headers:修改头部
http常见状态码:
1xx:信息提示,表示请求已被成功接收,继续处理。2xx:成功,服务器成功处理了请求3xx:重定向,告知客户端所请求的资源已经移动4xx:客户端错误状态码,请求了一些服务器无法处理的东西。5xx:服务端错误,描述服务器内部错误200 请求成功,一般用于 GET 和 POST 请求301 URL 重定向,永久移动302 URL 重定向,临时移动404 请求资源不存在400 客户端请求有语法错误,不能被服务器理解401 请求未经授权403 服务器收到请求,但是拒绝服务500 服务器内部错误503 服务器当前不能处理客户端请求,一段时间后可能恢复正常
GET 和 POST:
GET方法用于获取请求页面的指定信息,如点击链接POST方法是有请求内容的,由于向服务器发送大量数据,如提交表单
http 请求:
http 请求包括三个部分,请求行 ( 请求方法 )、请求头 ( 消息报头 ) 和请求正文
http响应:
http 响应也由三部分组成,响应行,响应头 ( 消息报头 ) 和响应正文 ( 消息主题 )
3.数据库
基本 SQL 语句
增:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)删:DELETE FROM 表名称 WHERE 列名称 = 值查:SELECT 列名称 FROM 表名称改:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
mysql 有哪些表
mysql 自带的数据库有 information_schema、performance_schema、sys、mysql,information_schema 数据库是 mysql 自带的,它提供了访问元数据库的方式。
在 mysql 数据库中,有 mysql_install_db 脚本初始化权限表,存储权限的表有:
1、user表: 用户列、权限列、安全列、资源控制列2、db表 : 用户列、权限列3、host表4、table_priv表5、columns_priv表6、proc_priv表
sys 数据库表说明 sys_config ,这是在这个系统库上存在的唯一一个表了:
详见这两篇文章:
http://blog.csdn.net/xlxxcc/article/details/51754524http://blog.csdn.net/huwei0518/article/details/43563583
mysql 提权方式 ( 搭建环境使用 mysql5.1 或以前的版本)
mof 提权:
拿到 Webshell 后:
1.找一个可写目录上传mof文件,例如上传到 C:/Windows/nullevt.mof 代码如下:
2.执行load_file及into dumpfile把文件导出到正确的位置即可:
Select load_file('C:/Windows/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'
执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接即可
反弹端口提权
1、拿到 mysql root 权限,无法通过网站 Getshell,利用 mysql 客户端工具连接 mysql 服务器,然后执行下面的操作:
2、本地监听你反弹的端口
nc.exe -vv -l -p 2010
成功后,你将获得一个 system 权限的 cmdshell
Mysql udf 提权
目录位置:
c:\windows\system32
1、最常见的是直接使用 udf.php ( http://pan.baidu.com/s/1jIEIQbk ) 此类的工具来执行 udf 提权
具体如下:
连接到 mysql 以后,先导出 udf.dll 到 c:\windows\system32 目录下。
2、创建相应的函数并执行命令,具体如下:
某些情况下,我们会遇到 Can’t open shared library 的情况,
这时就需要我们把 udf.dll 导出到 lib\plugin 目录下才可以,利用 NTFS ADS 流来创建文件夹
select @@basedir; //查找到mysql的目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION'; //利用NTFS ADS创建plugin目录
执行成功以后再进行导出即可。
4.操作系统
死锁以及为什么发生死锁,解除死锁
死锁是指一组相互竞争系统资源或进行通信的进程间的"永久"阻塞。
产生死锁的原因:
(1)竞争系统资源(2)进程的推进顺序不当
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
解除死锁:
当发现有进程死锁后,应立即把它从死锁状态中解脱出来,常采用的方法有:
剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态;撤消进程可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态消除为止所谓代价是指优先级、运行代价、进程的重要性和价值等。
进程之间通信方式:
信号,管道,消息队列,共享内存。
启动流程 ( Windows ):
基本上操作系统是从计算机通电自检完成后开始进行的,这一过程可以分为 ( 预引导、引导、载入内核、初始化内核、登录等 5 个阶段 )
1) 预引导
通电自检后,从引导设备中读取并运行主引导记录MBR
2) 引导
引导阶段又可以分为 初始化引导载入程序、操作系统选择、硬件检测、硬件配置文件选择
在这一过程中需要使用的文件包括 ntldr、boot.ini、ntdetect.com、ntoskrnl.exe、ntbootdd.sys、bootsect.dos ( 非必须 )
A 初始化引导载入程序:
程序 ntldr 会自动寻找系统自带的一个微型的文件驱动,读取文件系统驱动并成功找到硬盘上的分区后,引导载入程序的初始化过程就已经完成。
B 操作系统选择:
ntldr 程序完成了初始化工作后就会从硬盘上读取 boot.ini 文件,进行操作系统选择(多系统)
C 硬件检测:
操作系统选择了想要载入的 Windows 系统后,ntdetect.com 首先要将当前计算机中安装的所有硬件信息收集起来并列成一个表,接着将该表发送给 ntldr,这个表的信息稍后会被用来创建注册表中有关硬件的键。这里需要被收集信息的硬件包括总线 / 适配器类型显卡、通讯端口、串口、浮点运算器 ( CPU )、可移动存储器、键盘、指示装置 ( 鼠标 )。
D 配置文件选择:
这个步骤不是必须的。
只有在计算机(常用于笔记本电脑)创建了多个硬件配置文件的时候才需要处理这一步
3) 载入内核阶段
在这一阶段,ntldr 会载入 Windows 的内核文件 ntoskrnl.exe,但这里仅仅是载入,内核此刻还不会被初始化。随后被载入的是硬件抽象层。接下来要被内核载入的是:HKEY_LOCAL_MACHINE\System 注册表键。
ntldr 会根据载入的 Select 键的内容判断接下来需要载入哪个 ControlSet 注册表键,这些键决定随后系统会载入哪些设备驱动或者启动哪些服务。
这些注册表键的内容被载入后,系统将进入初始化内核阶段。
这时候ntldr会将系统的控制权交给操作系统内核。
4) 初始化内核阶段
在这一阶段中主要会完成 4 项任务:
创建 Hardware 注册表键、对 Control Set 注册表键进行复制载入和初始化设备驱动、启动服务
A.创建Hardware注册表键:
Windows 内核会使用前面硬件检测阶段收集倒的硬件信息来创建 HKEY_LOCAL_MACHINE/Hardware 键。也就是说注册表中该键的内容不是固定的,会根据系统中的硬件配置情况动态更新。
B.对Control Set注册表键进行复制:
如果上一步成功,系统内核会对 Control Set 键的内容创建一个备份。这个备份会被用在系统的高级启动菜单中 "最后一次正确的配置" 选项。
例如,系统新装了一个显卡驱动,Hardware 还没有创建成功系统就崩溃了,这时就可以使用"最后一次正确的配置"选项,用上一次 Control Set 注册表键的备份内容重新生成 Hardware 键,从而撤销因安装了显卡驱动对系统设置的更改。
C.载入和初始化设备驱动:
操作系统内核首先会初始化之前在载入内核阶段载入的底层设备驱动,然后会在注册表的,HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 键下查找所有 Strat 键值为 1 的设备驱动,这些设备驱动将会在载入之后立刻进行初始化。
D.启动服务:
系统内核成功载入并且成功初始化所有底层设备驱动后,ntoskrnl.exe 创建会话管理器进程 smss.exe,这是第一个用户态进程 会话管理器会启动其他高层子系统和服务,加载并初始化内核模式中的 Win32 子系统 ( win32k.sys ),启动 csrss.exe ( win32 子系统在用户模式的部分 ),进而启动 Win32 子系统。Win32 子系统的作用是控制所有输入 / 输出设备以及访问显示设备。当这些操作都完成后,Windows 的图形界面就可以显示出来了,同时用户也将可以使用键盘以及其他 I/O 设备。
接下来会话管理器会启动 winlogon 进程。至此,初始化内核阶段已经成功完成,这时候用户就可以开始登陆了。
5)登录阶段
这一阶段,由会话管理器启动的 winlogon.exe 进程将会启动本地安全性授权 lsass.exe 子系统,加载图形化标识和验证 ( Graphical Identfication and Authentication,GINA ) 并等待用户登录。
默认 GINA 是 Msgina.dll,可以自行开发 GINA 实现基于生物信息的用户登录 ( 指纹识别,人脸识别 ),然后启动后台服务管理器 services.exe ,通过它启动所有标识为自动启动的 Win32 服务程序。
在登录过程中,后台可能仍在加载一些非关键的设备驱动。系统会再次扫描 HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 注册表键,寻找 Start 键的数值是 2 或者更大数字的服务。这些服务就是非关键服务,系统直到成功登录后才开始加载这些服务,至此,Windows 启动过程完成。
线程:
线程有时候又被称为轻量级进程,是程序执行的最小单元。
一个进程可对应多个线程,而一个线程只属于一个进程。进程的执行是以线程为单位进行的,比如说一个简单 “hello world” 程序只有一个线程,就是 main() 函数对应的线程。
保护模式,实模式
保护模式与实模式相对应,在保护模式下, CPU 的寻址模式与实模式不同。
实模式下的寻址方式是 “段基址+段偏移”,段的默认大小为 64kb ,所有段都是可读写的,唯有代码段是可执行的,段的特权级为 0。
特权级有 0、1、2、3 四个级别,0 特权级别最高,3 特权级别最低想要控制系统,就必须取得0特权级,比如调试工具 SoftICE 就工作在0特权级上。
5.https的建立过程
1.客户端发送请求到服务器端 ( 支持的加密协议及版本,SSL,TLS )
2.服务端筛选合适的加密协议,返回 CA 证书和公开秘钥(公开秘钥作为证书的一部分而存在)
3.客户端使用浏览器根证书验证证书的合法性
4.如果验证通过,客户端生成对称秘钥,通过证书中的公钥加密,发送到服务端
5.服务端使用私钥解密,获取对称秘钥,使用对称秘钥加密数据
6.客户端使用共享秘钥解密数据,建立 SSL 加密通信…
6.TCP三次握手的过程以及对应的状态转换
源主机给目标主机发送一个 SYN 标志位为 1 的数据包
目标主机自动应答,SYN 和 ACK 均设置为 1,序号 SEQ 为 Y,并将确认号设置为 Y+1
源主机收到目标主机返回的第二次握手的数据包后,向目的主机发送一个 ACK 标志位为 1 的应答包示意对第二次握手确认要建立连接,第三次握手数据包的序号为 SEQ 为 X+1,确认号为 Y+1。
7.SQL注入漏洞
基本原理和防范
应用程序对用户输入的数据校验处理不严或者根本没有校验,以至用户可以直接执行 SQL 查询
1.对特殊字符进行转义处理(可能被编码绕过)
2.使用参数化语句 (完全杜绝 SQL 注入) 以 PHP 的 PDO 或 mysqli 为例:
PDO ( 使用序数参数 ):
除了数据库数据,利用方式还有哪些?
A 获取系统 shell
B 留数据库后门
8.XSS漏洞
基本原理和分类
当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞。
分类:
反射型:经过后端,不经过数据库存储型:经过后端,经过数据库DOM 型:不经过后端,DOM—based XSS 漏洞,是基于文档对象模型 ( Document Objeet Model,DOM ) 的一种漏洞,DOM xss 是通过 url 传入参数去控制触发的。
XSS防范
前端:
对用户输入进行编码转换
后端(在入口和出口都过滤):
对输入和输出都编码转换
可以自己编写过滤函数,调用也行。或者查找网上的 XSS 过滤函数。
xssfuzzing
一个基本的流程是:
1.检测输入点
2.潜在注入点检测
3.生成 payload
4.Payload 攻击验证
详细参考下面这篇文章:
https://www.qcloud.com/community/article/172258001490259493
xss还能干什么?
A 重定向网站
B 组建僵尸网络
更多:
http://bobao.360.cn/learning/detail/159.html
9.CSRF
原理与防范
由于浏览器自动发送会话 Cookie 等认证凭证,导致攻击者能够创建恶意的 Web 页面来产生伪造请求
案例:
上面一句话概括了 CSRF 的原理,下面我虚构了一个案例帮助理解:
123456:李白的用户 ID741741:杜甫的用户 ID941941:白居易的用户 ID
李白正在某银行网站给白居易转账,则有以下 URL
http://www.abc.com/zhuanzhang?=amount=500&fromAccount=123456&toAccount=941941
杜甫构造一个请求,把李白账户中的钱转到自己账户中(并且修改了金额为 5000 )
杜甫在他控制的多个网站中嵌入这段代码,李白只要登录了银行网站,又恰巧访问了杜甫控制的网站,李白的 5000 块钱就会转给杜甫
防范:
1.给每个 HTTP 请求添加一个不可预测的令牌,并保证该令牌对每个合法用户来说是唯一的,将独有的令牌包含在隐藏字段中,通过 HTTP 请求发送,避免在URL中暴露出来。
2.要求用户重新认证或判断他是一个真实的用户
csrf 如何不带 referer 访问?
那么什么是referer呢?
根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站。比如某银行的转账是通过用户访问 http://bank.test/test?page=10&userID=101&money=10000 页面完成,用户必须先登录 bank.test,然后通过点击页面上的按钮来触发转账事件。当用户提交请求时,该转账请求的 Referer 值就会是转账按钮所在页面的 URL(本例中,通常是以 bank. test 域名开头的地址)。而如果攻击者要对银行网站实施 CSRF 攻击,他只能在自己的网站构造请求,当用户通过攻击者的网站发送请求到银行时,该请求的 Referer 是指向攻击者的网站。因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.test 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,就有可能是 CSRF 攻击,则拒绝该请求。
测试发现:
测试发现 302 跳转不会带 referer,可以直接请求配置写 php 代码实现不带 referer 访问
302 跳转 php 代码实现
还有更简单的方式,使用 html 中 a 标签的一个属性
<a href="http://www.51xkx.cn" rel="noreferrer">test
10.SSRF 漏洞
原理介绍
SSRF ( Server-Side Request Forgery: 服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统 SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,下载等等.
如何寻找?
一、从 Web 功能上寻找
1)分享:通过URL地址分享网页内容
2)图片加载与下载:通过URL地址加载或下载图片
3)图片、文章收藏功能
二、从 URL 关键字寻找
大致有以下关键字:
share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain
如果利用 google 语法加上这些关键字去寻找 SSRF 漏洞,耐心的验证,现在还是可以找到存在的 SSRF 漏洞
如何深入利用?如何探测非 HTTP 协议?如何防范?
这两篇文章写的不错,搭建环境什么的都有:
http://www.91ri.org/17111.htmlhttps://www.t00ls.net/articles-41070.html
11.如何渗透一个网站/思路(渗透测试流程)
1.信息收集
whois 查询 //站长工具
DNS 信息 //站长工具
子域名查询 //站长工具
旁站、C 段查询:http://www.webscan.cc/
开放协议、操作系统、中间件、使用的开源 Web 应用(如 WordPress,凭借经验判断)
用 nmap 进行端口扫描:
nmap-sP 192.168.1.100 //查看一个主机是否在线nmap 192.168.1.100 //查看一个主机上开放的端口nmap-p 1-1000 192.168.1.100 //扫描指定端口范围nmap-p 80 192.168.1.* //扫描特定端口nmap-O 192.168.1.100 //判断目标操作系统类型nmap-sV 192.168.1.100 //查看目标开放端口对应的协议及版本信息
获取 WAF、IDS、防火墙信息 ( 使用 hping3、wafw00f 等工具)
网站目录 ( 使用工具 DirBuster )
数据库类型:
我通常是通过中间件信息和开放端口来判断,这些只是判断思路并不是 100% 正确
MySQL:Apache+PHP:3306MSSQL:asp+IIS:1433Oracle:Java+Tomcat:1521PostgreSQL:5432
2.漏洞扫描
使用 w3af、AWVS、Nessus、APPscan 等专业的漏洞扫描器自动化扫描,或者,用自己收集的EXP编写漏洞扫描器
3.漏洞利用
SQLmap:SQL 注入利用BeFF:XSS 漏洞利用Metasploit:漏洞利用模块
总而言之,根据扫描到的漏洞选择合适的方法或工具来利用
4.权限获取
后台编辑器提权、Webshell 提权、数据库提权、内网渗透提权
5.分析报告
渗透测试范围和内容 ( 包不包括社工··· )
脆弱性分析:
有哪些漏洞哪些风险等等、漏洞信息以图示出。
检测过程
使用的方法和工具改善建议和修复方案
如何社工一个企业的员工信息:
嗯,不太擅长,简单说一下吧~先线上搜索他的公开信息,社交账号,社交圈子等等可以先从他身边的人间接了解他本人然后以顾客的身份接近,套取所需信息再者时间充裕的可以跟踪一下(违法危险,被抓住容易被揍成猪头)然后就是投其所好获取信任了
12.需要认识的常见端口
13.如何获取 Web 指纹
1:网页中发现关键字
2:特定文件的 MD5(主要是静态文件、不一定要是 MD5 )
3:指定 URL 的关键字
4:指定 URL 的 TAG 模式
whatweb ( Ruby 写的 ) 是一个 web 应用程序指纹识别工具,可以鉴别出内容管理系统 ( CMS ),博客平台、统计分析软件、javascript 库、服务器和其他更多Web程序。
whatweb 拥有超过 900 个插件,插件是用来鉴别 Web 应用系统的。
可以说 whatweb 是目前网络上比较强大的一款应用识别程序了。
它支持正则表达式、md5 hash 匹配、url 识别、HTML 标记模式、蜘蛛爬行等等
下载地址:
https://github.com/urbanadventurer/whatweb/
plecost 是基于 python 架构,利用了 Beautiful Soup 来解析 html、xml 文件,识别网站使用的插件及版本。kali 系统上集成了这个工具。(感兴趣的可以试着读读它的代码,自己开发一个指纹识别工具)
14.如何代码审计
自己找到过的代码审计问题
15.如何做扫描器-思路-为什么要这么设计
端口扫描器:
通过连接测试服务端口可以判断端口是否开放
(1) TCP 全连接扫描
尝试与目标主机建立正常的TCP三次握手,如果能建立三次握手,说明目标端口开放,但是扫描过程容易被检测到。
(2) TCP SYN 扫描 ( TCP 的半连接扫描)
利用 TCP 前两次握手,如第二次握手回复了,则证明端口开放,因为没有第三次握手建立连接,降低了被发现的可能,同时提高了扫描性能
(3) TCP FIN 扫描
向目标主机发送 FIN 标志位为 1 的数据包进行探测。
如果目标端口开放,则丢弃此包,不进行回应
若未开放,则返回一个 RST 标志位为 1 的数据包
这种扫描更隐秘又叫秘密扫描通常用于 UNIX 操作系统主机
有的 Windows 主机 ( Windows NT ),不论端口是否开放都回复 RST。
(4) UDP 的 ICMP 端口不可达扫描
用 UDP 协议向目标主机 UDP 端口发送探测数据包。
如果目标端口未打开,会返回一个 ICMP_PORTUNREACHABLE 错误。
根据是否收到这个消息,可以发现关闭的 UDP 端口
(5) ICMP 扫描
用 ICMP 协议向目标主机发送一个协议存在错误的 IP 数据包
根据反馈的 ICMP 信息判断目标主机使用的网络服务和端口
(6) 乱序扫描和慢速扫描
将扫描端口的顺序打乱,降低扫描速度,躲避防火墙和入侵检测系统的检查
漏洞扫描器
用模拟攻击扫描出具体的漏洞类型
比如 SQL 漏洞扫描器用 payload 字符去试、使页面报错
一个 SQL 漏洞扫描器实例:
http://blog.csdn.net/oxuzhenyi/article/details/72763486?locationNum=13&fps=1
防范扫描可以在目标主机和网络的外围边界部署防火墙和入侵检测系统
16.黑客兵器谱(渗透常用工具)
信息收集: Maltego
Web 程序 ( 拦截、重放 ):Burp suite
端口扫描: nmap (其实不仅仅是端口扫描它的脚本也很有用)
漏洞扫描:w3af、AWVS、Nessus、AppScan
SQL 注入神器: SQLmap
sqlmap 给出类型对安全研究有什么帮助(区别有、无),tamper 脚本使用:信安之路的一篇总结挺好,地址:
http://mp.weixin.qq.com/s/vEEoMacmETUA4yZODY8xMQ
XSS利用框架:BeEF
漏洞利用框架:metasploit
爆破利器:Hydra
17.python
基础类库
常用第三方类库、爬虫的基本流程
18.挖过哪些有趣的漏洞讲述过程
分享一个域名劫持钓鱼获取管理权限的思路文章吧:
http://mp.weixin.qq.com/s/iteYPCNPq0Sly1nf8QJWhg
https://forum.90sec.com/t/topic/503
根据 Github 上的面经总结的一些安全岗面试的基础知识,这些基础知识不仅要牢记,而且要熟练操作,分享给大家,共勉。
如果有漏掉的大家可以留言或是联系作者补充,谢谢。
1.对Web安全的理解
我觉得 Web 安全首先得懂 Web、第三方内容、Web 前端框架、Web 服务器语言、Web 开发框架、Web 应用、Web容器、存储、操作系统等这些都要了解,然后较为常见且危害较大的,SQL 注入,XSS 跨站、CSRF 跨站请求伪造等漏洞要熟练掌握。
第三方内容: 广告统计、mockup 实体模型
Web前端框架: jQuery 库、BootStrap
Web服务端语言: aps.net、php
Web开发框架: Diango/Rails/Thinkphp
Web应用: BBS ( discuz、xiuno ) / CMS ( 帝国、织梦、动易、Joomla ) / BLOG ( WordPress、Z-Blog、emlog )
Web 容器: Apache ( php )、IIS ( asp )、Tomcat ( java ) – 处理从客户端发出的请求
存储:数据库存储 / 内存存储 / 文件存储
操作系统: linux / Windows
2.http协议
安装火狐浏览器常用插件方便HTTP抓包调试:
firebug:抓包与各种调试Tamper Data:拦截修改Live Http Header:重放功能Hackbar:编码解码 / POST 提交Modify Headers:修改头部
http常见状态码:
1xx:信息提示,表示请求已被成功接收,继续处理。2xx:成功,服务器成功处理了请求3xx:重定向,告知客户端所请求的资源已经移动4xx:客户端错误状态码,请求了一些服务器无法处理的东西。5xx:服务端错误,描述服务器内部错误200 请求成功,一般用于 GET 和 POST 请求301 URL 重定向,永久移动302 URL 重定向,临时移动404 请求资源不存在400 客户端请求有语法错误,不能被服务器理解401 请求未经授权403 服务器收到请求,但是拒绝服务500 服务器内部错误503 服务器当前不能处理客户端请求,一段时间后可能恢复正常
GET 和 POST:
GET方法用于获取请求页面的指定信息,如点击链接POST方法是有请求内容的,由于向服务器发送大量数据,如提交表单
http 请求:
http 请求包括三个部分,请求行 ( 请求方法 )、请求头 ( 消息报头 ) 和请求正文
http响应:
http 响应也由三部分组成,响应行,响应头 ( 消息报头 ) 和响应正文 ( 消息主题 )
3.数据库
基本 SQL 语句
增:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)删:DELETE FROM 表名称 WHERE 列名称 = 值查:SELECT 列名称 FROM 表名称改:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
mysql 有哪些表
mysql 自带的数据库有 information_schema、performance_schema、sys、mysql,information_schema 数据库是 mysql 自带的,它提供了访问元数据库的方式。
在 mysql 数据库中,有 mysql_install_db 脚本初始化权限表,存储权限的表有:
1、user表: 用户列、权限列、安全列、资源控制列2、db表 : 用户列、权限列3、host表4、table_priv表5、columns_priv表6、proc_priv表
sys 数据库表说明 sys_config ,这是在这个系统库上存在的唯一一个表了:
详见这两篇文章:
http://blog.csdn.net/xlxxcc/article/details/51754524http://blog.csdn.net/huwei0518/article/details/43563583
mysql 提权方式 ( 搭建环境使用 mysql5.1 或以前的版本)
mof 提权:
拿到 Webshell 后:
1.找一个可写目录上传mof文件,例如上传到 C:/Windows/nullevt.mof 代码如下:
2.执行load_file及into dumpfile把文件导出到正确的位置即可:
Select load_file('C:/Windows/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'
执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接即可
反弹端口提权
1、拿到 mysql root 权限,无法通过网站 Getshell,利用 mysql 客户端工具连接 mysql 服务器,然后执行下面的操作:
2、本地监听你反弹的端口
nc.exe -vv -l -p 2010
成功后,你将获得一个 system 权限的 cmdshell
Mysql udf 提权
目录位置:
c:\windows\system32
1、最常见的是直接使用 udf.php ( http://pan.baidu.com/s/1jIEIQbk ) 此类的工具来执行 udf 提权
具体如下:
连接到 mysql 以后,先导出 udf.dll 到 c:\windows\system32 目录下。
2、创建相应的函数并执行命令,具体如下:
某些情况下,我们会遇到 Can’t open shared library 的情况,
这时就需要我们把 udf.dll 导出到 lib\plugin 目录下才可以,利用 NTFS ADS 流来创建文件夹
select @@basedir; //查找到mysql的目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION'; //利用NTFS ADS创建plugin目录
执行成功以后再进行导出即可。
4.操作系统
死锁以及为什么发生死锁,解除死锁
死锁是指一组相互竞争系统资源或进行通信的进程间的"永久"阻塞。
产生死锁的原因:
(1)竞争系统资源(2)进程的推进顺序不当
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
解除死锁:
当发现有进程死锁后,应立即把它从死锁状态中解脱出来,常采用的方法有:
剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态;撤消进程可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态消除为止所谓代价是指优先级、运行代价、进程的重要性和价值等。
进程之间通信方式:
信号,管道,消息队列,共享内存。
启动流程 ( Windows ):
基本上操作系统是从计算机通电自检完成后开始进行的,这一过程可以分为 ( 预引导、引导、载入内核、初始化内核、登录等 5 个阶段 )
1) 预引导
通电自检后,从引导设备中读取并运行主引导记录MBR
2) 引导
引导阶段又可以分为 初始化引导载入程序、操作系统选择、硬件检测、硬件配置文件选择
在这一过程中需要使用的文件包括 ntldr、boot.ini、ntdetect.com、ntoskrnl.exe、ntbootdd.sys、bootsect.dos ( 非必须 )
A 初始化引导载入程序:
程序 ntldr 会自动寻找系统自带的一个微型的文件驱动,读取文件系统驱动并成功找到硬盘上的分区后,引导载入程序的初始化过程就已经完成。
B 操作系统选择:
ntldr 程序完成了初始化工作后就会从硬盘上读取 boot.ini 文件,进行操作系统选择(多系统)
C 硬件检测:
操作系统选择了想要载入的 Windows 系统后,ntdetect.com 首先要将当前计算机中安装的所有硬件信息收集起来并列成一个表,接着将该表发送给 ntldr,这个表的信息稍后会被用来创建注册表中有关硬件的键。这里需要被收集信息的硬件包括总线 / 适配器类型显卡、通讯端口、串口、浮点运算器 ( CPU )、可移动存储器、键盘、指示装置 ( 鼠标 )。
D 配置文件选择:
这个步骤不是必须的。
只有在计算机(常用于笔记本电脑)创建了多个硬件配置文件的时候才需要处理这一步
3) 载入内核阶段
在这一阶段,ntldr 会载入 Windows 的内核文件 ntoskrnl.exe,但这里仅仅是载入,内核此刻还不会被初始化。随后被载入的是硬件抽象层。接下来要被内核载入的是:HKEY_LOCAL_MACHINE\System 注册表键。
ntldr 会根据载入的 Select 键的内容判断接下来需要载入哪个 ControlSet 注册表键,这些键决定随后系统会载入哪些设备驱动或者启动哪些服务。
这些注册表键的内容被载入后,系统将进入初始化内核阶段。
这时候ntldr会将系统的控制权交给操作系统内核。
4) 初始化内核阶段
在这一阶段中主要会完成 4 项任务:
创建 Hardware 注册表键、对 Control Set 注册表键进行复制载入和初始化设备驱动、启动服务
A.创建Hardware注册表键:
Windows 内核会使用前面硬件检测阶段收集倒的硬件信息来创建 HKEY_LOCAL_MACHINE/Hardware 键。也就是说注册表中该键的内容不是固定的,会根据系统中的硬件配置情况动态更新。
B.对Control Set注册表键进行复制:
如果上一步成功,系统内核会对 Control Set 键的内容创建一个备份。这个备份会被用在系统的高级启动菜单中 "最后一次正确的配置" 选项。
例如,系统新装了一个显卡驱动,Hardware 还没有创建成功系统就崩溃了,这时就可以使用"最后一次正确的配置"选项,用上一次 Control Set 注册表键的备份内容重新生成 Hardware 键,从而撤销因安装了显卡驱动对系统设置的更改。
C.载入和初始化设备驱动:
操作系统内核首先会初始化之前在载入内核阶段载入的底层设备驱动,然后会在注册表的,HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 键下查找所有 Strat 键值为 1 的设备驱动,这些设备驱动将会在载入之后立刻进行初始化。
D.启动服务:
系统内核成功载入并且成功初始化所有底层设备驱动后,ntoskrnl.exe 创建会话管理器进程 smss.exe,这是第一个用户态进程 会话管理器会启动其他高层子系统和服务,加载并初始化内核模式中的 Win32 子系统 ( win32k.sys ),启动 csrss.exe ( win32 子系统在用户模式的部分 ),进而启动 Win32 子系统。Win32 子系统的作用是控制所有输入 / 输出设备以及访问显示设备。当这些操作都完成后,Windows 的图形界面就可以显示出来了,同时用户也将可以使用键盘以及其他 I/O 设备。
接下来会话管理器会启动 winlogon 进程。至此,初始化内核阶段已经成功完成,这时候用户就可以开始登陆了。
5)登录阶段
这一阶段,由会话管理器启动的 winlogon.exe 进程将会启动本地安全性授权 lsass.exe 子系统,加载图形化标识和验证 ( Graphical Identfication and Authentication,GINA ) 并等待用户登录。
默认 GINA 是 Msgina.dll,可以自行开发 GINA 实现基于生物信息的用户登录 ( 指纹识别,人脸识别 ),然后启动后台服务管理器 services.exe ,通过它启动所有标识为自动启动的 Win32 服务程序。
在登录过程中,后台可能仍在加载一些非关键的设备驱动。系统会再次扫描 HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 注册表键,寻找 Start 键的数值是 2 或者更大数字的服务。这些服务就是非关键服务,系统直到成功登录后才开始加载这些服务,至此,Windows 启动过程完成。
线程:
线程有时候又被称为轻量级进程,是程序执行的最小单元。
一个进程可对应多个线程,而一个线程只属于一个进程。进程的执行是以线程为单位进行的,比如说一个简单 “hello world” 程序只有一个线程,就是 main() 函数对应的线程。
保护模式,实模式
保护模式与实模式相对应,在保护模式下, CPU 的寻址模式与实模式不同。
实模式下的寻址方式是 “段基址+段偏移”,段的默认大小为 64kb ,所有段都是可读写的,唯有代码段是可执行的,段的特权级为 0。
特权级有 0、1、2、3 四个级别,0 特权级别最高,3 特权级别最低想要控制系统,就必须取得0特权级,比如调试工具 SoftICE 就工作在0特权级上。
5.https的建立过程
1.客户端发送请求到服务器端 ( 支持的加密协议及版本,SSL,TLS )
2.服务端筛选合适的加密协议,返回 CA 证书和公开秘钥(公开秘钥作为证书的一部分而存在)
3.客户端使用浏览器根证书验证证书的合法性
4.如果验证通过,客户端生成对称秘钥,通过证书中的公钥加密,发送到服务端
5.服务端使用私钥解密,获取对称秘钥,使用对称秘钥加密数据
6.客户端使用共享秘钥解密数据,建立 SSL 加密通信…
6.TCP三次握手的过程以及对应的状态转换
源主机给目标主机发送一个 SYN 标志位为 1 的数据包
目标主机自动应答,SYN 和 ACK 均设置为 1,序号 SEQ 为 Y,并将确认号设置为 Y+1
源主机收到目标主机返回的第二次握手的数据包后,向目的主机发送一个 ACK 标志位为 1 的应答包示意对第二次握手确认要建立连接,第三次握手数据包的序号为 SEQ 为 X+1,确认号为 Y+1。
7.SQL注入漏洞
基本原理和防范
应用程序对用户输入的数据校验处理不严或者根本没有校验,以至用户可以直接执行 SQL 查询
1.对特殊字符进行转义处理(可能被编码绕过)
2.使用参数化语句 (完全杜绝 SQL 注入) 以 PHP 的 PDO 或 mysqli 为例:
PDO ( 使用序数参数 ):
除了数据库数据,利用方式还有哪些?
A 获取系统 shell
B 留数据库后门
8.XSS漏洞
基本原理和分类
当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞。
分类:
反射型:经过后端,不经过数据库存储型:经过后端,经过数据库DOM 型:不经过后端,DOM—based XSS 漏洞,是基于文档对象模型 ( Document Objeet Model,DOM ) 的一种漏洞,DOM xss 是通过 url 传入参数去控制触发的。
XSS防范
前端:
对用户输入进行编码转换
后端(在入口和出口都过滤):
对输入和输出都编码转换
可以自己编写过滤函数,调用也行。或者查找网上的 XSS 过滤函数。
xssfuzzing
一个基本的流程是:
1.检测输入点
2.潜在注入点检测
3.生成 payload
4.Payload 攻击验证
详细参考下面这篇文章:
https://www.qcloud.com/community/article/172258001490259493
xss还能干什么?
A 重定向网站
B 组建僵尸网络
更多:
http://bobao.360.cn/learning/detail/159.html
9.CSRF
原理与防范
由于浏览器自动发送会话 Cookie 等认证凭证,导致攻击者能够创建恶意的 Web 页面来产生伪造请求
案例:
上面一句话概括了 CSRF 的原理,下面我虚构了一个案例帮助理解:
123456:李白的用户 ID741741:杜甫的用户 ID941941:白居易的用户 ID
李白正在某银行网站给白居易转账,则有以下 URL
http://www.abc.com/zhuanzhang?=amount=500&fromAccount=123456&toAccount=941941
杜甫构造一个请求,把李白账户中的钱转到自己账户中(并且修改了金额为 5000 )
杜甫在他控制的多个网站中嵌入这段代码,李白只要登录了银行网站,又恰巧访问了杜甫控制的网站,李白的 5000 块钱就会转给杜甫
防范:
1.给每个 HTTP 请求添加一个不可预测的令牌,并保证该令牌对每个合法用户来说是唯一的,将独有的令牌包含在隐藏字段中,通过 HTTP 请求发送,避免在URL中暴露出来。
2.要求用户重新认证或判断他是一个真实的用户
csrf 如何不带 referer 访问?
那么什么是referer呢?
根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站。比如某银行的转账是通过用户访问 http://bank.test/test?page=10&userID=101&money=10000 页面完成,用户必须先登录 bank.test,然后通过点击页面上的按钮来触发转账事件。当用户提交请求时,该转账请求的 Referer 值就会是转账按钮所在页面的 URL(本例中,通常是以 bank. test 域名开头的地址)。而如果攻击者要对银行网站实施 CSRF 攻击,他只能在自己的网站构造请求,当用户通过攻击者的网站发送请求到银行时,该请求的 Referer 是指向攻击者的网站。因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.test 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,就有可能是 CSRF 攻击,则拒绝该请求。
测试发现:
测试发现 302 跳转不会带 referer,可以直接请求配置写 php 代码实现不带 referer 访问
302 跳转 php 代码实现
还有更简单的方式,使用 html 中 a 标签的一个属性
<a href="http://www.51xkx.cn" rel="noreferrer">test
10.SSRF 漏洞
原理介绍
SSRF ( Server-Side Request Forgery: 服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统 SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,下载等等.
如何寻找?
一、从 Web 功能上寻找
1)分享:通过URL地址分享网页内容
2)图片加载与下载:通过URL地址加载或下载图片
3)图片、文章收藏功能
二、从 URL 关键字寻找
大致有以下关键字:
share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain
如果利用 google 语法加上这些关键字去寻找 SSRF 漏洞,耐心的验证,现在还是可以找到存在的 SSRF 漏洞
如何深入利用?如何探测非 HTTP 协议?如何防范?
这两篇文章写的不错,搭建环境什么的都有:
http://www.91ri.org/17111.htmlhttps://www.t00ls.net/articles-41070.html
11.如何渗透一个网站/思路(渗透测试流程)
1.信息收集
whois 查询 //站长工具
DNS 信息 //站长工具
子域名查询 //站长工具
旁站、C 段查询:http://www.webscan.cc/
开放协议、操作系统、中间件、使用的开源 Web 应用(如 WordPress,凭借经验判断)
用 nmap 进行端口扫描:
nmap-sP 192.168.1.100 //查看一个主机是否在线nmap 192.168.1.100 //查看一个主机上开放的端口nmap-p 1-1000 192.168.1.100 //扫描指定端口范围nmap-p 80 192.168.1.* //扫描特定端口nmap-O 192.168.1.100 //判断目标操作系统类型nmap-sV 192.168.1.100 //查看目标开放端口对应的协议及版本信息
获取 WAF、IDS、防火墙信息 ( 使用 hping3、wafw00f 等工具)
网站目录 ( 使用工具 DirBuster )
数据库类型:
我通常是通过中间件信息和开放端口来判断,这些只是判断思路并不是 100% 正确
MySQL:Apache+PHP:3306MSSQL:asp+IIS:1433Oracle:Java+Tomcat:1521PostgreSQL:5432
2.漏洞扫描
使用 w3af、AWVS、Nessus、APPscan 等专业的漏洞扫描器自动化扫描,或者,用自己收集的EXP编写漏洞扫描器
3.漏洞利用
SQLmap:SQL 注入利用BeFF:XSS 漏洞利用Metasploit:漏洞利用模块
总而言之,根据扫描到的漏洞选择合适的方法或工具来利用
4.权限获取
后台编辑器提权、Webshell 提权、数据库提权、内网渗透提权
5.分析报告
渗透测试范围和内容 ( 包不包括社工··· )
脆弱性分析:
有哪些漏洞哪些风险等等、漏洞信息以图示出。
检测过程
使用的方法和工具改善建议和修复方案
如何社工一个企业的员工信息:
嗯,不太擅长,简单说一下吧~先线上搜索他的公开信息,社交账号,社交圈子等等可以先从他身边的人间接了解他本人然后以顾客的身份接近,套取所需信息再者时间充裕的可以跟踪一下(违法危险,被抓住容易被揍成猪头)然后就是投其所好获取信任了
12.需要认识的常见端口
13.如何获取 Web 指纹
1:网页中发现关键字
2:特定文件的 MD5(主要是静态文件、不一定要是 MD5 )
3:指定 URL 的关键字
4:指定 URL 的 TAG 模式
whatweb ( Ruby 写的 ) 是一个 web 应用程序指纹识别工具,可以鉴别出内容管理系统 ( CMS ),博客平台、统计分析软件、javascript 库、服务器和其他更多Web程序。
whatweb 拥有超过 900 个插件,插件是用来鉴别 Web 应用系统的。
可以说 whatweb 是目前网络上比较强大的一款应用识别程序了。
它支持正则表达式、md5 hash 匹配、url 识别、HTML 标记模式、蜘蛛爬行等等
下载地址:
https://github.com/urbanadventurer/whatweb/
plecost 是基于 python 架构,利用了 Beautiful Soup 来解析 html、xml 文件,识别网站使用的插件及版本。kali 系统上集成了这个工具。(感兴趣的可以试着读读它的代码,自己开发一个指纹识别工具)
14.如何代码审计
自己找到过的代码审计问题
15.如何做扫描器-思路-为什么要这么设计
端口扫描器:
通过连接测试服务端口可以判断端口是否开放
(1) TCP 全连接扫描
尝试与目标主机建立正常的TCP三次握手,如果能建立三次握手,说明目标端口开放,但是扫描过程容易被检测到。
(2) TCP SYN 扫描 ( TCP 的半连接扫描)
利用 TCP 前两次握手,如第二次握手回复了,则证明端口开放,因为没有第三次握手建立连接,降低了被发现的可能,同时提高了扫描性能
(3) TCP FIN 扫描
向目标主机发送 FIN 标志位为 1 的数据包进行探测。
如果目标端口开放,则丢弃此包,不进行回应
若未开放,则返回一个 RST 标志位为 1 的数据包
这种扫描更隐秘又叫秘密扫描通常用于 UNIX 操作系统主机
有的 Windows 主机 ( Windows NT ),不论端口是否开放都回复 RST。
(4) UDP 的 ICMP 端口不可达扫描
用 UDP 协议向目标主机 UDP 端口发送探测数据包。
如果目标端口未打开,会返回一个 ICMP_PORTUNREACHABLE 错误。
根据是否收到这个消息,可以发现关闭的 UDP 端口
(5) ICMP 扫描
用 ICMP 协议向目标主机发送一个协议存在错误的 IP 数据包
根据反馈的 ICMP 信息判断目标主机使用的网络服务和端口
(6) 乱序扫描和慢速扫描
将扫描端口的顺序打乱,降低扫描速度,躲避防火墙和入侵检测系统的检查
漏洞扫描器
用模拟攻击扫描出具体的漏洞类型
比如 SQL 漏洞扫描器用 payload 字符去试、使页面报错
一个 SQL 漏洞扫描器实例:
http://blog.csdn.net/oxuzhenyi/article/details/72763486?locationNum=13&fps=1
防范扫描可以在目标主机和网络的外围边界部署防火墙和入侵检测系统
16.黑客兵器谱(渗透常用工具)
信息收集: Maltego
Web 程序 ( 拦截、重放 ):Burp suite
端口扫描: nmap (其实不仅仅是端口扫描它的脚本也很有用)
漏洞扫描:w3af、AWVS、Nessus、AppScan
SQL 注入神器: SQLmap
sqlmap 给出类型对安全研究有什么帮助(区别有、无),tamper 脚本使用:信安之路的一篇总结挺好,地址:
http://mp.weixin.qq.com/s/vEEoMacmETUA4yZODY8xMQ
XSS利用框架:BeEF
漏洞利用框架:metasploit
爆破利器:Hydra
17.python
基础类库
常用第三方类库、爬虫的基本流程
18.挖过哪些有趣的漏洞讲述过程
分享一个域名劫持钓鱼获取管理权限的思路文章吧:
http://mp.weixin.qq.com/s/iteYPCNPq0Sly1nf8QJWhg
https://forum.90sec.com/t/topic/503
根据 Github 上的面经总结的一些安全岗面试的基础知识,这些基础知识不仅要牢记,而且要熟练操作,分享给大家,共勉。
如果有漏掉的大家可以留言或是联系作者补充,谢谢。
1.对Web安全的理解
我觉得 Web 安全首先得懂 Web、第三方内容、Web 前端框架、Web 服务器语言、Web 开发框架、Web 应用、Web容器、存储、操作系统等这些都要了解,然后较为常见且危害较大的,SQL 注入,XSS 跨站、CSRF 跨站请求伪造等漏洞要熟练掌握。
第三方内容: 广告统计、mockup 实体模型
Web前端框架: jQuery 库、BootStrap
Web服务端语言: aps.net、php
Web开发框架: Diango/Rails/Thinkphp
Web应用: BBS ( discuz、xiuno ) / CMS ( 帝国、织梦、动易、Joomla ) / BLOG ( WordPress、Z-Blog、emlog )
Web 容器: Apache ( php )、IIS ( asp )、Tomcat ( java ) – 处理从客户端发出的请求
存储:数据库存储 / 内存存储 / 文件存储
操作系统: linux / Windows
2.http协议
安装火狐浏览器常用插件方便HTTP抓包调试:
firebug:抓包与各种调试Tamper Data:拦截修改Live Http Header:重放功能Hackbar:编码解码 / POST 提交Modify Headers:修改头部
http常见状态码:
1xx:信息提示,表示请求已被成功接收,继续处理。2xx:成功,服务器成功处理了请求3xx:重定向,告知客户端所请求的资源已经移动4xx:客户端错误状态码,请求了一些服务器无法处理的东西。5xx:服务端错误,描述服务器内部错误200 请求成功,一般用于 GET 和 POST 请求301 URL 重定向,永久移动302 URL 重定向,临时移动404 请求资源不存在400 客户端请求有语法错误,不能被服务器理解401 请求未经授权403 服务器收到请求,但是拒绝服务500 服务器内部错误503 服务器当前不能处理客户端请求,一段时间后可能恢复正常
GET 和 POST:
GET方法用于获取请求页面的指定信息,如点击链接POST方法是有请求内容的,由于向服务器发送大量数据,如提交表单
http 请求:
http 请求包括三个部分,请求行 ( 请求方法 )、请求头 ( 消息报头 ) 和请求正文
http响应:
http 响应也由三部分组成,响应行,响应头 ( 消息报头 ) 和响应正文 ( 消息主题 )
3.数据库
基本 SQL 语句
增:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)删:DELETE FROM 表名称 WHERE 列名称 = 值查:SELECT 列名称 FROM 表名称改:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
mysql 有哪些表
mysql 自带的数据库有 information_schema、performance_schema、sys、mysql,information_schema 数据库是 mysql 自带的,它提供了访问元数据库的方式。
在 mysql 数据库中,有 mysql_install_db 脚本初始化权限表,存储权限的表有:
1、user表: 用户列、权限列、安全列、资源控制列2、db表 : 用户列、权限列3、host表4、table_priv表5、columns_priv表6、proc_priv表
sys 数据库表说明 sys_config ,这是在这个系统库上存在的唯一一个表了:
详见这两篇文章:
http://blog.csdn.net/xlxxcc/article/details/51754524http://blog.csdn.net/huwei0518/article/details/43563583
mysql 提权方式 ( 搭建环境使用 mysql5.1 或以前的版本)
mof 提权:
拿到 Webshell 后:
1.找一个可写目录上传mof文件,例如上传到 C:/Windows/nullevt.mof 代码如下:
2.执行load_file及into dumpfile把文件导出到正确的位置即可:
Select load_file('C:/Windows/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'
执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接即可
反弹端口提权
1、拿到 mysql root 权限,无法通过网站 Getshell,利用 mysql 客户端工具连接 mysql 服务器,然后执行下面的操作:
2、本地监听你反弹的端口
nc.exe -vv -l -p 2010
成功后,你将获得一个 system 权限的 cmdshell
Mysql udf 提权
目录位置:
c:\windows\system32
1、最常见的是直接使用 udf.php ( http://pan.baidu.com/s/1jIEIQbk ) 此类的工具来执行 udf 提权
具体如下:
连接到 mysql 以后,先导出 udf.dll 到 c:\windows\system32 目录下。
2、创建相应的函数并执行命令,具体如下:
某些情况下,我们会遇到 Can’t open shared library 的情况,
这时就需要我们把 udf.dll 导出到 lib\plugin 目录下才可以,利用 NTFS ADS 流来创建文件夹
select @@basedir; //查找到mysql的目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION'; //利用NTFS ADS创建plugin目录
执行成功以后再进行导出即可。
4.操作系统
死锁以及为什么发生死锁,解除死锁
死锁是指一组相互竞争系统资源或进行通信的进程间的"永久"阻塞。
产生死锁的原因:
(1)竞争系统资源(2)进程的推进顺序不当
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
解除死锁:
当发现有进程死锁后,应立即把它从死锁状态中解脱出来,常采用的方法有:
剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态;撤消进程可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态消除为止所谓代价是指优先级、运行代价、进程的重要性和价值等。
进程之间通信方式:
信号,管道,消息队列,共享内存。
启动流程 ( Windows ):
基本上操作系统是从计算机通电自检完成后开始进行的,这一过程可以分为 ( 预引导、引导、载入内核、初始化内核、登录等 5 个阶段 )
1) 预引导
通电自检后,从引导设备中读取并运行主引导记录MBR
2) 引导
引导阶段又可以分为 初始化引导载入程序、操作系统选择、硬件检测、硬件配置文件选择
在这一过程中需要使用的文件包括 ntldr、boot.ini、ntdetect.com、ntoskrnl.exe、ntbootdd.sys、bootsect.dos ( 非必须 )
A 初始化引导载入程序:
程序 ntldr 会自动寻找系统自带的一个微型的文件驱动,读取文件系统驱动并成功找到硬盘上的分区后,引导载入程序的初始化过程就已经完成。
B 操作系统选择:
ntldr 程序完成了初始化工作后就会从硬盘上读取 boot.ini 文件,进行操作系统选择(多系统)
C 硬件检测:
操作系统选择了想要载入的 Windows 系统后,ntdetect.com 首先要将当前计算机中安装的所有硬件信息收集起来并列成一个表,接着将该表发送给 ntldr,这个表的信息稍后会被用来创建注册表中有关硬件的键。这里需要被收集信息的硬件包括总线 / 适配器类型显卡、通讯端口、串口、浮点运算器 ( CPU )、可移动存储器、键盘、指示装置 ( 鼠标 )。
D 配置文件选择:
这个步骤不是必须的。
只有在计算机(常用于笔记本电脑)创建了多个硬件配置文件的时候才需要处理这一步
3) 载入内核阶段
在这一阶段,ntldr 会载入 Windows 的内核文件 ntoskrnl.exe,但这里仅仅是载入,内核此刻还不会被初始化。随后被载入的是硬件抽象层。接下来要被内核载入的是:HKEY_LOCAL_MACHINE\System 注册表键。
ntldr 会根据载入的 Select 键的内容判断接下来需要载入哪个 ControlSet 注册表键,这些键决定随后系统会载入哪些设备驱动或者启动哪些服务。
这些注册表键的内容被载入后,系统将进入初始化内核阶段。
这时候ntldr会将系统的控制权交给操作系统内核。
4) 初始化内核阶段
在这一阶段中主要会完成 4 项任务:
创建 Hardware 注册表键、对 Control Set 注册表键进行复制载入和初始化设备驱动、启动服务
A.创建Hardware注册表键:
Windows 内核会使用前面硬件检测阶段收集倒的硬件信息来创建 HKEY_LOCAL_MACHINE/Hardware 键。也就是说注册表中该键的内容不是固定的,会根据系统中的硬件配置情况动态更新。
B.对Control Set注册表键进行复制:
如果上一步成功,系统内核会对 Control Set 键的内容创建一个备份。这个备份会被用在系统的高级启动菜单中 "最后一次正确的配置" 选项。
例如,系统新装了一个显卡驱动,Hardware 还没有创建成功系统就崩溃了,这时就可以使用"最后一次正确的配置"选项,用上一次 Control Set 注册表键的备份内容重新生成 Hardware 键,从而撤销因安装了显卡驱动对系统设置的更改。
C.载入和初始化设备驱动:
操作系统内核首先会初始化之前在载入内核阶段载入的底层设备驱动,然后会在注册表的,HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 键下查找所有 Strat 键值为 1 的设备驱动,这些设备驱动将会在载入之后立刻进行初始化。
D.启动服务:
系统内核成功载入并且成功初始化所有底层设备驱动后,ntoskrnl.exe 创建会话管理器进程 smss.exe,这是第一个用户态进程 会话管理器会启动其他高层子系统和服务,加载并初始化内核模式中的 Win32 子系统 ( win32k.sys ),启动 csrss.exe ( win32 子系统在用户模式的部分 ),进而启动 Win32 子系统。Win32 子系统的作用是控制所有输入 / 输出设备以及访问显示设备。当这些操作都完成后,Windows 的图形界面就可以显示出来了,同时用户也将可以使用键盘以及其他 I/O 设备。
接下来会话管理器会启动 winlogon 进程。至此,初始化内核阶段已经成功完成,这时候用户就可以开始登陆了。
5)登录阶段
这一阶段,由会话管理器启动的 winlogon.exe 进程将会启动本地安全性授权 lsass.exe 子系统,加载图形化标识和验证 ( Graphical Identfication and Authentication,GINA ) 并等待用户登录。
默认 GINA 是 Msgina.dll,可以自行开发 GINA 实现基于生物信息的用户登录 ( 指纹识别,人脸识别 ),然后启动后台服务管理器 services.exe ,通过它启动所有标识为自动启动的 Win32 服务程序。
在登录过程中,后台可能仍在加载一些非关键的设备驱动。系统会再次扫描 HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 注册表键,寻找 Start 键的数值是 2 或者更大数字的服务。这些服务就是非关键服务,系统直到成功登录后才开始加载这些服务,至此,Windows 启动过程完成。
线程:
线程有时候又被称为轻量级进程,是程序执行的最小单元。
一个进程可对应多个线程,而一个线程只属于一个进程。进程的执行是以线程为单位进行的,比如说一个简单 “hello world” 程序只有一个线程,就是 main() 函数对应的线程。
保护模式,实模式
保护模式与实模式相对应,在保护模式下, CPU 的寻址模式与实模式不同。
实模式下的寻址方式是 “段基址+段偏移”,段的默认大小为 64kb ,所有段都是可读写的,唯有代码段是可执行的,段的特权级为 0。
特权级有 0、1、2、3 四个级别,0 特权级别最高,3 特权级别最低想要控制系统,就必须取得0特权级,比如调试工具 SoftICE 就工作在0特权级上。
5.https的建立过程
1.客户端发送请求到服务器端 ( 支持的加密协议及版本,SSL,TLS )
2.服务端筛选合适的加密协议,返回 CA 证书和公开秘钥(公开秘钥作为证书的一部分而存在)
3.客户端使用浏览器根证书验证证书的合法性
4.如果验证通过,客户端生成对称秘钥,通过证书中的公钥加密,发送到服务端
5.服务端使用私钥解密,获取对称秘钥,使用对称秘钥加密数据
6.客户端使用共享秘钥解密数据,建立 SSL 加密通信…
6.TCP三次握手的过程以及对应的状态转换
源主机给目标主机发送一个 SYN 标志位为 1 的数据包
目标主机自动应答,SYN 和 ACK 均设置为 1,序号 SEQ 为 Y,并将确认号设置为 Y+1
源主机收到目标主机返回的第二次握手的数据包后,向目的主机发送一个 ACK 标志位为 1 的应答包示意对第二次握手确认要建立连接,第三次握手数据包的序号为 SEQ 为 X+1,确认号为 Y+1。
7.SQL注入漏洞
基本原理和防范
应用程序对用户输入的数据校验处理不严或者根本没有校验,以至用户可以直接执行 SQL 查询
1.对特殊字符进行转义处理(可能被编码绕过)
2.使用参数化语句 (完全杜绝 SQL 注入) 以 PHP 的 PDO 或 mysqli 为例:
PDO ( 使用序数参数 ):
除了数据库数据,利用方式还有哪些?
A 获取系统 shell
B 留数据库后门
8.XSS漏洞
基本原理和分类
当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞。
分类:
反射型:经过后端,不经过数据库存储型:经过后端,经过数据库DOM 型:不经过后端,DOM—based XSS 漏洞,是基于文档对象模型 ( Document Objeet Model,DOM ) 的一种漏洞,DOM xss 是通过 url 传入参数去控制触发的。
XSS防范
前端:
对用户输入进行编码转换
后端(在入口和出口都过滤):
对输入和输出都编码转换
可以自己编写过滤函数,调用也行。或者查找网上的 XSS 过滤函数。
xssfuzzing
一个基本的流程是:
1.检测输入点
2.潜在注入点检测
3.生成 payload
4.Payload 攻击验证
详细参考下面这篇文章:
https://www.qcloud.com/community/article/172258001490259493
xss还能干什么?
A 重定向网站
B 组建僵尸网络
更多:
http://bobao.360.cn/learning/detail/159.html
9.CSRF
原理与防范
由于浏览器自动发送会话 Cookie 等认证凭证,导致攻击者能够创建恶意的 Web 页面来产生伪造请求
案例:
上面一句话概括了 CSRF 的原理,下面我虚构了一个案例帮助理解:
123456:李白的用户 ID741741:杜甫的用户 ID941941:白居易的用户 ID
李白正在某银行网站给白居易转账,则有以下 URL
http://www.abc.com/zhuanzhang?=amount=500&fromAccount=123456&toAccount=941941
杜甫构造一个请求,把李白账户中的钱转到自己账户中(并且修改了金额为 5000 )
杜甫在他控制的多个网站中嵌入这段代码,李白只要登录了银行网站,又恰巧访问了杜甫控制的网站,李白的 5000 块钱就会转给杜甫
防范:
1.给每个 HTTP 请求添加一个不可预测的令牌,并保证该令牌对每个合法用户来说是唯一的,将独有的令牌包含在隐藏字段中,通过 HTTP 请求发送,避免在URL中暴露出来。
2.要求用户重新认证或判断他是一个真实的用户
csrf 如何不带 referer 访问?
那么什么是referer呢?
根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站。比如某银行的转账是通过用户访问 http://bank.test/test?page=10&userID=101&money=10000 页面完成,用户必须先登录 bank.test,然后通过点击页面上的按钮来触发转账事件。当用户提交请求时,该转账请求的 Referer 值就会是转账按钮所在页面的 URL(本例中,通常是以 bank. test 域名开头的地址)。而如果攻击者要对银行网站实施 CSRF 攻击,他只能在自己的网站构造请求,当用户通过攻击者的网站发送请求到银行时,该请求的 Referer 是指向攻击者的网站。因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.test 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,就有可能是 CSRF 攻击,则拒绝该请求。
测试发现:
测试发现 302 跳转不会带 referer,可以直接请求配置写 php 代码实现不带 referer 访问
302 跳转 php 代码实现
还有更简单的方式,使用 html 中 a 标签的一个属性
<a href="http://www.51xkx.cn" rel="noreferrer">test
10.SSRF 漏洞
原理介绍
SSRF ( Server-Side Request Forgery: 服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统 SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,下载等等.
如何寻找?
一、从 Web 功能上寻找
1)分享:通过URL地址分享网页内容
2)图片加载与下载:通过URL地址加载或下载图片
3)图片、文章收藏功能
二、从 URL 关键字寻找
大致有以下关键字:
share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain
如果利用 google 语法加上这些关键字去寻找 SSRF 漏洞,耐心的验证,现在还是可以找到存在的 SSRF 漏洞
如何深入利用?如何探测非 HTTP 协议?如何防范?
这两篇文章写的不错,搭建环境什么的都有:
http://www.91ri.org/17111.htmlhttps://www.t00ls.net/articles-41070.html
11.如何渗透一个网站/思路(渗透测试流程)
1.信息收集
whois 查询 //站长工具
DNS 信息 //站长工具
子域名查询 //站长工具
旁站、C 段查询:http://www.webscan.cc/
开放协议、操作系统、中间件、使用的开源 Web 应用(如 WordPress,凭借经验判断)
用 nmap 进行端口扫描:
nmap-sP 192.168.1.100 //查看一个主机是否在线nmap 192.168.1.100 //查看一个主机上开放的端口nmap-p 1-1000 192.168.1.100 //扫描指定端口范围nmap-p 80 192.168.1.* //扫描特定端口nmap-O 192.168.1.100 //判断目标操作系统类型nmap-sV 192.168.1.100 //查看目标开放端口对应的协议及版本信息
获取 WAF、IDS、防火墙信息 ( 使用 hping3、wafw00f 等工具)
网站目录 ( 使用工具 DirBuster )
数据库类型:
我通常是通过中间件信息和开放端口来判断,这些只是判断思路并不是 100% 正确
MySQL:Apache+PHP:3306MSSQL:asp+IIS:1433Oracle:Java+Tomcat:1521PostgreSQL:5432
2.漏洞扫描
使用 w3af、AWVS、Nessus、APPscan 等专业的漏洞扫描器自动化扫描,或者,用自己收集的EXP编写漏洞扫描器
3.漏洞利用
SQLmap:SQL 注入利用BeFF:XSS 漏洞利用Metasploit:漏洞利用模块
总而言之,根据扫描到的漏洞选择合适的方法或工具来利用
4.权限获取
后台编辑器提权、Webshell 提权、数据库提权、内网渗透提权
5.分析报告
渗透测试范围和内容 ( 包不包括社工··· )
脆弱性分析:
有哪些漏洞哪些风险等等、漏洞信息以图示出。
检测过程
使用的方法和工具改善建议和修复方案
如何社工一个企业的员工信息:
嗯,不太擅长,简单说一下吧~先线上搜索他的公开信息,社交账号,社交圈子等等可以先从他身边的人间接了解他本人然后以顾客的身份接近,套取所需信息再者时间充裕的可以跟踪一下(违法危险,被抓住容易被揍成猪头)然后就是投其所好获取信任了
12.需要认识的常见端口
13.如何获取 Web 指纹
1:网页中发现关键字
2:特定文件的 MD5(主要是静态文件、不一定要是 MD5 )
3:指定 URL 的关键字
4:指定 URL 的 TAG 模式
whatweb ( Ruby 写的 ) 是一个 web 应用程序指纹识别工具,可以鉴别出内容管理系统 ( CMS ),博客平台、统计分析软件、javascript 库、服务器和其他更多Web程序。
whatweb 拥有超过 900 个插件,插件是用来鉴别 Web 应用系统的。
可以说 whatweb 是目前网络上比较强大的一款应用识别程序了。
它支持正则表达式、md5 hash 匹配、url 识别、HTML 标记模式、蜘蛛爬行等等
下载地址:
https://github.com/urbanadventurer/whatweb/
plecost 是基于 python 架构,利用了 Beautiful Soup 来解析 html、xml 文件,识别网站使用的插件及版本。kali 系统上集成了这个工具。(感兴趣的可以试着读读它的代码,自己开发一个指纹识别工具)
14.如何代码审计
自己找到过的代码审计问题
15.如何做扫描器-思路-为什么要这么设计
端口扫描器:
通过连接测试服务端口可以判断端口是否开放
(1) TCP 全连接扫描
尝试与目标主机建立正常的TCP三次握手,如果能建立三次握手,说明目标端口开放,但是扫描过程容易被检测到。
(2) TCP SYN 扫描 ( TCP 的半连接扫描)
利用 TCP 前两次握手,如第二次握手回复了,则证明端口开放,因为没有第三次握手建立连接,降低了被发现的可能,同时提高了扫描性能
(3) TCP FIN 扫描
向目标主机发送 FIN 标志位为 1 的数据包进行探测。
如果目标端口开放,则丢弃此包,不进行回应
若未开放,则返回一个 RST 标志位为 1 的数据包
这种扫描更隐秘又叫秘密扫描通常用于 UNIX 操作系统主机
有的 Windows 主机 ( Windows NT ),不论端口是否开放都回复 RST。
(4) UDP 的 ICMP 端口不可达扫描
用 UDP 协议向目标主机 UDP 端口发送探测数据包。
如果目标端口未打开,会返回一个 ICMP_PORTUNREACHABLE 错误。
根据是否收到这个消息,可以发现关闭的 UDP 端口
(5) ICMP 扫描
用 ICMP 协议向目标主机发送一个协议存在错误的 IP 数据包
根据反馈的 ICMP 信息判断目标主机使用的网络服务和端口
(6) 乱序扫描和慢速扫描
将扫描端口的顺序打乱,降低扫描速度,躲避防火墙和入侵检测系统的检查
漏洞扫描器
用模拟攻击扫描出具体的漏洞类型
比如 SQL 漏洞扫描器用 payload 字符去试、使页面报错
一个 SQL 漏洞扫描器实例:
http://blog.csdn.net/oxuzhenyi/article/details/72763486?locationNum=13&fps=1
防范扫描可以在目标主机和网络的外围边界部署防火墙和入侵检测系统
16.黑客兵器谱(渗透常用工具)
信息收集: Maltego
Web 程序 ( 拦截、重放 ):Burp suite
端口扫描: nmap (其实不仅仅是端口扫描它的脚本也很有用)
漏洞扫描:w3af、AWVS、Nessus、AppScan
SQL 注入神器: SQLmap
sqlmap 给出类型对安全研究有什么帮助(区别有、无),tamper 脚本使用:信安之路的一篇总结挺好,地址:
http://mp.weixin.qq.com/s/vEEoMacmETUA4yZODY8xMQ
XSS利用框架:BeEF
漏洞利用框架:metasploit
爆破利器:Hydra
17.python
基础类库
常用第三方类库、爬虫的基本流程
18.挖过哪些有趣的漏洞讲述过程
分享一个域名劫持钓鱼获取管理权限的思路文章吧:
http://mp.weixin.qq.com/s/iteYPCNPq0Sly1nf8QJWhg
根据 Github 上的面经总结的一些安全岗面试的基础知识,这些基础知识不仅要牢记,而且要熟练操作,分享给大家,共勉。
如果有漏掉的大家可以留言或是联系作者补充,谢谢。
1.对Web安全的理解
我觉得 Web 安全首先得懂 Web、第三方内容、Web 前端框架、Web 服务器语言、Web 开发框架、Web 应用、Web容器、存储、操作系统等这些都要了解,然后较为常见且危害较大的,SQL 注入,XSS 跨站、CSRF 跨站请求伪造等漏洞要熟练掌握。
第三方内容: 广告统计、mockup 实体模型
Web前端框架: jQuery 库、BootStrap
Web服务端语言: aps.net、php
Web开发框架: Diango/Rails/Thinkphp
Web应用: BBS ( discuz、xiuno ) / CMS ( 帝国、织梦、动易、Joomla ) / BLOG ( WordPress、Z-Blog、emlog )
Web 容器: Apache ( php )、IIS ( asp )、Tomcat ( java ) – 处理从客户端发出的请求
存储:数据库存储 / 内存存储 / 文件存储
操作系统: linux / Windows
2.http协议
安装火狐浏览器常用插件方便HTTP抓包调试:
firebug:抓包与各种调试Tamper Data:拦截修改Live Http Header:重放功能Hackbar:编码解码 / POST 提交Modify Headers:修改头部
http常见状态码:
1xx:信息提示,表示请求已被成功接收,继续处理。2xx:成功,服务器成功处理了请求3xx:重定向,告知客户端所请求的资源已经移动4xx:客户端错误状态码,请求了一些服务器无法处理的东西。5xx:服务端错误,描述服务器内部错误200 请求成功,一般用于 GET 和 POST 请求301 URL 重定向,永久移动302 URL 重定向,临时移动404 请求资源不存在400 客户端请求有语法错误,不能被服务器理解401 请求未经授权403 服务器收到请求,但是拒绝服务500 服务器内部错误503 服务器当前不能处理客户端请求,一段时间后可能恢复正常
GET 和 POST:
GET方法用于获取请求页面的指定信息,如点击链接POST方法是有请求内容的,由于向服务器发送大量数据,如提交表单
http 请求:
http 请求包括三个部分,请求行 ( 请求方法 )、请求头 ( 消息报头 ) 和请求正文
http响应:
http 响应也由三部分组成,响应行,响应头 ( 消息报头 ) 和响应正文 ( 消息主题 )
3.数据库
基本 SQL 语句
增:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)删:DELETE FROM 表名称 WHERE 列名称 = 值查:SELECT 列名称 FROM 表名称改:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
mysql 有哪些表
mysql 自带的数据库有 information_schema、performance_schema、sys、mysql,information_schema 数据库是 mysql 自带的,它提供了访问元数据库的方式。
在 mysql 数据库中,有 mysql_install_db 脚本初始化权限表,存储权限的表有:
1、user表: 用户列、权限列、安全列、资源控制列2、db表 : 用户列、权限列3、host表4、table_priv表5、columns_priv表6、proc_priv表
sys 数据库表说明 sys_config ,这是在这个系统库上存在的唯一一个表了:
详见这两篇文章:
http://blog.csdn.net/xlxxcc/article/details/51754524http://blog.csdn.net/huwei0518/article/details/43563583
mysql 提权方式 ( 搭建环境使用 mysql5.1 或以前的版本)
mof 提权:
拿到 Webshell 后:
1.找一个可写目录上传mof文件,例如上传到 C:/Windows/nullevt.mof 代码如下:
2.执行load_file及into dumpfile把文件导出到正确的位置即可:
Select load_file('C:/Windows/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'
执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接即可
反弹端口提权
1、拿到 mysql root 权限,无法通过网站 Getshell,利用 mysql 客户端工具连接 mysql 服务器,然后执行下面的操作:
2、本地监听你反弹的端口
nc.exe -vv -l -p 2010
成功后,你将获得一个 system 权限的 cmdshell
Mysql udf 提权
目录位置:
c:\windows\system32
1、最常见的是直接使用 udf.php ( http://pan.baidu.com/s/1jIEIQbk ) 此类的工具来执行 udf 提权
具体如下:
连接到 mysql 以后,先导出 udf.dll 到 c:\windows\system32 目录下。
2、创建相应的函数并执行命令,具体如下:
某些情况下,我们会遇到 Can’t open shared library 的情况,
这时就需要我们把 udf.dll 导出到 lib\plugin 目录下才可以,利用 NTFS ADS 流来创建文件夹
select @@basedir; //查找到mysql的目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION'; //利用NTFS ADS创建plugin目录
执行成功以后再进行导出即可。
4.操作系统
死锁以及为什么发生死锁,解除死锁
死锁是指一组相互竞争系统资源或进行通信的进程间的"永久"阻塞。
产生死锁的原因:
(1)竞争系统资源(2)进程的推进顺序不当
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
解除死锁:
当发现有进程死锁后,应立即把它从死锁状态中解脱出来,常采用的方法有:
剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态;撤消进程可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态消除为止所谓代价是指优先级、运行代价、进程的重要性和价值等。
进程之间通信方式:
信号,管道,消息队列,共享内存。
启动流程 ( Windows ):
基本上操作系统是从计算机通电自检完成后开始进行的,这一过程可以分为 ( 预引导、引导、载入内核、初始化内核、登录等 5 个阶段 )
1) 预引导
通电自检后,从引导设备中读取并运行主引导记录MBR
2) 引导
引导阶段又可以分为 初始化引导载入程序、操作系统选择、硬件检测、硬件配置文件选择
在这一过程中需要使用的文件包括 ntldr、boot.ini、ntdetect.com、ntoskrnl.exe、ntbootdd.sys、bootsect.dos ( 非必须 )
A 初始化引导载入程序:
程序 ntldr 会自动寻找系统自带的一个微型的文件驱动,读取文件系统驱动并成功找到硬盘上的分区后,引导载入程序的初始化过程就已经完成。
B 操作系统选择:
ntldr 程序完成了初始化工作后就会从硬盘上读取 boot.ini 文件,进行操作系统选择(多系统)
C 硬件检测:
操作系统选择了想要载入的 Windows 系统后,ntdetect.com 首先要将当前计算机中安装的所有硬件信息收集起来并列成一个表,接着将该表发送给 ntldr,这个表的信息稍后会被用来创建注册表中有关硬件的键。这里需要被收集信息的硬件包括总线 / 适配器类型显卡、通讯端口、串口、浮点运算器 ( CPU )、可移动存储器、键盘、指示装置 ( 鼠标 )。
D 配置文件选择:
这个步骤不是必须的。
只有在计算机(常用于笔记本电脑)创建了多个硬件配置文件的时候才需要处理这一步
3) 载入内核阶段
在这一阶段,ntldr 会载入 Windows 的内核文件 ntoskrnl.exe,但这里仅仅是载入,内核此刻还不会被初始化。随后被载入的是硬件抽象层。接下来要被内核载入的是:HKEY_LOCAL_MACHINE\System 注册表键。
ntldr 会根据载入的 Select 键的内容判断接下来需要载入哪个 ControlSet 注册表键,这些键决定随后系统会载入哪些设备驱动或者启动哪些服务。
这些注册表键的内容被载入后,系统将进入初始化内核阶段。
这时候ntldr会将系统的控制权交给操作系统内核。
4) 初始化内核阶段
在这一阶段中主要会完成 4 项任务:
创建 Hardware 注册表键、对 Control Set 注册表键进行复制载入和初始化设备驱动、启动服务
A.创建Hardware注册表键:
Windows 内核会使用前面硬件检测阶段收集倒的硬件信息来创建 HKEY_LOCAL_MACHINE/Hardware 键。也就是说注册表中该键的内容不是固定的,会根据系统中的硬件配置情况动态更新。
B.对Control Set注册表键进行复制:
如果上一步成功,系统内核会对 Control Set 键的内容创建一个备份。这个备份会被用在系统的高级启动菜单中 "最后一次正确的配置" 选项。
例如,系统新装了一个显卡驱动,Hardware 还没有创建成功系统就崩溃了,这时就可以使用"最后一次正确的配置"选项,用上一次 Control Set 注册表键的备份内容重新生成 Hardware 键,从而撤销因安装了显卡驱动对系统设置的更改。
C.载入和初始化设备驱动:
操作系统内核首先会初始化之前在载入内核阶段载入的底层设备驱动,然后会在注册表的,HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 键下查找所有 Strat 键值为 1 的设备驱动,这些设备驱动将会在载入之后立刻进行初始化。
D.启动服务:
系统内核成功载入并且成功初始化所有底层设备驱动后,ntoskrnl.exe 创建会话管理器进程 smss.exe,这是第一个用户态进程 会话管理器会启动其他高层子系统和服务,加载并初始化内核模式中的 Win32 子系统 ( win32k.sys ),启动 csrss.exe ( win32 子系统在用户模式的部分 ),进而启动 Win32 子系统。Win32 子系统的作用是控制所有输入 / 输出设备以及访问显示设备。当这些操作都完成后,Windows 的图形界面就可以显示出来了,同时用户也将可以使用键盘以及其他 I/O 设备。
接下来会话管理器会启动 winlogon 进程。至此,初始化内核阶段已经成功完成,这时候用户就可以开始登陆了。
5)登录阶段
这一阶段,由会话管理器启动的 winlogon.exe 进程将会启动本地安全性授权 lsass.exe 子系统,加载图形化标识和验证 ( Graphical Identfication and Authentication,GINA ) 并等待用户登录。
默认 GINA 是 Msgina.dll,可以自行开发 GINA 实现基于生物信息的用户登录 ( 指纹识别,人脸识别 ),然后启动后台服务管理器 services.exe ,通过它启动所有标识为自动启动的 Win32 服务程序。
在登录过程中,后台可能仍在加载一些非关键的设备驱动。系统会再次扫描 HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services 注册表键,寻找 Start 键的数值是 2 或者更大数字的服务。这些服务就是非关键服务,系统直到成功登录后才开始加载这些服务,至此,Windows 启动过程完成。
线程:
线程有时候又被称为轻量级进程,是程序执行的最小单元。
一个进程可对应多个线程,而一个线程只属于一个进程。进程的执行是以线程为单位进行的,比如说一个简单 “hello world” 程序只有一个线程,就是 main() 函数对应的线程。
保护模式,实模式
保护模式与实模式相对应,在保护模式下, CPU 的寻址模式与实模式不同。
实模式下的寻址方式是 “段基址+段偏移”,段的默认大小为 64kb ,所有段都是可读写的,唯有代码段是可执行的,段的特权级为 0。
特权级有 0、1、2、3 四个级别,0 特权级别最高,3 特权级别最低想要控制系统,就必须取得0特权级,比如调试工具 SoftICE 就工作在0特权级上。
5.https的建立过程
1.客户端发送请求到服务器端 ( 支持的加密协议及版本,SSL,TLS )
2.服务端筛选合适的加密协议,返回 CA 证书和公开秘钥(公开秘钥作为证书的一部分而存在)
3.客户端使用浏览器根证书验证证书的合法性
4.如果验证通过,客户端生成对称秘钥,通过证书中的公钥加密,发送到服务端
5.服务端使用私钥解密,获取对称秘钥,使用对称秘钥加密数据
6.客户端使用共享秘钥解密数据,建立 SSL 加密通信…
6.TCP三次握手的过程以及对应的状态转换
源主机给目标主机发送一个 SYN 标志位为 1 的数据包
目标主机自动应答,SYN 和 ACK 均设置为 1,序号 SEQ 为 Y,并将确认号设置为 Y+1
源主机收到目标主机返回的第二次握手的数据包后,向目的主机发送一个 ACK 标志位为 1 的应答包示意对第二次握手确认要建立连接,第三次握手数据包的序号为 SEQ 为 X+1,确认号为 Y+1。
7.SQL注入漏洞
基本原理和防范
应用程序对用户输入的数据校验处理不严或者根本没有校验,以至用户可以直接执行 SQL 查询
1.对特殊字符进行转义处理(可能被编码绕过)
2.使用参数化语句 (完全杜绝 SQL 注入) 以 PHP 的 PDO 或 mysqli 为例:
PDO ( 使用序数参数 ):
除了数据库数据,利用方式还有哪些?
A 获取系统 shell
B 留数据库后门
8.XSS漏洞
基本原理和分类
当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞。
分类:
反射型:经过后端,不经过数据库存储型:经过后端,经过数据库DOM 型:不经过后端,DOM—based XSS 漏洞,是基于文档对象模型 ( Document Objeet Model,DOM ) 的一种漏洞,DOM xss 是通过 url 传入参数去控制触发的。
XSS防范
前端:
对用户输入进行编码转换
后端(在入口和出口都过滤):
对输入和输出都编码转换
可以自己编写过滤函数,调用也行。或者查找网上的 XSS 过滤函数。
xssfuzzing
一个基本的流程是:
1.检测输入点
2.潜在注入点检测
3.生成 payload
4.Payload 攻击验证
详细参考下面这篇文章:
https://www.qcloud.com/community/article/172258001490259493
xss还能干什么?
A 重定向网站
B 组建僵尸网络
更多:
http://bobao.360.cn/learning/detail/159.html
9.CSRF
原理与防范
由于浏览器自动发送会话 Cookie 等认证凭证,导致攻击者能够创建恶意的 Web 页面来产生伪造请求
案例:
上面一句话概括了 CSRF 的原理,下面我虚构了一个案例帮助理解:
123456:李白的用户 ID741741:杜甫的用户 ID941941:白居易的用户 ID
李白正在某银行网站给白居易转账,则有以下 URL
http://www.abc.com/zhuanzhang?=amount=500&fromAccount=123456&toAccount=941941
杜甫构造一个请求,把李白账户中的钱转到自己账户中(并且修改了金额为 5000 )
杜甫在他控制的多个网站中嵌入这段代码,李白只要登录了银行网站,又恰巧访问了杜甫控制的网站,李白的 5000 块钱就会转给杜甫
防范:
1.给每个 HTTP 请求添加一个不可预测的令牌,并保证该令牌对每个合法用户来说是唯一的,将独有的令牌包含在隐藏字段中,通过 HTTP 请求发送,避免在URL中暴露出来。
2.要求用户重新认证或判断他是一个真实的用户
csrf 如何不带 referer 访问?
那么什么是referer呢?
根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站。比如某银行的转账是通过用户访问 http://bank.test/test?page=10&userID=101&money=10000 页面完成,用户必须先登录 bank.test,然后通过点击页面上的按钮来触发转账事件。当用户提交请求时,该转账请求的 Referer 值就会是转账按钮所在页面的 URL(本例中,通常是以 bank. test 域名开头的地址)。而如果攻击者要对银行网站实施 CSRF 攻击,他只能在自己的网站构造请求,当用户通过攻击者的网站发送请求到银行时,该请求的 Referer 是指向攻击者的网站。因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.test 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,就有可能是 CSRF 攻击,则拒绝该请求。
测试发现:
测试发现 302 跳转不会带 referer,可以直接请求配置写 php 代码实现不带 referer 访问
302 跳转 php 代码实现
还有更简单的方式,使用 html 中 a 标签的一个属性
<a href="http://www.51xkx.cn" rel="noreferrer">test
10.SSRF 漏洞
原理介绍
SSRF ( Server-Side Request Forgery: 服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统 SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,下载等等.
如何寻找?
一、从 Web 功能上寻找
1)分享:通过URL地址分享网页内容
2)图片加载与下载:通过URL地址加载或下载图片
3)图片、文章收藏功能
二、从 URL 关键字寻找
大致有以下关键字:
share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain
如果利用 google 语法加上这些关键字去寻找 SSRF 漏洞,耐心的验证,现在还是可以找到存在的 SSRF 漏洞
如何深入利用?如何探测非 HTTP 协议?如何防范?
这两篇文章写的不错,搭建环境什么的都有:
http://www.91ri.org/17111.htmlhttps://www.t00ls.net/articles-41070.html
11.如何渗透一个网站/思路(渗透测试流程)
1.信息收集
whois 查询 //站长工具
DNS 信息 //站长工具
子域名查询 //站长工具
旁站、C 段查询:http://www.webscan.cc/
开放协议、操作系统、中间件、使用的开源 Web 应用(如 WordPress,凭借经验判断)
用 nmap 进行端口扫描:
nmap-sP 192.168.1.100 //查看一个主机是否在线nmap 192.168.1.100 //查看一个主机上开放的端口nmap-p 1-1000 192.168.1.100 //扫描指定端口范围nmap-p 80 192.168.1.* //扫描特定端口nmap-O 192.168.1.100 //判断目标操作系统类型nmap-sV 192.168.1.100 //查看目标开放端口对应的协议及版本信息
获取 WAF、IDS、防火墙信息 ( 使用 hping3、wafw00f 等工具)
网站目录 ( 使用工具 DirBuster )
数据库类型:
我通常是通过中间件信息和开放端口来判断,这些只是判断思路并不是 100% 正确
MySQL:Apache+PHP:3306MSSQL:asp+IIS:1433Oracle:Java+Tomcat:1521PostgreSQL:5432
2.漏洞扫描
使用 w3af、AWVS、Nessus、APPscan 等专业的漏洞扫描器自动化扫描,或者,用自己收集的EXP编写漏洞扫描器
3.漏洞利用
SQLmap:SQL 注入利用BeFF:XSS 漏洞利用Metasploit:漏洞利用模块
总而言之,根据扫描到的漏洞选择合适的方法或工具来利用
4.权限获取
后台编辑器提权、Webshell 提权、数据库提权、内网渗透提权
5.分析报告
渗透测试范围和内容 ( 包不包括社工··· )
脆弱性分析:
有哪些漏洞哪些风险等等、漏洞信息以图示出。
检测过程
使用的方法和工具改善建议和修复方案
如何社工一个企业的员工信息:
嗯,不太擅长,简单说一下吧~先线上搜索他的公开信息,社交账号,社交圈子等等可以先从他身边的人间接了解他本人然后以顾客的身份接近,套取所需信息再者时间充裕的可以跟踪一下(违法危险,被抓住容易被揍成猪头)然后就是投其所好获取信任了
12.需要认识的常见端口
13.如何获取 Web 指纹
1:网页中发现关键字
2:特定文件的 MD5(主要是静态文件、不一定要是 MD5 )
3:指定 URL 的关键字
4:指定 URL 的 TAG 模式
whatweb ( Ruby 写的 ) 是一个 web 应用程序指纹识别工具,可以鉴别出内容管理系统 ( CMS ),博客平台、统计分析软件、javascript 库、服务器和其他更多Web程序。
whatweb 拥有超过 900 个插件,插件是用来鉴别 Web 应用系统的。
可以说 whatweb 是目前网络上比较强大的一款应用识别程序了。
它支持正则表达式、md5 hash 匹配、url 识别、HTML 标记模式、蜘蛛爬行等等
下载地址:
https://github.com/urbanadventurer/whatweb/
plecost 是基于 python 架构,利用了 Beautiful Soup 来解析 html、xml 文件,识别网站使用的插件及版本。kali 系统上集成了这个工具。(感兴趣的可以试着读读它的代码,自己开发一个指纹识别工具)
14.如何代码审计
自己找到过的代码审计问题
15.如何做扫描器-思路-为什么要这么设计
端口扫描器:
通过连接测试服务端口可以判断端口是否开放
(1) TCP 全连接扫描
尝试与目标主机建立正常的TCP三次握手,如果能建立三次握手,说明目标端口开放,但是扫描过程容易被检测到。
(2) TCP SYN 扫描 ( TCP 的半连接扫描)
利用 TCP 前两次握手,如第二次握手回复了,则证明端口开放,因为没有第三次握手建立连接,降低了被发现的可能,同时提高了扫描性能
(3) TCP FIN 扫描
向目标主机发送 FIN 标志位为 1 的数据包进行探测。
如果目标端口开放,则丢弃此包,不进行回应
若未开放,则返回一个 RST 标志位为 1 的数据包
这种扫描更隐秘又叫秘密扫描通常用于 UNIX 操作系统主机
有的 Windows 主机 ( Windows NT ),不论端口是否开放都回复 RST。
(4) UDP 的 ICMP 端口不可达扫描
用 UDP 协议向目标主机 UDP 端口发送探测数据包。
如果目标端口未打开,会返回一个 ICMP_PORTUNREACHABLE 错误。
根据是否收到这个消息,可以发现关闭的 UDP 端口
(5) ICMP 扫描
用 ICMP 协议向目标主机发送一个协议存在错误的 IP 数据包
根据反馈的 ICMP 信息判断目标主机使用的网络服务和端口
(6) 乱序扫描和慢速扫描
将扫描端口的顺序打乱,降低扫描速度,躲避防火墙和入侵检测系统的检查
漏洞扫描器
用模拟攻击扫描出具体的漏洞类型
比如 SQL 漏洞扫描器用 payload 字符去试、使页面报错
一个 SQL 漏洞扫描器实例:
http://blog.csdn.net/oxuzhenyi/article/details/72763486?locationNum=13&fps=1
防范扫描可以在目标主机和网络的外围边界部署防火墙和入侵检测系统
16.黑客兵器谱(渗透常用工具)
信息收集: Maltego
Web 程序 ( 拦截、重放 ):Burp suite
端口扫描: nmap (其实不仅仅是端口扫描它的脚本也很有用)
漏洞扫描:w3af、AWVS、Nessus、AppScan
SQL 注入神器: SQLmap
sqlmap 给出类型对安全研究有什么帮助(区别有、无),tamper 脚本使用:信安之路的一篇总结挺好,地址:
http://mp.weixin.qq.com/s/vEEoMacmETUA4yZODY8xMQ
XSS利用框架:BeEF
漏洞利用框架:metasploit
爆破利器:Hydra
17.python
基础类库
常用第三方类库、爬虫的基本流程
18.挖过哪些有趣的漏洞讲述过程
分享一个域名劫持钓鱼获取管理权限的思路文章吧:
http://mp.weixin.qq.com/s/iteYPCNPq0Sly1nf8QJWhg
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Java Web 模板代码生成器的设计与实现
起因项目中需要根据数据库表写很多Meta、Dao、Service代码,其中很多代码都是重复而繁琐的。因此如果有一个模板代码的生成器,就可以一定程度提高开发效率。目标可配置生成Java Web项目中Dao、Meta、Service层模板代码的生成器。代码框架 mvn archetype:generate -DgroupId=co…...
2024/4/20 17:07:54 - 微信小游戏基础讲解 微信开发工具
快速上手安装开发工具前往 开发者工具下载页面 ,根据自己的操作系统下载对应的安装包进行安装。你的第一个小游戏新建项目选择小程序项目,选择代码存放的硬盘路径。 目前小游戏不提供公开注册,可点击体验小游戏使用无 AppID 模式。 给你的项目起一个好听的名字,最后,勾选“…...
2024/4/20 17:07:53 - kali linux 2017.2版下安装w3af 【超详细】
参考: https://github.com/andresriancho/w3af/issues/15523 http://blog.csdn.net/ycl146/article/details/750415271 1、更新软件包sudo apt-get install update2、进入安装目录cd /usr/local/src3、下载w3afgit clone https://github.com/andresriancho/w3af.git4、更新…...
2024/4/20 17:07:52 - 微信小游戏学习(一)
新建项目选择小程序项目,选择代码存放的硬盘路径,并输入 AppId。你可以前往 小游戏注册 通过注册小游戏帐号来获得 AppId,也可以使用无 AppId 的体验模式。给你的项目起一个好听的名字,最后,勾选“建立游戏快速启动模板”(注意:你要选择一个空的目录才会有这个选项),点…...
2024/4/20 17:07:52 - 我都觉得自己的名字很土,土得就像一个草包
也许为了缓和气氛,莎丽微笑着对我说:“你的名字好好听哦。”莎丽,谜一样的女孩,留着齐耳短发,凭着甜美的嗓音一度成为学校晚会最受欢迎的主持人,追求她的男生据说一卡车都拉不走。那一刻,我感激地看着莎丽从我座位离开。从来没有一位女孩说我的名字好听,从来没有一位女…...
2024/4/20 17:07:51 - linux云服务器上多个Web项目80端口冲突的问题(Nginx反向代理)
在开发Web项目的时候往往会遇到这种情况:后台服务端一个项目,前端客户端一个项目,微信平台对接一个项目,etc。但是所有的Web项目想要共用同一个host和port(即同一个域名),而现网络上提供的云服务器大多数都是限制对外端口的,可用的端口一般只有80(http)、443(https)、2…...
2024/4/20 17:07:49 - kali下安装w3af_gui的依赖 必须一步步安装,否则图形化界面启动不了
1.安装依赖apt-get update apt-get install python-pip -y pip install --upgrade pip apt-get install npm sudo apt-get install graphviz apt-get build-dep python-lxmlapt-get install libegl1-mesa2.下载w3afcd ~ git clone https://github.com/andresriancho/w3af.git3…...
2024/4/25 21:17:59 - Remote desktop web access
微软提供了一个远程访问“同一个域内机器上安装的桌面应用”的方案,他们把这套方案称之为"Remote desktop service",即提供一个“共享给web用户的远程桌面服务”,这个服务为企业所谓的"Cloud services"提供某部分的技术支持,这也是我在最近项目中所参与…...
2024/4/21 11:23:12 - 什么是CSS盒模型 IE盒模型和W3C盒模型
看到一篇不错的文章 就转载过来了 说得全面 https://www.cnblogs.com/ylliap/p/6119740.html点击打开链接阅读目录 1. 什么是CSS盒模型 2. IE盒模型和W3C盒模型 3. CSS3属性box-sizing 4. 关于盒模型的使用 在最初接触CSS的时候,对于CSS盒模型的不了解,撞了很…...
2024/4/21 11:23:11 - python常见问题解决方案
平时工作中经常需要用到这些python小技巧,顺便做个记录import requests import timedef get_pr(domain):pr = 6time.sleep(1)html = requests.get("http://pr.web3389.com/pr/%s" % domain.strip())string = html.textkey = "images/pr1/Rank_"ipos = str…...
2024/4/21 11:23:10 - w3af 安装 问题总结
1: pdfminer 安装错误 Traceback (most recent call last):File "./w3af_console", line 25, in <module>from core.ui.console.console_ui import ConsoleUIFile "/home/hongshuai.yuan/w3af-master/core/ui/console/console_ui.py", line 42, …...
2024/4/21 11:23:10 - 老鹰的各种名字
eagle: 最常见的老鹰 hawk: 猎鹰 falcon: 隼 condor: 秃鹫,专指西半球的鹫。又叫神鹰。 vulture: 兀鹫。包括东西半球的鹫,即意义比condor要广。还可指像秃鹫一样贪婪的人。...
2024/4/22 1:10:54 - 在linux下使用w3m浏览网页
转自:http://hi.baidu.com/michael_lyx/blog/item/a70d87f1954522a5a40f5215.html这里指的终端是指不启动X的那个终端!首先保证你的内核支持framebuffer,因为有这个可以显示图片。 安装w3m, w3m-img(这个可以显示图片) sudo apt-get install w3m w3m-img -y 装好就启动 w3m…...
2024/4/21 11:23:06 - Windows终端服务和远程桌面Web方式访问及端口更改方法
以前用Windows 2000的终端服务,改变默认端口后Web方式访问失效。感觉windows2003应该解决了这个问题,就去查看kb,里面果然提到2003解决了此问题。现在把方法写下来,并把相关的知识总结一下,供大家参考。适用范围:Windows终端服务(当然包括远程桌面),本实验由于系统不同…...
2024/4/25 12:32:58 - 名字真好听的五子棋——15周进度
名字真好听的五子棋——成品展示 源代码 import java.awt.; import java.awt.event.; import java.applet.; import javax.swing.; import java.io.PrintStream; import javax.swing.JComponent; import javax.swing.JPanel; class ChessFrame extends JFrame implements Actio…...
2024/4/21 11:23:04 - fedor安装w3m,并在emacs下使用,以及w3m的快捷键
网上的方法好像大多是不针对Fedora,所以简单的说一下。 安装命令:yum install w3m-img -y 然后安装:dudo yum install emacs-w3m 具体的使用网上有很多的资料,大家自己去查一下。 进入emacs后,alt+x w3m 就可以进入了三:emacs-w3m快捷键操作下面是一些常用的快捷键1:基本…...
2024/4/21 11:23:03 - 编码之道:取个好名字很重要
代码就是程序员的孩子,给“孩子”取个好听的名字很重要!我们在项目开发中,接触到的变量、函数、类多数都是项目自己定义的,往往都是为了解决一些特定的领域的问题,引入了各种各样的概念,代码里面的名字就对应着问题领域或方案领域的这些概念,所以,对于一个命名良好,代…...
2024/4/21 11:23:02 - 《Web安全深度剖析》读书笔记
本文详细记录 《Web安全深度剖析》 的学习过程,资料为 《Web安全深度剖析》基础篇 状态码第一位数字定义嘞 响应的类别,且只有一下5种 1xx: 信息提示,表示请求已被成功接收,继续处理。其范围是 100 ~ 101 2xx:成功,服务器成功地处理了请求。其范围是 200 ~ 206 3xx: 重定…...
2024/4/21 11:23:02 - 程序员之痛点:取个好名字
在计算机科学中只有两件事情最难:缓存失效和取名字。 ——Phil Karlton 写出好代码很难,为什么?因为好的代码都是易读的。我们总是关注于当下,却不顾及以后;我们总是关注于代码一次写成,但忽视了在以后会被一次又一次地读写。好代码总是为了方便他人易读在不断优化,这就…...
2024/4/20 17:08:05 - 为页面添加正确的doctype声明-W3C标准
问题:今天无意间接触placeholder这个input元素的HTML5属性。但是写代码的时候编辑器提示没有此属性,感觉很奇怪?回答:之前HTML文档申明的是<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">改为<!DOCTYPE HTML>不受约束。可以使用H…...
2024/4/20 17:08:03
最新文章
- 【JVM】简述类加载器及双亲委派机制
双亲委派模型,是加载class文件的一种机制。在介绍双亲委派模型之前,我需要先介绍几种类加载器(Class Loader)。 1,类加载器 Bootstrap,加载lib/rt.jar,charset.jar等中的核心类,由…...
2024/4/30 22:16:56 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 记录我第一场面了40min+的面试
中冶赛迪信息技术(重庆)有限公司 国企 首先3/24投递的,4/10打了电话问是否接受劳务派遣,我当时不知道劳务派遣什么意思,问了和售前售后是不是类似,得到了不大一样的回答,后面加了微信,定了11开始面试。 这…...
2024/4/30 2:04:22 - [Spring Cloud] gateway全局异常捕捉统一返回值
文章目录 处理转发失败的情况全局参数同一返回格式操作消息对象AjaxResult返回值状态描述对象AjaxStatus返回值枚举接口层StatusCode 全局异常处理器自定义通用异常定一个自定义异常覆盖默认的异常处理自定义异常处理工具 在上一篇章时我们有了一个简单的gateway网关 [Spring C…...
2024/4/30 3:47:11 - Linux中的shell脚本之流程控制循环遍历
3 条件判断 4 流程控制语句 1)if 语句 案例,用户输入用户名和密码,判断用户名是否是admin,密码是否是123,如果正确,则显示登录成功 首先我创建了shell文件,touch getpawer 其中getpawer 是我自己命的名 #!/bin/bas…...
2024/4/30 2:28:10 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/29 23:16:47 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/30 18:14:14 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/30 18:21:48 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/30 9:43:22 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57