【新手入门】SQL注入漏洞-初入门

web漏洞-工作流程说明

常规渗透测试流程

打点(打站)流程

SQL注入原理

        SQL注入攻击漏洞的原因,是由于程序员在编写Web程序时,没有对客户端(比如浏览器等)提交的参数进行严格的过滤和判断。用户可以修改参数或数据,并传递至服务器端,导致服务端拼接了伪造的SQL查询语句,服务端连接数据库,并将伪造的sql语句发送给数据库服务端执行,数据库将sql语句的执行结果,返回给了服务端,服务端又将结果返回给了客户端,从而获取到敏感信息,甚至执行危险的代码或系统命令。

简单来说:注入产生的原因是服务端接受客户端相关参数未经处理直接带入数据库查询操作

如何查找注入点位置

        前端页面上所有提交数据的地方,不管是登录、注册、留言板、评论区、分页等等地方,只要是提交数据给后台,后台拿着该数据和数据库交互了,那么这个地方就可能存在注入点。
        不管我们在客户端提交的数据,在http请求数据包的什么位置,只要后台取出这个数据和数据库打交道,都可能存在注入点。

HTTP请求消息格式

请求行 请求头 空行 请求数据

URL编码

处理值里的特殊符号,以防混淆。

url编码是一种浏览器用来打包表单输入的格式.

注释符号说明

sql语句的注释符号:#和--空格
1、#和﹣-(有个空格)表示注释,可以使它们后面的语句不被执行。

        (在ur1中,如果是get请求(记住是get请求),也就是我们在浏览器中输入的url,解释执行的时候,url中#号是用来指导浏览器动作的,对服务器端无用。所以,HTTP请求中不包括#,因此使用#闭合无法注释,会报错;而使用﹣-(有个空格),在传输过程中空格会被忽略,同样导致无法注释)

        1.在get请求传参注入时才会使用--的方式来闭合。因为会被解释成空格。也可用--%20,把空格转换为urlencode编码格式,也不会报错。同理把#变成%23,也不报错。
        2.如果是post请求,则可以直接使用#来进行闭合。

简答测试语句:

引号测试

加了引号如果报错,证明存在注入点。
单引号闭合数据:用单引号测试会报错,双引号测试查不到数据,不报错

Squery="select id,email from member where username='vince ' "


双引号闭合数据:用双引号测试会报错,单引号测试查不到数据,不报错

Squery='select id,email from member where username="vince" '

xx' or 1=1       一个条件为真,即为真,真的效果就是查询到表中所有数据
xx' and 1=2    一个条件为假,即为假
xx' and 1=1    两个条件为真才为真
union select   联合查询

注意

get请求URL部分里不能出现#与空格;post请求可以。

#可用--+或--%20替代(--空格);空格可用+或%20替代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值