SQL 注入基础
SQL注入
SQL注入是服务器端未严格校验客户端发送的数据,而导致服务端SQL语句被恶意修改并成功执行的行为。
本质:把用户输入的数据当作代码执行。任何和数据库产生交互的地方便有可能存在注入.
SQL注入类型
数据传输: GET POST COOKIE
数据类型: 整型 字符型
注入模式: 联合查询 报错 布尔盲注 时间盲注 推查询
SQL注入的一般步骤
- 判断是否有注入
- 可控参数的改变是否影响页面的结果。
- 输入的SQL语句是否能报错.---->通过数据库报错,看到数据库的语句痕迹。
- 输入的SQL语句能否不报错.---->语句能够成功闭合。
- 判断注入类型
- 语句是否能够被恶意修改
- 是否能够执行
- 获取我们想要的数据
SQL注入的基础知识
数据库结构
数据库---->表---->字段---->值
SQL5.0版本之后MySQL默认在数据库中存放一个“information_schema”的数据库,在该库中有三个重要的表名schemata,tables,columns。
schemata表存储该用户创建的所有数据库的库名,字段名为schema_name。
tables表存储该用户创建的所有数据库的库名和表名,数据库库名和表名字段分别为table_schema,table_name。
columns表存储所有的库名,表名,字段名,它们的字段名分别为table_schema,table_name,column_name。
查询语句
select 要查询的字段名 from 库名.表名
select 要查询的字段名 from 库名.表名 where 已知条件的字段名 = '已知条件的值'
select 要查询的字段名 from 库名.表名 where 已知的条件字段名1 = '已知条件的值1' and 已知条件2的字段名 = '已知条件2的值'
limit用法
limit m,n
m表示记录开始的位置,从0开始表示第一条记录;n指取n条记录。
重要的函数
database() 当前网站使用的数据库。
version() 当前的MySQL版本。
user() 当前MySQL的用户。
@@datadir 数据库路径。
@@version_compile_os 操作系统版本
concat(str1,str2,...) 没有分隔符地连接字符串
concat_ws(separator,str1,str2,...) 含有分隔符地连接字符串
group_concat(str1,str2,...) 连接一个组的所有字符串,并以逗号分隔每一条数据
注释符
常见的注释表达方式为:# --空格 /**/
在url中表示为: %23 --+
Union注入攻击
order by和union select
通过order by 数字查询该数据表的字段,当数据库不报错时就查出了数据库的字段数量;在数据库中查询参数ID对应的内容,然后将数据库的内容输出到页面上union select 1,2,3(数字个数为数据库的字段数量),数字可以替换为字段名,通过union select 查询出数据库的内容。
SQL 注入基础的更多相关文章
- Sql注入基础原理介绍
说明:文章所有内容均截选自实验楼教程[Sql注入基础原理介绍]~ 实验原理 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击, ...
- 通过sqli-labs学习sql注入——基础挑战之less1-3
首先,先看一些基础知识吧!!!!本人只是初学者,记录一下自己的学习过程,有什么错误之处请指出,谢谢!大佬请绕过!!!! url编码:一般的url编码其实就是那个字符的ASCII值得十六进制,再在前面加 ...
- 通过sqli-labs学习sql注入——基础挑战之less1
环境准备: Phpstudy (PHP+Apache+Mysql) Sql-lab 首先了解下基础知识: URL编码: 因为在浏览器中,当我们访问一个网址的时候,浏览器会自动将用户输入的网址进行UR ...
- Sqli-labs之sql注入基础知识
(1)注入的分类 基于从服务器接收到的响应 ▲基于错误的SQL注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL盲注 •基于布尔SQL盲注 •基于时间的SQL盲注 •基于报错的SQL盲注 基于如何处理输 ...
- sql注入--基础
什么是sql注入: 利用SQL语句 在外部 对数据库进行 查询,更新等 动作 sql注入的原理: 输入值可控且带入数据库执行(前提) 接受的变量传值未进行过滤(实质) sql注入的目的: 获取数据(网 ...
- Sql注入基础一
凡是带入数据库查询的都有可能是注入. 整个数据包 Sql注入原理? 网站数据传输中,接受变量传递的值未进行过滤,导致直接带入数据库查询执行的操作问题. Sql注入对于渗透的作用? 获取数据(网 ...
- SQL注入基础入门
一般的WEB架构 SQL注入成因: 用户开启浏览器并连接http://www.xxx.com.位于逻辑层的Web服务器从文件系统中加载脚本将其传递给脚本引擎,脚本引擎负责解析并执行脚本. 脚本使用数据 ...
- SQL注入基础
注入点的判断: 首先判断该注入点是怎么闭合的,常用的是','),')),",再利用and 1=2,and 1=1判断闭合是否正确 sql注入常用语句: 普通语句:schema_name——数 ...
- sql注入基础知识
信息安全概论课堂作业 SQL注入之万能密码漏洞 第一道题是牵扯到了万能密码漏洞 用户名先输入个’ 返回了sql报错语句,猜测存在sql注入漏洞 使用万能密码测试 登陆成功 原理 假设登录框处的判断代码 ...
随机推荐
- rm命令弱爆了!
大家好,我是良许. 创建.删除和修改文件是用户在 Linux 系统中执行的非常常见操作.大家都知道,在 Linux 系统里使用 rm 命令删除单个文件时,几乎一瞬间就完成了.但是如果文件数量很大,那么 ...
- jvm的垃圾回收
首先类加载的过程:加载验证准备解析初始化 类加载器: jvm内存模型图: 空着,等以后补上 jvm垃圾收集器 目前只知道,parnew,cms,g1 parnew新生代垃圾回收器,复制算法 cms复制 ...
- layui的入门使用
1.如果使用单独的layui插件的话需要先引入jquery的插件,官方建议1.8+的版本. 2.引入后就能根据规则正常使用了.
- Python之99乘法表代码
#coding=utf-8 #左下三角格式输出九九乘法表 for i in range(1,10): for j in range(1,i+1): print " ...
- 解决 IDEA 2021.2.3 新建maven项目只有两个archetype项目模板的问题
最近把我的 IDEA 版本更新到 2021.2.3 了,发生了一个比较有意思的问题,做个小小的记录 思路分析 在新的 IDEA 中配置完Maven之后,想要创建Maven项目的时候没有自动加载arch ...
- CF1474E What Is It?
考虑我们一定是每次构造最长的交换对. 那么就是\((1,n),(1,n - 1),...(1,\frac{n}{2} + 1)(\frac{n}{2},n)....(1,n)\)形式.
- Atcoder Beginner Contest 164 E Two Currencies(拆点+最短路)
题目链接 题意:有 \(n\) 个城市,它们由 \(m\) 条双向道路连接,保证它们能够彼此到达.第 \(i\) 条道路连接 \(u_i,v_i\),需要花费 \(x_i\) 个银币,耗费 \(t_i ...
- nmap相关
nmap -sT IP-sT(全链接扫描),获取目标IP+PORT的状态,其实是发了三个包:SYN,SYN/ACK,ACK,类似于TCP三次握手 状态: open 开放的 closed 关闭的 fil ...
- 【百奥云GS专栏】全基因组选择之工具篇
目录 1. 免费开源包/库 1.1 R包 1.2 Python库 2. 成熟软件 3. WEB/GUI工具 前面我们已经介绍了基因组选择的各类模型,今天主要来了解一下做GS有哪些可用的软件和工具.基因 ...
- eggNOG 5.0数据库介绍
目录 1. eggNOG简介 2. eggNOG-Mapper注释原理 3. eggNOG 5.0数据资源 4. eggNOG-Mapper使用 5. NOG.KOG.COG.KEGG.GO区别? 1 ...