web安全工具

软件

  1. 子域名挖掘----Layer子域名挖掘机----利用字典进行暴力破解
  2. 敏感目录挖掘--御剑、dirserche------利用字典进行暴力破解或者采用爬虫完成敏感目录的爬取
  3. 发现网站的waf使用情况---wafw00f
  4. 内网信息收集---nmap\nessus-----找设备的ip地址、端口、服务/版本、漏洞nmap是命令行模式,图形化界面是zemapneussus是B/S架构https://服务器端IP:8834-----能完成主机存活性扫描、端口扫描、服务及版本扫描、漏洞扫描-----软件漏扫行业的第一------社区版,扫描的IP地址数只有16个且不能扫描公网IP地址,功能上有缺失,但是免费。专业版,需要进行破解,功能强大,缺点是不能确定使用的nessus是否有后门
  5. goby---资产收集与系统和web应用漏洞的扫描资产收集---存活主机、开放端口、使用的服务、、、、。相对于nessus而言goby更加的小巧
  6. xray----web漏洞扫描工具------阿里长亭开发的。
  7. AWVS---web漏洞扫描----很容易被安全设备检测到,线程太大容易将脆弱的web服务器扫描瘫痪原理性扫描:利用poc对网站进行攻击,攻击成功则漏洞存在反之不存在。特点是准确性高,但是会给服务器中写入大量的测试数据,从而影响网站的使用推断性扫描:根据收集的大量信息进行数据分析得出是否存在漏洞。特点是容易出现误报、漏报,速率较快,适用于大型系统。
  8. hackbar
  9. cookie manerger---对浏览器cookie进行管理。----可篡改伪造cookie完成身份冒充
  10. foxyproxy----管理浏览器代理的。
  11. Wappalyzer---收集访问的网站使用的具体信息。
  12. sqlmap----完成sql注入的
  13. webshell管理工具------配合一句话木马完成getshellcnkife、蚁剑、冰蝎、哥斯拉
  14. burpsuit-----抓包、改包、暴力破解、重放、请求方式篡改。-------最重要
  15. 第三方工具----网站---不容易找到攻击IP
    fofa2. shadan
    钟馗之眼
    、、、、、

CSRF漏洞原理

漏洞介绍

  1. 什么是CSRF漏洞
    全名:Cross Site Request Forgery,跨站请求伪造。利用通过受害者还未失效的身份认证信息,诱骗其点击恶意的链接或者访问受害者不知情的网站,在受害者不知情的情况下完成请求,从而达到一个攻击的目的。因为受害者点击之后就会触发恶意代码完成恶意的请求,也叫 one click攻击
    跨站---通过A网站访问B网站
    请求---访问网站的过程就是请求
    身份认证信息---COOKIE(在浏览器里)和SESSION(在web服务器里)
    含有身份认证信息的字符串
  2. 漏洞原理
    网站的某些重要功能并没有安全性措施,如用户添加、信息修改、修改密码、转账等
  • 密码修改---需要验证旧密码或者验证绑定的手机号码

没有验证referer

由于个人习惯并没有正确退出,所以COOKIE仍然有效

没有验证token

  • token就是一串随机的字符串
    token---控制网站的访问流程的
    在网站开始解析的时候会随机的产生一个字符串,这个字符串会伴随网站的整个使用流程
  1. CSRF攻击流程
  1. 流程图
  1. 受害者正常访问网站A(含有CSRF)
  2. 网站A会返回COOKIE值并且将COOKIE值存放到浏览器,SESSION值存放到服务器
  3. 受害者使用网站A结束之后没有正常退出,使COOKIE值是一个有效的状态存放在浏览器
    没正常退出---直接将网站A的窗口X掉关闭,没有通过点击注销的方式退出网站
  4. 受害者访问网站B(含有XSS等漏洞),触发XSS等漏洞的恶意代码--->对网站A中的某个功能进行请求
    恶意请求是如何构造的--->访问网站A中某个功能的URL。攻击者提前访问过网站A,并且分析得出这个功能安全防御的措施不够严格,存在CSRF。
  5. 达到的目的:请求网站A
    由于受害者浏览器上存在网站A的COOKIE,在不需要账号密码就可以完成登录和身份认证后的操作。
  1. 场景

    谁访问此链接就会修改谁的数据,即谁点击就使用谁的COOKIE
    攻击者修改URL让受害者点击,点击后的信息可以被修改成攻击者修改的URL中的数据
  2. 利用
  1. burpsuite
    burpsuite生成的url
    也可以使用表单提交的方式进行修改

    直接利用生成的html网页,构造的html网页应放置到vps(公网服务器上---腾讯云、阿里云、华为云、亚马逊)
  2. DVWA关卡
  1. low
    没有任何的安全处理方式
  2. mid
    校验了referer,需满足referer中包含有当前访问网站的主机名
    绕过方式:将html的名字命名为:当前主机名.php
  3. high
    验证了token
  4. 总结
    只要出现了token,验证了referer则CSRF漏洞不建议测试
  1. 防御
  1. 重要功能添加验证信息,如添加校验码、校验旧密码、、、、
  2. 校验referer
  3. 校验token
  4. 提高用户的安全意识

