暴力破解SQL注入
Posted Lora青蛙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了暴力破解SQL注入相关的知识,希望对你有一定的参考价值。
如何查找网站后台
查找网站后台入口
1、手工找默认后台(开源类程序)
admin/、admin/login.asp、manage、login.asp…
2、字典扫描
Web目录字典扫描方法,类似于暴力破解
代表软件:wwwscan,御剑后台扫描,DirBuster
3、目录爬行
网络爬虫,编写脚本,自动遍历Web目录,不依赖于字典,主要依靠爬行算法的效率。
代表软件:appscan,Awvs
4、google hack
如何防御查找后台
防查找网站后台入口
1、编写 robots.txt
robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。在这个文件中网站管理者可以声明该网站中不想被搜索引擎访问的部分,或者指定搜索引擎只收录指定的内容。 Disallow: /admin/ Disallow: /db/
2、robots Meta标签
robots Meta标签用来告诉搜索引擎robots如何抓取该页的内容。把下面html代码放到管理后台,可以防检索 < META name=robots content=noindex,nofollow >。 robots Meta标签很多搜索引擎是不支持的, 所以尽可能的使用robots.txt文件来限制抓取。
3、修改后台路径,修改文件名
找不到登录页就谈不到暴力破解,注意路径文件名和配件文件一致。
如何获取用户名和密码
1、弱口令
admin admin admin 123456 admin admin888 admin admin123
2、暴力破解
暴力破解是对目标进行穷举猜测,常常辅以字典来缩小密码组合的范围。
拖库:网站遭到入侵后,黑客窃取其数据库。
撞库:黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登陆其他网站后,得到一系列可以登录的用户。
如何防暴力破解?
页面数字验证码 图片验证码 拖动操作 手机验证码 限制密码输入次数
SQL注入
定义: SQL是是进行数据库操作的标准语言
由于程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
盲注:不会根据你sql注入的攻击语句返回你想要知道的错误信息。布尔盲注(返回Ture跟Fales)
原因分析:其本质是对于输入检查不充分,将用户提交的数据当作代码来执行。
要数据库执行提交的查询代码要建立通信渠道。
SQL注入过程
手工SQL注入过程
1 . 查找注入点
http://www.***.com/shop/index.asp
由于它只是对页面的简单请求无需对数据库动进行动态请求,所以它不存在SQL Injection
http://www.***.com/shop/productshopxp.asp?id=485
在URL中传递变量id,并且提供值为485,由于它是对数据库进行动态查询的请求(其中? id=485表示数据库查询变量),所以我们可以在URL中嵌入恶意SQL语句
(为了测试我们自己构造的sql语句是否被查询)
判断能否进行SQL注入 ,1=1,1=2测试法
http://www.***. /shop/productshopxp.asp?id=485
http:***/shop/productshopxp.asp?id=485 and 1=1
http:***/shop/productshopxp.asp?id=485 and 1=2
select * from 表名 where id=485 and 【查询条件】
可以注入的表现:
1 正常显示(这是必然的,不然就是程序有错误了)
2 正常显示,内容基本与 1 相同
3 提示 提示找不到记录、或显示内容为空(程序加了on error resume next)
不可以注入:
1 同样正常显示, 2 和 3 一般都会有程序定义的错误提示,或提示类型转换时出错。
2 .判断admin表是否存在
and exists (select count( * ) from 你要猜的表名)
注入点后加上这句话,如果返回正常,猜的表是存在的
http: * * * / shop / productshopxp.asp? id=485 **and exists ( select count ( * ) from admin) **
3.判断字段 admin password 是否存在
and (select count(列名) from 猜到的表名) 在注入点后加上这句话,如果返回正常,猜的列是存在的
http:*** /shop/productshopxp.asp?id=485 * * and exists (select count(password) from admin**)
4.检测密码的长度
http:***/shop/productshopxp.asp?id=485 and (select top 1 len(password) from admin)>15 正常
http:***/shop/productshopxp.asp?id=485 and (select top 1 len(password) from admin)>16 错误 top 1表示这个列的第一行内容
5.查询密码的每一位数的ASCII码
http:***/shop/productshopxp.asp?id=485 and (select top 1 asc(mid(password,1,1)) from admin)>54 正常
http:***/shop/productshopxp.asp?id=485 and (select top 1 asc(mid(password,1,1)) from admin)>55 错误
55对应7 Password: 7a57a5a743894a0e (admin)
mid(s,i,1)取字符串s中第i个字符开始取1个 asc()得到这个字符的ascII码
SQLmap: 检测与利用SQL注入漏洞的免费开源工具
sqlmap基于Python,先安装Python
将sqlmap解压到Python根目录下
sqlmap.py –h 查看版本
-u : 指定目标URL
–current-db : 获取当前数据库
-D : 指定数据库
-T : 要枚举的DBMS数据表
-C: 要枚举的DBMS数据表中的列
–dump : 转储DBMS数据表项
SQL注入分类
(以字符类型方式)
数字型 在mysql语句中数字型不需要单引号或者双引号闭合。
字符型 在MySQL语句中,如果字符是字 符串格式需要单引号,在注入中也需要考虑单引号的闭合和注释问题。
(以注入方式)
回显 将构造的SQL语句的直接执行, 将结果回显或者以报错的形式显示出来。
盲注 开发时关闭错误显示,且注入内容不能在页面展示出来。
如何防御SQL注入
1.避免数据变成代码被执行
被执行的恶意代码是通过数据库的SQL解释引擎编译得到的, 所以要避免用户输入的数据被数据库系统编译。
现在的数据库系统都提供SQL语句的预编译(prepare)和 查询参数绑定功能。
执行阶段只是把输入串作为数据处理,而不再对sql语句进行 解析,因此避免了sql注入问题.
2.敏感字符过滤
and | select | update | chr | delete | %20from | ; | insert | mid | master. | set | =
3. JSP页面判断代码
使用javascript在客户端进行不安全字符屏蔽,检查是否含 有”‘”,”\\”,”/”
4.使用正则表达式过滤
SQLmap: 检测与利用SQL注入漏洞的免费开源工具
扫描sql注入漏洞,不是扫描后台
设置验证码是防止暴力破解用户名密码,不能帮助隐藏后台
以上是关于暴力破解SQL注入的主要内容,如果未能解决你的问题,请参考以下文章