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获取文章目录
官方微信群请输入:二维码 获取二维码扫码进入,失效请联系公众号人工客服
领取专属 10元无门槛券
私享最新 技术干货