XSS跨站脚本攻击

简介

  1. 什么是xss漏洞
    英文全称:Cross Site Scripting
  2. 如何进行攻击
    恶意攻击者向web前端插入恶意的JavaScript代码,当用户浏览该网页时,嵌入其中的恶意代码将会被执行,从而达到攻击的目的
  3. JavaScript
  • 增加网站的动态效果及安全性验证
  • 人与网站互动
  • 前端和后端的数据交互
  1. XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括JavaVBScriptActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
  2. 由于用户不可控输入,攻击者可任意的输入前端代码,当前端代码拼接成静态网页,然后在被攻击者的电脑上执行后,可导致数据的丢失(由于没有安全性处理,所以攻击者可以将恶意的代码输入到后端,然后后端输出出来,在前端当中实现)
  1. 用户不可控输入---前端输入的数据被后端接受后没有进行严格的安全性处理就直接使用
  2. web中数据输出的过程实际上就是将数据拼接成静态网站然后将数据发送到客户端的过程
  3. 如果输出的数据中含有恶意的js代码,从而造成风险

  1. 简单利用
    payload
  2. 危害---看作用点---前端
  1. 盗取被攻击者的COOKIE值,进行身份冒充
  2. 网页篡改---js中的某些函数可以获取并且重新赋值HTML的标签值
  3. 删除函数
  4. 流量劫持
  1. 增大流量
  1. 正常操作---引流---送钱、打广告
  2. 非常规---利用xss漏洞自动请求流量较小的网站或在其他网站上二维码---违法
  1. 钓鱼网站
  2. 配合CSRF攻击----Ajax、window.location----网站请求
  3. 分类
  1. 反射型xss(非持久型xss)---数据会经过服务器端,不会到达数据库,输入一次攻击代码只攻击一次
  • 攻击代码输入后在后端会直接输出到前端触发
  1. 存储型xss(持久型xss)---数据会经过服务器端,到达数据库,输入一次攻击代码攻击多次
  • 攻击代码会直接存放到数据库,访问该数据(存储的恶意代码)的时候就会执行
  1. DOM型xss(非持久性xss)---数据不 会经过服务器端,不会到达数据库,输入一次攻击代码只攻击一次
  • 输入的恶意代码不会经过服务器,在前端被js代码直接读取,放置到前端的标签中,是一种特殊的反射型
  1. 利用流程
  1. 找到注入点
    找到数据输入的地方
  2. 判断回显位置---输入的数据在什么地方输出
    通过找输入的数据能够在前端进行输出则可以证明输入的前端恶意代码在没有安全性处理的情况下能够输出到前端,从而造成风险
  3. 构造基础的payload
  4. 进行提交payload
  5. 分析响应状况
  1. 如果成功解析则xss存在
  2. 反之考虑绕过
  1. 确认漏洞
  1. 如果响应达到了预期,则说明漏洞存在。反之不存在
  1. 难度
    高危漏洞但漏洞库不一定接受此漏洞,存储型xss肯定被接受
  1. 反射型难度较高
  • 如何发送含有payload的连接---社工---效率很低
  • 影响面较小
  1. 存储型xss攻击难度较小
  • 将恶意代码写入数据库,只要访问该网站的用户必定中招
  1. 防御
  1. 过滤---将关键的字符过滤掉
  2. 实体化编码
  1. 将特殊字符转换成字符串

文件上传漏洞

webshell

webshell就是以aspphp、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理。正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。

顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作命令。webshell主要用于网站和服务器管理,由于其便利性和功能强大,被特别修改后的webshell也被部分人当作网站后门工具使用.

