SQL注入学习笔记

面试官一般问的问题:

sql的注入点,注入语句,用过sqlmap吗,自动化注入工具的一些参数什么意思,过滤了关键词关键字你的绕过方案,sql注入的防御措施,在所有场景下都可以生效吗

MySQL如何生成webshell:

数据库知识铺垫

mysql系统库以及怎么查询信息

SQL注入中最常见利用的系统数据库,经常利用系统数据库配合union联合查询来获取数据库相关信息,因为系统数据库中所有信息都在这个数据库里面,比如所有数据库名、所有的表名、列名以及列名的数据库类型等 这里主要关注MYSQL系统数据库information_schema,关注系统数据库的表columns和schema表以及tables表

SCHEMATA表:提供了关于数据库的信息

COLUMNS表:给出了表中的列信息

TABLES表:给出了关于数据库中的表的信息

下面接着看这三个表都有什么信息我们在SQL注入中可以用到的列。

  • 这个表里面存放的数据库信息,这个表里面最关键的就是schema_name列,这里面存放了所有数据库名称,查询这个列所有的值即可拿到所有数据库名,这里还有其他列名,如图

查询这个表schema_name的值,即查询所有数据库名

  • columns表给出了所有表中的所有列信息,但是同时也包含了数据库名,所有表名,所有列名值对应列column_name,所有数据库名值对应列table_schema,所有表名值对应table_name列,当然此表还有其他列信息,如图,但是这里暂时只关注此三个列。

同表schemata一样,查询columns表里面的table_schema列一样可以得到所有数据库名

查询当前数据库所有列

查询当前所有表名

  • tables表给出了所有表的信息,但是同时也包含了数据库名,所有表名,所有数据库名值对应列table_schema,所有表名值对应table_name列,当然此表还有其他表的信息,如图,但是这里暂时只关注此两个列

同表columns以及schemata一样,查询tables表里面的table_schema列一样可以得到所有数据库名

同columns表一样,从tables表里面的所有表名

假如你知道要注入的数据库是ctf,要查其中的表:

继续查询user表中的所有列:

mysql函数

SQL函数是在SQL注入中用的比较多的,经常利用SQL函数来判断数据库的版本,当前用户,当前用户权限以及数据库的安装路径等等,以下是常用的MYSQL函数:

  • user()用户名
  • current_user() 当前用户名
  • database() 数据库名
  • version() mysql数据库版本
  • @@datadir 数据库路径///可以用这个去猜网站路径
  • substr() 截取函数

从第一个字符截取,截取长度为1//////截取位置可以是负数,为倒叙截取

  • if() 判断语句

当第一个为真走中间,为假走第三个

  • mid()和substr()一样,但是mid三个参数都必须有,subtsr长度可以没有

  • ascii() ASCII() 函数仅关注字符串的第一个字符,并返回该字符对应的 ASCII 编码值。ASCII 码是用于表示字符的标准编码

  • concat() 连接函数
  • group_concat() 将大量的查询连接成一行,又时回显信息只允许一行

sql靶场学习

靶场部署

第一步:

sqli-labs下载:https://github.com/Audi-1/sqli-labs

phpstudy下载地址:http://down.php.cn/PhpStudy20180211.zip

第二步:

解压放在phpstudy的www下

第三步:

进入

修改user和passwd

第四步:

点击安装

学习前的准备

数据库连接工具

表分为,用户表和管理员表

如何从用户表------>管理员表

union 两表联合查询,字段一致

mysql的注释符

单行:

--空格 --+ --%20

多行:

/* */

相关推荐
冷崖2 分钟前
const 与 constexpr
c++·学习
wenjie学长9 分钟前
[UE学习笔记]—划时代意义的两大功能—lumen和Nanite
笔记·学习·ue·三维数字化
好奇龙猫10 分钟前
日语学习-日语知识点小记-构建基础-JLPT-N3阶段-二阶段(6):文法運用
学习
文火冰糖的硅基工坊14 分钟前
[人工智能-大模型-43]:模型层技术 - 强化学学习:学习的目标、收敛条件、评估依据、应用到的模型、应用场景 - 通俗易懂。
人工智能·学习
奋斗的牛马1 小时前
FPGA—ZYNQ学习Helloward(二)
单片机·嵌入式硬件·学习·fpga开发
呆呆小金人1 小时前
SQL入门:别名使用完全指南
大数据·数据库·数据仓库·sql·数据库开发·etl·etl工程师
qq_386322691 小时前
华为网路设备学习-34(BGP协议 九)BGP路由 选路规则二
服务器·学习·华为
尘似鹤2 小时前
设计一个状态机
学习·状态模式·嵌入式软件
Voyager_42 小时前
算法学习记录03——二叉树学习笔记:从两道题看透后序位置的关键作用
笔记·学习·算法
我先去打把游戏先4 小时前
ESP32学习笔记(基于IDF):ESP32连接MQTT服务器
服务器·笔记·单片机·嵌入式硬件·学习·esp32