首页 > 数据库 >SQL注入的本质

SQL注入的本质

时间:2022-12-07 21:35:52浏览次数:37  
标签:sqlmap -- 本质 报错 SQL 盲注 注入

注入测试的本质: 把用户输入的数据当做代码执行。

两个关键条件:

  1. 用户能够控制输入
  2. 原本程序要执行的代码,拼接用户输入数据被执行

手工测试

但很多时候,Web服务器关闭了错误回显,这时候我们该怎样实行SQL注入了呢?

判断是否存在注入

二话不说,先加单引号’、双引号”、单括号)、双括号))等看看是否报错,如果报错就可能存在​​SQL​​​注入漏洞了。还有在URL后面加and 1=1,and 1=2看页面是否显示一样,显示不一样的话,在判断是字符型还是数字型,肯定存在SQL注入漏洞了。还有就是​​Timing Attack​​​测试,也就是时间盲注。有时候通过简单的条件语句比如​​and 1=2​​是无法看出异常的。

报错查询注入利用前提:页面上没有显示位,但是需要输出SQL语句执行错误信息。

盲注的类型

SQL注入常用函数,盲注—般分为三种

基于布尔型的盲注:

left(a,b)从左截取a 的前b位:left(database(),1) > ‘s’substr(a,b,c)从b位置开始,截取字符串a的c长度ascii() 将某个字符转换为ascii值:ascii(substr(user),1,1)=101#mid(a,b,c)从位置b开始,截取a字符串的c位 regexp正则表达式的用法user()结果位root ,regexp为匹配root的正则表达式:select user()’

基于时间的盲注:

​benchmark(count,expr)​​​函数 ​​sleep(time)​​​函数前者通过将​​expr​​​语句执行​​count​​​次来到达延迟的目的,后者是直接延迟time时间​​benchmark​​​是一个内置函数,其作用是来测试一写函数的执行速度,​​benchmark()​​其中有两个参数,第一个是执行次数,另一个是要执行的函数或者表达式。

基于报错注入:

报错顾名思义,就是使语句报错。报错注入则是注入特殊的语句使报错回显中带上我们需要的信息。报错盲注也是三种盲注中效率最高的,常见的报错回显有三种函数extractvalue()、updatexml()、floor()

Sqlmap简介

下载地址:https://github.com/sqlmapproject/sqlmap

Sqlmap 是一个开源的安全测试工具,可以用来进行自动化检测,能自动化利用 SQL 注入漏洞的过程,帮助你接管数据库服务器。

基础命令:

-u 指定注入点

–dbs 跑库名

–tables 跑表名

–columns 跑字段名

–dump 枚举数据

SQL注入的本质_sqlmap

sqlmap的简单使用

sqlmap.py -u /Pass-05/index.php --forms --dbs

跑表名

sqlmap.py -u Pass-05/index.php --forms -D post_error --tables

字段名

sqlmap.py -u Pass-05/index.php --forms -D post_error -T flag --columns

出数据

sqlmap.py -u Pass-05/index.php --forms -D post_error -T flag -C flag --dump

BP和Sqlmap联动

SQL注入的本质_sql注入_02

如何预防sql注入?防止sql注入的方式有哪些?

  1. 普通用户与系统管理员用户的权限要有严格的区分。
  2. 强迫使用参数化语句
  3. 必要的情况下使用专业的漏洞扫描工具来寻找可能被进攻的点。
  4. 使用预编译

关注公众号【助安社区】安全零基础到入门都在这,社区内部红队沙龙、资源共享和大厂工作经验。真正热爱安全和喜欢技术交流的小伙伴欢迎加入我们。

SQL注入的本质_sql注入_03

标签:sqlmap,--,本质,报错,SQL,盲注,注入
From: https://blog.51cto.com/u_15892398/5920124

相关文章

  • 解析mysql存储结构---innodb_ruby工具
    innodb_ruby用途:主要可查看innodb数据库数据表的各种存储,解析innodb的文件,用于学习数据库底层的一些存储。在debian系统安装innodb_ruby1、sudoaptinstallruby-dev2、su......
  • ezsql2
    最基本的联合查询payload:-1'unionselect1,group_concat(schema_name),3frominformation_schema.schematalimit0,1--+selectgroup_concat(schema_name)from......
  • sql注入葵花宝典
    sql注入葵花宝典重要的是找到注入点四种常见的数据库注入过程大同小异先探测出数据类型很重要注入类型union注入带错误条件注入时间延迟注入报错注入外带交互的......
  • mysql explain
    explain这个命令来查看SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描等执行explain后,显示的信息有如下几列id:表示查询中执行select子句或操......
  • [BUUCTF][Web][SUCTF 2019]EasySQL 1
    这一题有点蛋疼,比较难顶看了别人的writeup也很难get到解题思路,感觉必须要拿到源码进行审计才能解大佬们猜后端是这么写的select$_POST['query']||flagfromFlag;......
  • mysql数据库导入导出
    1源数据库导出数据 这一步将导出结构和数据到一个.sql文件中2导入到空数据库中将上一步导出的.sql文件传到要服务器某路径下,比如/data/sqldata/devself.sql然后在......
  • ezsql
    直接post*没用也没过滤应该是有||也符合功能要求查询语句应该为select[post]||[未知]fromFlag;或者:1;setsql_mode=pipes_as_concat;select1将||管......
  • 绿色版MySQL8.0.26安装流程
    下载 5.7 8.0 官网 https://dev.mysql.com/downloads/mysql/ 国内镜像网站 https://developer.aliyun.com/mirror/ ​ windows安装数据库 安装版: .......
  • 5分钟,使用yum方式完成mysql安装
    跟着老万,教你5分钟使用yum方式安装mysql。最近打算写一些关于mysql的系列文章,作为第一篇,来教大家如何快速的使用yum命令在线安装mysql。安装的linux环境是7.5,mysql安装的5.7......
  • Mysql和ES数据同步方案汇总
    文章目录​​前言​​​​一、Mysql和ES各自的特点​​​​为什么选用Mysql​​​​为什么选用ES​​​​二、数据同步方案​​​​1.同步双写​​​​2.异步双写(MQ方式)​......