通常被黑客利用,黑客通过一些上传方式,将自己编写的webshell.上传到web 服务器的页面的目录下,然后通过页面访问的形式进行入侵,或者通过插入一句话连接本地的一些相关工具直接对服务器进行入侵操作。

后门

大家都知道,一台计算机上有65535个端口,那么如果把计算机看作是一间屋子,那么这65535个端口就可以它看做是计算机为了与外界连接所开的65535扇门。每个门的背后都是一个服务。有的门是主人特地打开迎接客人的(提供服务),有的门是主人为了出去访问客人而开设的(访问远程服务)——理论上,剩下的其他门都该是关闭着的,但偏偏由于各种原因,很多门都是开启的。于是就有好事者进入,主人的隐私被刺探,生活被打扰,甚至屋里的东西也被搞得一片狼迹。这扇悄然被开启的门——就是“后门”。

webshell分类

webshell根据不同的文件大小、功能、开发的语言版本等不同,可以进行不同的分类,常见的webshell分类方式有以下两种方式。

  1. 不同的开发语言
    webshell根据脚本可以分为PHP脚本木马,ASP脚本木马,也有基于.NET的脚本木马和JSP脚本木马。在国外,还有用python脚本语言写的动态网页,当然也有与之相关的webshell。
  2. 代码量(shell功能)大小
    根据功能也分为大马和小马,小马通常指的一句话木马,例如:<%eval request("pass")%> 通常把这句话写入一个文档里面,然后文件名改成xx.asp。然后传到服务器上面。这里eval方法将request(“pass”)转换成代码执行,request函数的作用是应用外部文件。这相当于一句话木马的客户端配置。

URL的长度是有限的,所以有的时候不用get类型进行传参,可以用post进行操作

一句话木马

一句话木马的原理即可以执行传递上来变量的内容,变量名称即“一句话密码”,变量内容即后门执行代码,内容可以是list文件、上传及下载文件、数据库操作等等。这类后门通常只一行代码,因此可以随意插入web站点的正常文件而并不影响原本代码N执行,甚至与正常图片的结合可以形成“图片马”。体积小,隐蔽性强是一句话林马最大的优势。灵活的变量内容同时成就了很多经典的一句话操作客户端,如菜刀。

编写一句话木马,根据不同的开发语言可以分为不同类型的一句话木马,其主要分为两个部分:①用户可控参数②系统命令执行函数;以php的一句话木马后门中最普通的一种为例:<?php eval($_POST['v']);?>,其中v作为参数用于传递攻击者提交的内容;$_POST['']用于接收前端攻击者输入的内容,这部分作为用户可控输入内容, eval()函数是PHP语言中的命令执行函数,会将任何字符串当做命令进行执行;当$_POST['v']接收传值后,利用eval()函数对传入的参数进行执行。

木马免杀处理

免杀就是需要特定的关键字,我们使用一些特殊的构造方法,或者拆分或者替换等方式不断地尝试躲避服务器端的过滤

  1. 构造法绕过检测(PHP)
    PHP连接字符串是用点号
  2. 正则表达式代替法(PHP)
  • php中有一个函数preg_replace()函数,这个函数可以实现正则表达式的替换工作。用替换绕过检测系统还需要 php脚本语言里面的一个函数特性,函数在调用的时候,如果函数里面的形参赋的值里面含有命令,就会执行这个命令。
  1. 回避法(asp)
  2. 拆分法(asp)
  3. 乱码变形(ANSI->Unicode加密)

文件上传漏洞

文件上传功能是大部分WEB应用的必备功能,站点常见文件上传点有:用户头像上传、社交类网站允许用户上传照片、服务类网站需要用户上传证明材料的电子档、电商类网站允许用户上传图片展示商品情况等。然而,看似普通的文件上传功能如果缺法安全防护措施,就存在巨大的安全风险。

利用

通常文件上传过程为客户端以文件表单的方式向服务器提交上传的文件数据,服务器接受请求包,接受上传的文件生成临时文件,对临时文件进行安全性检测,读取临时文件信息,判断文件是否合规,通过文件安全性检测后,才会将文件保存到服务器.-

利用流程

