首页 > 数据库 >【web安全】小白帽学习之旅之-----SQL注入理论基础

【web安全】小白帽学习之旅之-----SQL注入理论基础

时间:2024-10-27 16:20:56浏览次数:8  
标签:web http xxx uname ----- SQL id 注入

1.SQL注入产生原因

2.SQL注入的本质

把用户的输入当成了代码来执行

3.SQL注入存在的前提

1)用户可以自定义输入内容

2)用户输入的内容会被带到数据库执行

 4.SQL注入的危害

1)盗取网站的敏感信息(构造SQL语句查询数据库)

2)万能密码(登陆后台)

'or '1' = '1'#

3)读写服务器系统上文件

4)借助SQL注入提权(涉及到提升权限部分,之后会详细展开讲解)

 5.SQL注入的分类

1)根据注入位置:GET型、POST型、Head头注入(cookie、UA、xff、referer)

2)根据返回的结果:有回显、无回显

3)根据数据类型:数字型(整型)、字符型(多为字符串)

 6.SQL注入的攻击流程

1)寻找注入点:一般为搜索框,登陆注册,输入框,凡是与数据库有交互的地方都可能存在

2)判断闭合:

以GET型注入为例,一般都是这种

http://xxx.xxx?id=1

先试探添加and 1=1 和and 1=2

http://xxx.xxx?id=1 and 1=1
http://xxx.xxx?id=1 and 1=2

and1=1正确,and1=2错误 ------------>判断为数字型

and1=1和and 1=2返回一致-------------->判断为字符型

解释一下为什么?

select uname from user where id = 1 and 1=1

select uname from user where id = 1 and 1=2
select uname from user where id = '1 and 1=1'
select uname from user where id = '1 and 1=2'

上述也能看出来,如果是数字型的话,1=1或1=2会单独成为一个逻辑判断的条件,所以后者会爆粗,但是字符型是相当于拼接成了字符串,并没有参与逻辑运算,只不过查询了id为1 and 1=1和id为1 and 1=2的值罢了。

如果是字符型,就开始寻找它查询语句的闭合方式

常见的字符型SQL语句查询有(后边会更新常见SQL语法)

SELECT id FROM Student WHERE name='white hat wolf'
SELECT id FROM Student WHERE name="white hat wolf"
SELECT id FROM Student WHERE name=(white hat wolf)
SELECT id FROM Student WHERE name=('white hat wolf')

 可以尝试在后边添加单引号、双引号、括号、组合拳(指多个一起)干扰闭合嗅探出是何种闭合

http://xxx.xxx?id=1'
http://xxx.xxx?id=1"
http://xxx.xxx?id=1)
http://xxx.xxx?id=1')

 哪种报错后再尝试添加注释符(Mysql常用--或#,SQL server常用--)

比如添加单引号报错了

http://xxx.xxx?id=1'--

然后加上--又不报错了,证实了是单引号闭合

这里解释一下为什么?

正常的SQL语句是这样

SELECT uname FROM user WHERE id='1'

加入单引号干扰闭合,会报错

SELECT uname FROM user WHERE id='1''

 加入注释符,注释掉后边原来的单引号就可以了

SELECT uname FROM user WHERE id='1'--'

 这样我们就判断出网站是否存在sql注入了,相信聪明的你一定能看懂,但是不要去未经授权测试网站哦,下节我将带着大家一起通关sql-labs的靶场,去感受实际的sql注入过程

标签:web,http,xxx,uname,-----,SQL,id,注入
From: https://blog.csdn.net/ofwolves/article/details/143257141

相关文章

  • pymysql模块(操作mysql数据库)
    1.连接importpymysql#创建连接conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",password="123456",db="test")#创建游标cursor=conn.cursor()#执行SQL,并返回收影响行数effect_row=cursor.execute("select*......
  • SQL sever 索引实验
    1.用sql语言创建数据库DB_test,代码参考https://blog.csdn.net/m0_75112455/article/details/143257034?spm=1001.2014.3001.5502创建成功2.进行数据的导入(1)下载TPC-H文件(2)将tbl文件导入到数据库useDB_test;GOdroptablePART;CREATETABLEPART(P_PARTKEYintp......
  • MySQL入门到实战详细教程
    MySQL介绍MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,属于Oracle旗下产品,它广泛应用于各种Web应用程序和网站,MySQL使用结构化查询语言(SQL)进行数据的管理和操作。MySQL主要特点开源免费:MySQL是一个开源项目,可以自由下载和使用。跨平台支持:MySQL可以在多......
  • A 2-D LiDAR-SLAM Algorithm for Indoor Similar Environment With Deep Visual Loop
      具有深度视觉闭环的室内类似环境的二维LiDAR-SLAM算法A2-DLiDAR-SLAMAlgorithmforIndoorSimilarEnvironmentWithDeepVisualLoopClosure摘要:同步定位与建图(SLAM)是实现机器人智能的关键技术。与摄像头相比,在室内环境下使用光探测和测距(LiDAR)可以实现更高......
  • DRF-Authention组件源码分析及扩展
    drf认证组件1、认证组件源码执行流程在该图中,我把与认证组件无关的代码都删除了,只留下了认证的代码,方便解析。每行注释的开头数字即代表了执行顺序注意事项:第5步中的self.authenticators获取流程:首先,明确self代表的是request对象。则self.authenticators相当于去request......
  • 2024-2025-1 20241407《计算机基础与程序设计》第五周学习总结
    这个作业属于哪个课程2024-2025-1计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第五周作业这个作业的目标学习Pep/9虚拟机,机器语言与汇编语言,算法与伪代码,测试:黑盒,白盒作业正文https://www.cnblogs.com/wangyihan604505/p/18508312......
  • Prometheus源码专题精讲——监控系统 Prometheus 2.x/3.x 源码阅读和分析_配置文件的
    配置文件的加载与刷新——config/config.gohttps://github.com/prometheus/prometheus/blob/v2.55.0/config/config.goPrometheus配置文件的加载过程主要可以分为以下两步:1、初始化时加载2、运行时重新加载一、初始化时加载1.1、启动时加载1.2、配置初始化二、运行时加载......
  • windows安装MySQL8.4.3LTS
    windows安装MySQL8.4.3LTS第一步:下载压缩文件https://dev.mysql.com/downloads/mysql/第二步:解压压缩包以及编写配置my.ini配置[mysqld]#skip_grant_tables#设置3306端口port=3306#设置mysql的安装目录basedir=D:\\Software\\mysql-8.4.3-winx64#设置mysql数据库......
  • 2024-2025-1 20241312 《计算机基础与程序设计》第五周学习总结
    |这个作业属于哪个课程|<班级的链接>(2024-2025-1-计算机基础与程序设计)||这个作业要求在哪里|<作业要求的链接>(2024-2025-1计算机基础与程序设计第五周作业||这个作业的目标|Pep/9虚拟机机器语言与汇编语言算法与伪代码测试:黑盒,白盒||作业正文|https://www.cnblogs.com/son......