目录
一.SQL注入之简要SQL注入
1.SQL注入安全测试中危害
2.SQL注入产生原理分析
3.学习第一个数据库MYSQL简单注入
mysql的SQL注入
常见的sql注入工具使用
二.SQL注入之MYSQL注入
1.高权限注入:
2文件读取操作:
3路径获取常见方法
4常见读取文件列表
5常见的写入文件问题:
6魔术引号及常见防护:
三、SQL注入之类型及提交注入
四、SQL注入之oracle,MangoDB等注入
五、SQL注入之查询方式及报错盲注
1.查询方式:
2.SQL注入报错盲注
六、SQL注入之二次,加解密,DNS等注入
七、SQL注入之堆叠及WAF绕过注入
八、SQL注入之SQLMAP绕过WAF
① 危害数据库中的数据,会被SQL注入影响
②危害网站的权限(有条件,满足条件才有权限)
SQL注入的前提:
①SQL语句在定义时有可控变量,并且代入数据库查询;
②变量没有进行过滤或者过滤不严谨
xxxx.php?id=1 union select xxxxx
通过参数把恶意的SQL语句传递到原有的SQL语句中来实现自定义的查询
搭建一个SQL注入学习靶场环境
sqlilabs靶场
Mysql 数据库注入
如何判断注入点
老办法:and 1=1 页面正常
and 1=2 页面错误
最舒适的方法:
id=1daffadfd 页面有影响则带入数据库,有注入点
id=1adada 页面进行跳转,如跳转到index.php,则说明有过滤,无注入点
报错猜解列名数量(字段数) order by 错误与正常值
union 联合语句
信息收集:
数据库版本: version()
数据库名字: database()
数据库用户: user()
操作系统: @@versio_compile_os
必要知识:在MySql5.0以上版本中,MySQL存在一个自带数据库名为information_schema,他是一个存储记录所有数据库名,表名,列名的数据库,也相当于可以通过查询他获取指定数据库下面的表名或列名信息
数据库中符号”.“代表下一级,如xiaodi8.user表示数据库下user表名
information_schema.tbales 记录所有表名信息的表
information_schema.columns 记录所有列名信息的表
table_name 表名
column_name 列名
table_schema数据库名
cmd5加密:www.cmd5.com
联合注入
dnslog注入
报错注入
盲注(布尔,时间)
宽字节注入
//读写文件
sqlmap,超级sql注入工具咋用的,怎么去获取数据库,读表,查数据 ,os-shell
高权限注入:root 用户,可查看整个数据库,可以实现跨库查询
load_file():读取函数
into outfile 或 into dumpfile :导出函数
报错显示,遗留文件,漏洞报错,平台配置文件,爆破(网站常见路径)等
http://127.0.0.1:8888/Less-2/?id=-1 union select1,load_file(D:\\Software\\PhpStudy\\phpstudy_pro\\WWW\\sqli-labs-master\\sql-connections\\db-creds.inc),3
魔术引号
可以通过编码和宽字节进行绕过
魔术引号:magic_quotes_gpc
当magic_quotes_gpc = On时,输入数据中含单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符,都会被加上反斜线
内置函数:int 等
自定义关键字:select
WAF防护软件:安全狗,宝塔等
低版本注入配合读取或暴力破解
简要明确参数类型
数字,字符,搜索,json等
简要明确请求方法
GET,POST,COOKIE,REQUEST,HTTP头等
其中SQL语句干扰符号‘,",&,),}等,具 体看写法
简要学习各种数据库注入点
数据库组成架构
access
表名
列名
数据
mysql mssql等
数据库名
表名
列名
数据
数据库高权限操作
access 数据库最高权限用户为Root
SQL server 数据库最高权限为Sysadmin
文件写入失败的原因:1.防护软件,2,权限问题,设置目录
Access 注入:
access无数据库名,也没有information_schema,所以表名,列名的信息基本靠暴力破解;后缀asp
遗留问题:
access,暴力破解时获取表名,列名失败怎么办
SQL server注入:
使用工具,或者网上找SQL server注入语句手动注入;后缀asp
oracle 注入:
使用工具,或者网上找oracle 注入语句手动注入;后缀为php;没有文件写入
postgresql注入:
使用工具,或者网上找postgresql注入语句手动注入;后缀为php
mongoDB注入:
使用工具,或者网上找postgresql注入语句手动注入;提交注入语句时采用集合
简要学习各种注入工具的使用指南(熟悉工具的支持库,注入模式,优缺点等)
sqlmap: 支持面广,功能更强大
NoSQLAttack : 支持mangoDB数据库
Pangolin
select:
insert:
update:
delete :
order by :
通过以上查询方式与网站应用的关系
诸如点产生的地方或应用猜测到对方SQL查询方式
根据页面的不同判断对于的sql语句来判断是否有回显;一般select 有回显,insert,update,delete等无回显,需要用到报错盲注(一般使用报错回显,效率最高)
延时注入
if
判断
sleep:延迟时间
结合:
延时注入建议使用ascii码,防止引号转义,
基于布尔的SQL盲注-逻辑判断
加密,因为代码中进行了解密,所以在注入时要进行加密
二次注入:建立在白盒测试的基础上
DNSlog注入:需要有高权限
应用场景:使用盲注之后还是不能回显
堆叠查询注入:多条sql语句一起执行
WAF绕过:绕过匹配规则,同时不干扰语句的执行
参数污染:在有多个参数的时候,选择哪一个
fuzz 模糊测试(暴力测试),本质上是一种思路,需要自己编写脚本
IP白名单:
静态资源:
url白名单:
爬虫白名单:伪造搜索引擎