文件上传漏洞利用通常分为两个部分: webshell..文件上传和 webshell文件连接。第一部分:Webshell.文件上传部分,需要利用网站文件上传功能点,绕过站点的安全性检测上传websehll文件到服务器中,还需要确认文件的存放路径,文件名是否有被服务器重名命以及文件能否正确被服务端脚本语言解析。第二部分:webshell文件连接,使用浏览器打开webshell文件或者使用工具连接webshell文件,扩展功能。

漏洞成因

  • 服务器配置不当
  • 在不需要上传文件的情况下可导致任意文件上传,参考HTTP请求方法 PUTe
  • 本地文件上传被绕过
  • 只在客户端浏览器上做了文件限制而没有在远程的服务器上做限制,只需要修改上传时发送的数据包就可以轻松绕过上传限制
  • 过滤不严或被绕过
  • 有些网站使用上传黑名单过滤掉一些可执行文件脚本的后缀,但是黑名单不全或者被绕过,也可导致恶意文件上传。如果使用白名单,仅允许名单内所包含的文件格式上传会更加安全。
  • 文件解析漏洞导致文件执行
  • 前端修改文件后缀,绕过针对后缀名的黑白名限制,当修改后缀的文件可以被当成服务端语言脚本解析。例如: php5、php3、phtml等后缀可以被服务端脚本语言解析。
  • 路径截断
  • 路径解读与系统解析文件有关,例如:window 操作在读取文件时,当碰到%00时,就不会再解析空格后面的内容。以“1.php%00.txt”为例,当解析到%00时,该文件后缀.txt不会被解析,则该文件会被当成php 脚本进行处理。

常见的上传限制和绕过

客户端校验

客户端验证是一种发生在输入被实际发送至服务器之前进行的验证。这类验证大都都是通过JavaScript,VBScript或HTML5来完成的,通过黑名单或者表名单的方式对文件后缀进行校验。

客户端校验绕过

针对客户端校验文件后缀的限制,绕过限制的方式有:

①禁用前端校验脚本语言,或修改脚本,使得脚本无法运行 ②修改文件后缀符合客户端上传条件,然后使用burpsuite,抓包,改为脚本语言后缀。

服务端校验-MIME类型检测

MIME:多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。 在服务端读取上传文件的MIME类型,对MIME类型做限定,检测文件类型。

标准的文件上传组件中会自动上传文件的MIME类型,但是由于MIME类型是从客户端传递的,修改也不影响文件正常运行,因此通过Burp Suite拦截和修改Content-Type字段的MIME 类型就绕过服务端的MIME检测,附上常见的MIME类型。

服务端检测-文件扩展名检测

文件扩展名即为文件后缀名,服务端读取文件的后缀名,对后缀名进行限定,常见的限定方式为黑名单限制和白名单限制。黑名单限制不允许文件后缀名在名单的文件上传,白名单限制只允许在名单内文件后缀的文件上传。

服务端检测-文件扩展名黑白名单绕过

  1. 文件名大小写绕过,例如:xx.Php,xx.AsP.
  2. 特殊文件名绕过,例如: windows文件名后缀不能有.或空格
  3. 0x00截断绕过,例如:xx.php(0x00). jpg
  4. 服务器解析漏洞,例如 php3、php5,phtml等特殊扩展名会被当做php文件解析。
  5. 文件包含漏洞,利用文件包含使得文件被作为脚本语言文件执行。
  6. . htaccess.文件攻击,更改文件解析类型

命令执行漏洞

概述

程序员使用脚本语言(比如 PHP)开发应用程序过程中,脚本语言开发十分快速、简洁,方便,但是也伴随着一些问题。比如说速度慢,或者无法接触系统底层,如果我们开发的应用,特别是企业级的一些应用需要去调用一些外部程序。当应用需要调用一些外部程序时就会用到一些执行系统命令的函数。

而应用在调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,在没有过滤用户的输入的情况下,就会造成命令执行漏洞。

远程命令执行漏洞(RCE)是指可以在仅有远程访问权限的情况下执行系统命令的漏洞,是安全漏洞中危害最大的一类。

在WEB应用中,远程命令执行漏洞通常分为命令注入和代码注入两类:

  • 命令注入:可通过HTTP请求直接让服务端执行系统命令的漏洞,通常是由于系统命令执行函数引用了用户可控变量且未进行有效过滤引起的。
  • 代码注入:可通过HTTP请求让服务端执行服务端WEB代码的漏洞,通过服务端WEB代码也可以漏洞通常是由于代码执行函数引用了用户可控变量且未进行有效过滤引起的。常用的一句实现服务端系统命令执行,此类话木马就是一个人为生成的代码注入漏洞

