【web安全】SQL注入笔记

SQL注入在渗透测试过程中的作用:

1、绕过登录验证

使用万能密码登录网站后台

2、获取敏感数据

获取网站管理员账号密码

3、文件系统操作

列目录,读取,写入文件

4、注册表操作

读取写入删除注册表

5、执行系统命令

远程执行命令

SQL注入过程:

客户端:参数值被修改-->服务端:未经检查和过滤即将被修改的数据注入到SQL命令中,SQL命令功能被修改-->数据库引擎:执行被修改后的SQL命令-->服务端:将注入的结果返回给客户端-->客户端:根据上一次注入获取到的敏感信息构造注入预计进行进一步注入

哪些地方存在注入漏洞:

参数名:ID=36 pass=‘aaa’

参数值:36

cookie、目录名、文件名等,最普遍的注入漏洞由于参数值过滤不严导致的。cookie注入漏洞普遍存在于ASP的程序中

如何去寻找注入漏洞

1、使用工具--优点:自动化、范围广、效率高 缺点:漏报、误报、测试方法有限。啊D注入、webcruiser、acunetix、netsparker等工具

2、手工测试--优点:测试方法灵活 缺点:效率低,范围窄,因测试者技术水平而异。

判断注入漏洞的依据

构造测试语句-->提交请求-->分析返回结果-->符合预期结果(不符合预期结果则返回构造测试语句)-->存在SQL注入漏洞(不符合预期结果则不存在SQL注入漏洞)

SQL注入的分类:

数据类型:数字形(ID=36);字符形(ID=aaa)

返回结果:显错注入(输入单引号返回错误);盲注(输入单引号没有返回信息)

内联SQL注入:注入一段SQL语句后,原来的语句仍然会全部执行

注入的语句-->执行原来的SQL语句+注入的SQL语句

数字的内联SQL注入如下

测试字符串 变种 预期结果

‘ 触发错误,如果成功,数据库将返回一个错误

value+0 value-0 如果成功,将返回与原请求相同的结果

value*1 value/1 如果成功,将返回与原请求相同的结果

1 or 1=1 1)or(1=1 永真条件。如果成功,将返回表中所有的行

value or 1=2 value)or(1=2 空条件,如果成功,则返回与原请求相同的结果

1 and 1=2 1)and(1=2 永假条件,如果成功则不返回表中任何的行

其他测试语句:

数字型:and 1=1/and 1=2;or 1=1/or 1=2;+、-、*、/、=;1 like 1/1 like2;.......

字符型:and '1'='1/and '1'='2.........

终止式SQL注入:攻击者注入一段包含注释符的SQL语句,将原来的语句的一部分注释,注释掉的部分不会被执行

mysql:--;#;/* */

什么是万能密码:万能密码漏洞一般式出现在后台登录,利用网站登陆处未添加目录或过滤不严的一种入侵网站的方式。实际上似乎是SQL注入

1、ASP网页后台登录可以用密码1'or'1'='1登录成功。原理是把1'or'1'='1带入即“如果密码=1或者1=1那么登录成功”由于1=1恒成立,且“密码=1”与“1=1”是逻辑或的关系,那么整句为TURE,则登录成功。Select user_id,user_tupe,email from users where user_id='admin'and password='1'or'1'='1'

XOR异或:or进行的是或运算,and进行的是与运算,异或XOR则是不等的,则是真,即比较的两个值不相同的就对,相同的就错。

1’xor ‘1’=‘1

手工注入access数据库

首先,在以[.asp?id=32(数字任意)结尾的链接依次添加语句【'】、【and 1=11】和【and 1=2】来判断网站是否存在注入点。

然后,添加语句【and exists(select*from admin)】根据页面返回结果来猜解表名。

再次。添加语句【and exists(select admin from admin)】,来猜解admin表中的列名admin。

最后,添加语句【and(select top 1 len (admin) from admin)>1】,来猜解字段长度;添加【and(select top 1 asc(mid(admin,1,1))from admin)>97】,来猜解字段中字符的ASCII码。

通过以上四个步骤,反复猜解,即可得到数据库存储的用户名和密码。

手工联合查询注入技术

首先,在链接后面添加语句【order by 11(数字任意)], 根据页面返回结果,来判断站点中的字段数目。然后,在链接后面添加语句【union select 1,2,3,4,5,6,7,8,9,10,11 from admin(表名)】进行联合查询,来暴露可查询的字段编号。

最后,根据上一步得到的字段编号(如果标题出现2,内容出现3,那么说明管理员用户和密码出现在字段2,3),添加语句[union select 1, admin, password, 4,5,6,7,8,9,10,11 from admin], 直接暴露管理员用户名和密码。

本篇文章的编号是 :31,在公众号聊天窗口输入编号直达本文

输入m获取文章目录

官方微信群请输入:二维码 获取二维码扫码进入,失效请联系公众号人工客服

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180712A0HFW300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券