当前位置: 首页 > news >正文

sql注入前期准备(相关函数和原理)

一、SQL注入原理

SQL注入是一种常见的网络攻击技术,攻击者通过在正常的SQL语句中插入恶意的参数,从而控制数据库执行非法操作。以下是一个简单的示例:

正常SQL语句:
select * from news_users where username='admin' and password='123456';
恶意构造的SQL语句:
select * from news_users where username='' or 1=1 -- and password='12';

在上述恶意构造的语句中,'-- '后的内容被注释,导致密码验证部分失效,从而实现万能密码登录。

二、SQL常用语句

  1. 查看服务器数据库
show databases;
  1. 查看数据库表名
show tables;
  1. 查看数据库内容
select * from table_name;
  1. 查看数据库字段
desc table_name;

三、特殊运算符

  1. in(x,y,z):在xyz中
  2. not in(x,y,z):不在xyz中

四、字符串函数

  1. 统计字符串长度
select length('qwe王'); -- 结果:6(中文长度为3)
  1. 截取字符
select substr('hello世界',6,2); -- 结果:世界
  1. 左/右截取
select left('hello世界',5); -- 结果:hello
select right('hello世界',2); -- 结果:世界
  1. 字符连接
select concat('hello',' ','world!'); -- 结果:hello world!
  1. 同字段所有数据拼接
select group_concat(username) from pikachu.member;
-- 结果:vince,allen,kobe,grady,kevin,lucy,lili
  1. 将字符串第一个字符转换成ascii码
select ascii(substr('12as王',1,1)); -- 结果:49
  1. 十进制转换十六进制
select hex(ord(substr('12as王',1,1))); -- 结果:31

五、数据库信息函数

  1. 返回当前数据库版本
select version();
  1. 查看当前工作数据库
use pikachu;
select database(); -- 结果:pikachu
  1. 查看当前使用用户
select user();
  1. 查看数据库存储路径
select @@datadir;

六、高级函数

  1. IF函数
select IF(1>2,1,2); -- 结果:2
  1. 休眠函数
select sleep(5);
  1. 随机数函数
select rand();
  1. 读取服务器中的文件
select load_file('C:/phpStudy/hello.txt');

注意:使用load_file函数需要配置文件secure_file_priv=''

七、元数据库(information_schema)

mysql 5.0增加

tables 表:table_schema存放数据库名        table_name存放表名

columns表:table_schema存放数据库名        table_name存放表名        conlumn_name存放字段

使用例子:

use information_schema;//查找拥有的库
select distinct table_schema from tables;//查找拥有库中的表
select table_name from tables where table_schema='pikachu';//查找表中拥有的字段
select column_name from columns where table_schema='pikachu' and table_name='users';查询结果重复字段过多可使用:distinct进行过滤

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用sqlalchemy查询mysql的JSON字段
  • 【体外诊断】ARM/X86+FPGA嵌入式计算机在免疫分析设备中的应用
  • 探索Perl的图形用户界面开发:工具、技巧与实践
  • 最新全新UI异次元荔枝V4.4自动发卡系统源码
  • Python 实现PDF和TIFF图像之间的相互转换
  • SpringBoot整合Elastic-Job 2.1.53版本任务调度,手动任务,动态添加任务演示
  • py3.7.4离线安装openpyxl等错误,无法安装openpyxl...
  • yolo5图片视频、摄像头推理demo
  • Unity UGUI 之 ScrollBar与ScrollView
  • HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号2
  • 生成式人工智能之路,从马尔可夫链到生成对抗网络
  • 探索LLM世界:新手小白的学习路线图
  • 密码学
  • 可能造成z-index小的元素显示在z-index大的元素上方的原因
  • 无法连接到internet怎么办?已连接但无internet访问,其实并不难
  • hexo+github搭建个人博客
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【RocksDB】TransactionDB源码分析
  • 2018一半小结一波
  • Babel配置的不完全指南
  • Brief introduction of how to 'Call, Apply and Bind'
  • CSS中外联样式表代表的含义
  • JAVA 学习IO流
  • JavaScript设计模式系列一:工厂模式
  • Java基本数据类型之Number
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • MySQL主从复制读写分离及奇怪的问题
  • October CMS - 快速入门 9 Images And Galleries
  • PaddlePaddle-GitHub的正确打开姿势
  • spark本地环境的搭建到运行第一个spark程序
  • spring boot 整合mybatis 无法输出sql的问题
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • Vue--数据传输
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 对JS继承的一点思考
  • 对超线程几个不同角度的解释
  • 配置 PM2 实现代码自动发布
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 详解移动APP与web APP的区别
  • 找一份好的前端工作,起点很重要
  • 走向全栈之MongoDB的使用
  • 【干货分享】dos命令大全
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​ubuntu下安装kvm虚拟机
  • ​虚拟化系列介绍(十)
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #14vue3生成表单并跳转到外部地址的方式
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #预处理和函数的对比以及条件编译
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (SpringBoot)第七章:SpringBoot日志文件
  • (第27天)Oracle 数据泵转换分区表