命令执行漏洞利用

在Web 程序中,因为业务功能需求要通过Web前端传递参数到后台服务器上执行。但由于开发人员没有对输入进行严格的过滤,导致攻击者可以构造一些额外的“带有非法目的”命令,去欺骗后台服务器执行这些非法命令,这就是命令执行漏洞。

在存在命令执行漏洞的情况下,如果Web应用使用的是root权限,则该漏洞可以导致攻击者在服务器上执行任意命令。以DVWA平台low安全等级为例,我们来看看这个漏洞的具体成因,漏洞页面如下:

源代码

linux在进行ping操作时会一直进行,需要加上 -c 4 的选项,ping4次之后就停止

通过对127.0.0.1的ping操作发现有回显

再通过&|符号进行操作,比如输入 127.0.0.1 & ipconfig 就会进行ping命令和ip的查看

或者输入 127.0.0.1 & dir

即通过该特性相当于控制了对方电脑的cmd,就可以使用dos命令进行木马的创建或者一些其他攻击行为

常用命令执行函数

有的时候,开发web应用需要调用到一些能够执行系统命令的函数,如PHP中的system、exec、shell_exec、数据库的自定义函数等,当用户能够控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。

以PHP为例,常用的命令执行函数包括system、exec、shell_exec、passthru。区别如下:

  • system:成功执行返回结果的最后一行,否则返回FALSE;
  • exec:成功执行返回结果的最后一行;
  • shell_exec:成功执行返回全部结果,否则返回NULL;
  • passthru:把命令的运行结果原样地直接输出到标准输出设备上。

除了PHP以外,再来看看其他开发语言常用的命令执行函数。

JSP执行系统命令:

Runtimerun=Runtime.GetRuntime();

Run.exec(“ipconfig”);

ASP执行系统命令:

<%/Respone.writeCreateObject(“wscript.shell”).exec(‘cmd.exe/cipconfig’).stdOut.ReadAll%>

Java反序列化漏洞

概述

序列化是让Java对象脱离Java运行环境的一种手段,可以有效的实现多平台之间的通信、对象持久化存储。

Java序列化是指把Java对象转换为字节序列的过程,便于保存在内存、文件、数据库中,ObjectOutputStream类的writeObject()方法可以实现序列化。反序列化是指把字节序列恢复为Java对象的过程,ObjectInputStream类的readObject()方法用于反序列化。

条件:

类必须实现反序列化接口,同时设置serialVersionUID以便适用不同jvm环境。可通过SerializationDumper这个工具来查看其存储格式,主要包括Magic头:0xaced,TC_OBJECT:0x73,TC_CLASS:0x72,serialVersionUID,newHandl

代码功能:

将String对象obj1序列化后写入object文件,后反序列化得到对象obj2。

Object文件中的内容:

Aced0005是java序列化内容的特征,编码后是rO0ABQ==

使用场景:

  • http参数,cookie,sesion,存储方式可能是base64(rO0),压缩后的base64(H4sl),MII等
  • ServletsHTTP,Sockets,Session管理器包含的协议就包括JMX,RMI,JMS,JNDI等(\xac\xed)
  • xmlXstream,XMLDecoder等(HTTPBody:Content-Type:application/xml)
  • json(Jackson,fastjson)http请求中包含

漏洞成因

序列化和反序列化本身并不存在问题。但当输入的反序列化的数据可被用户控制,那么攻击者即可通过构造恶意输入,让反序列化产生非预期的对象,在此过程中执行构造的任意代码。

攻击时序图

Weblogic反序列化漏洞汇总

CVE-2015-4852CommonsCollections概述:

2015年第一次出现的java反序列化漏洞,是 ApacheCommons collections组件的

借用Java反序列化和ApacheCommonsCollections这一基础类库实现远程命令执行。这个漏洞横扫WebLogic、WebSphere、JBoss、Jenkins、OpenNMS的最新版。

漏洞出现在WLSSecurity组件,允许远程攻击者执行任意命令。攻击者通过向TCP端口7001发送T3协议流量,其中包含精心构造的序列化Java对象利用此漏洞。

(T3协议在WebLogicServer和其他Java程序,包括客户端及其他WebLogicServer实例间传输数据)

漏洞分析:

ApacheCommonsCollections是一个扩展了Java标准库里的Collection结构的第三方基础库,实现了一个TransformedMap类,该类是对Java标准数据结构Map接口的一个扩展。该类可以在一个元素被加入到集合内时,自动对该元素进行特定的修饰变换,具体的变换逻辑由Transformer类定义,Transformer在TransformedMap实例化时作为参数传入。(可控变量)

weblogic和shiro的弱口令

进入后台后的getshell,部署一个war包,启动这个war包,可以在中间件的管理控制台页面进行上传

在哥斯拉里面生成一个java类型的,格式为jsp

对该文件进行压缩,压缩后后缀改为war(java中的压缩包),再进行上传,选择将此部署为应用程序

空白网页则代表解析成功,最后再进行远程连接,Tomcat相同

SQL注入原理

XSS、文件上传、sql注入间的区别:

  1. 针对的是前端、文件上传漏洞影响服务器、sql注入针对与数据库
  2. 都是属于注入类型,只是注入的数据不同,都具备用户不可控输入的特点。

sql注入的分类

  1. 按照数据类型分类
  1. 数字型
  2. 字符型
  1. 数据放置到,'',"",()
  1. 按照注入点分类----哪些地方存在sql注入
  1. GET型
  1. 注入点在URL
  1. POST型
  1. 注入点在表单输入框中,且数据提交方式是POST,如登录框、注册框
  1. COOKIE型
  1. 注入点在cookie中
  1. 其他----请求报文中只要能够被后端脚本引擎接受的数据均可sql注入
  1. X-Forwarded-For中
  2. referer中
  3. 文件类型
  4. 、、、、、、
  1. 按照数据获取的方式分类
  1. 回显注入----联合查询
  2. 报错注入----报错回显
  3. 盲注
  1. bool盲注---利用逻辑语句判断查询出的字符
  2. 时间盲注----利用页面演示情况判断数据库中的数据。

万能密码

  1. 能做啥
    系统无密码登录
  2. 登录功能
    判断输入的用户名与密码存在于某个特定的数据库表中
  3. 原理
  1. 在登陆功能中
  2. 判断登录的方式是判断从数据库中查询的结果的条目数为1
  1. 利用方式
  1. 利用注释
  1. 在用户名中添加注,选择将密码部分注释掉
  2. 如果直接注释掉密码,产生的结果不是一个条目,则需要添加limit0,1
  1. 如何获取用户名
  1. 系统常见的用户名
    admin\root\administrator
  2. 社工
    学校官网公告版上
  3. 利用注册
    如果注册过程中发现用户名存在、
  4. 利用漏洞配合
    详细的报错信息---如果用户名与密码都错误,页面输入“用户名与密码错误”,但用户名正确的时候输出密码错误
  1. 利用逻辑语句
  1. 测试思路
  1. 知道用户名
    admin' or '1
  2. 不知道用户名
    adminaaaaa' or 1 or '1' limit 0,1#
  1. 逻辑语句
  1. 分类
  1. and
  2. or
  1. 区别
    如果同时存在and与or,and优先级更高,所以优先计算and

md5不可解密,只能匹配

  1. 防御
  1. 过滤---多用于已经投入使用的网站
  2. 预编译---需要改变每一个SQL语言的执行函数,改动的代码量较少,适用于网站开发阶段

SQL注入实际操作

  1. SQL注入的危害
  1. 数据的操作,数据增删改查
  2. 绕过登录验证,万能密码
  3. 文件操作
  4. 系统命令执行
  5. 注册表操作
  1. 测试流程

  1. 流程细节
  1. 找疑似注入点---找数据输入的地方
  2. 判断注入点---找输入点中与数据库有交互的地方
  3. 确认注入存在---确认找到与数据库有交互的地方是不是存在sql注入
  4. 选择攻击目标---选择攻击后需要达到的目的
  5. 根据选择的目标构造sql语言
  6. 提交sql语言
  7. 判断网页响应是否与目标一致
  1. 后端语言对输入的sql语句有限制,考虑重构sql语句
  2. 选择的目标在当前网站不具备成功的条件,考虑重新选择目标
  1. 响应符合预期则完成注入
  1. 判断sql注入是否存在
  1. 核心
  • 构造恶意的sql语句并且提交,如果页面显示信息与预期符合一致,则sql注入存在
  1. 流程
  1. 判断注入的类型---方便数据的输入