最新要闻
- 团购低人一等?男子理发耳朵被剪掉一块肉:店方求网友高抬贵手
- 2025年前后!嫦娥六号将为人类取回月球背面第一批月壤
- 联想启天M540c/M450c商用机对比评测:酷睿版配置/性能完胜
- 卡梅隆:在家看《阿凡达2》要有大电视 别在手机上看
- 当前短讯!对比飞天茅台 花8万块测市面多款白酒:结果不出所料
- 【新视野】没人买!机械硬盘出货量惨遭腰斩 稳定性/性价比都输SSD
- 世界观速讯丨深度根植!苹果永远都不能完全离开中国制造
- 今日热闻!男子疑因抽烟错过高铁跪地求开门:科普正确补救方法
- 三星Galaxy S23系列美版定价泄露:Ultra版卖8000多元 向苹果看齐
- 【新视野】联想Tab P11 5G安卓平板将在国内上市:骁龙750G处理器
- 观速讯丨曾言获10万订单:零跑C01变相降价2.5万
- 【全球新要闻】韩国电动车基金不重仓特斯拉了!基金经理感叹:坑太多
- 头条焦点:RTX 4090 16针电源线又烧了!加强版“躺平”也不行
- 今亮点!低脂高蛋白 鲨鱼菲特鸡胸肉:5袋到手14.9元
- 当前热点-安卓碎片化一地鸡毛:发布5个月后 仅5.2%用户升级Android 13
- 天天关注:大红灯笼挂满街头认不出红绿灯?官方回应:已调整 交通违法误判可撤销
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
通讯!DVWA靶场实战(八)——SQL Injection(Blind)
DVWA靶场实战(八)
八、SQL Injection(Blind):
1.漏洞原理:
SQL Injection(Blind)全称为SQL注入之盲注,其实与正常的SQL大同小异,区别在于一般的注入攻击者可以直接从页面上获取执行结果,而盲注时攻击者通常是无法从显示页面上获取执行的结果,甚至可能连注入的语句是否执行都无从得知,所以盲注的难度会比一般注入高一些。目前网络上现存的SQL注入漏洞大多是SQL盲注。
(资料图)
2.漏洞分类:
(1)布尔盲注:顾名思义就是基于布尔运算特性的盲注,布尔盲注语句需要在涉及判断的功能才能使用,其中最常见的就是在查询条件的位置,分别拼接上一段结果为真和结果为假的判断语句,如果结果为真时显示效果与原来一致,结果为假时查询不到数据或与原来数据不一直,则认为存在布尔盲注。
(2)时间盲注:同样也就是基于时间运算特性的盲注,时间盲注主要是对没有涉及判断的功能,如插入、更新等语句的数据为止(而非条件语句的位置),或者布尔盲注没有结果的类型(如显示均为正常或均为异常),可以尝试使用延迟注入进行测试,如果插入时间型盲注语句后服务器延迟响应,则可以认为存在SQL注入漏洞。
3.漏洞危害:
(1)绕过登录验证:在登录页面使用万能密码登录网站后台页面。
(2)获取敏感数据:通过SQL注入获取网站管理员账号密码、用户信息等。
(3)文件系统操作:利用SQL注入实现列目录,读取或者写入文件等。
(4)注册表执行操作:利用SQL注入读取、写入、删除注册表等。
(5)执行系统命令:通过SQL注入可以远程执行命令。
4.实操:
(1)Low:
代码分析:
0); } catch(Exception $e) { $exists = false; } } ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); break; case SQLITE: global $sqlite_db_connection; $query = "SELECT first_name, last_name FROM users WHERE user_id = "$id";"; try { $results = $sqlite_db_connection->query($query); $row = $results->fetchArray(); $exists = $row !== false; } catch(Exception $e) { $exists = false; } break; } if ($exists) { // Feedback for end user $html .= "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 $html .= "User ID is MISSING from the database."; }}?>
我们这里可以看到基本上没有任何过滤、检查,明显存在SQL注入漏洞,同时SQL语句查询返回结果只有两种,“exists”或者“missing”两种状态,所以这里是盲注。
这里我们开始攻击,首先要判断出是数字型还是字符型。我们这里输入“1”和“1’”。在尝试后,我们可以看到这里明显是数字型,因为输入“1”它显示的是用户ID在库里面。
然后我们接下来尝试“1’and1=1#”和“2’and1=2#”,发现“1’and1=1#”显示存在,“1’and1=2#”显示不存在,由此判断这里是有注入点的。
我们开始尝试注入,首先猜数据库的长度,利用“1" and length(database())=10 #”这种类似的语句进行长度的范围猜解。结果如下:
输入语句 | 结果 |
1"and length(database())>10# | MISSING |
1"and length(database())<10# | exists |
1"and length(database())<5# | exists |
1"and length(database())<4# | MISSING |
1"and length(database())=4# | exists |
这里的意思就是数据库名称的长度为4,所以我们接下来就可以开始猜测数据库的名称。
接下来我们用ascii码来判断信息,大略的情况如下:
字符 | ASCII(十进制) |
a | 97 |
A | 65 |
0 | 48 |
_ | 95 |
z | 122 |
Z | 90 |
9 | 57 |
@ | 64 |
然后分别输入如下语句;
输入语句 | 反馈结果 | 说明 |
1"and ascii(substr(database(),1,1))>97# | Exits | 库名第一个字母ASCII码比a大 |
1"and ascii(substr(database(),1,1))<122# | Exits | 库名第一个字母ASCII码比z小 |
1"and ascii(substr(database(),1,1))<104# | Exits | 库名第一个字母ASCII码比h小 |
1"and ascii(substr(database(),1,1))<101# | Exits | 库名第一个字母ASCII码比f小 |
1"and ascii(substr(database(),1,1))>100# | MISSING | 库名第一个字母ASCII码不比d小 |
1"and ascii(substr(database(),1,1))=100# | Exits | 库名第一个字母是d |
以此类推推算出为库名为“dvwa”,同样的方法我们就可以依次推到得出答案。(答案同上一个SQL注入)
(2)Medium:
代码分析:
0); // The "@" character suppresses errors } catch(Exception $e) { $exists = false; } } break; case SQLITE: global $sqlite_db_connection; $query = "SELECT first_name, last_name FROM users WHERE user_id = $id;"; try { $results = $sqlite_db_connection->query($query); $row = $results->fetchArray(); $exists = $row !== false; } catch(Exception $e) { $exists = false; } break; } if ($exists) { // Feedback for end user $html .= "User ID exists in the database."; } else { // Feedback for end user $html .= "User ID is MISSING from the database."; }}?>
流程和上一个SQL差不多,不过多赘述了,基本上就是Low的步骤然后在BP中截包修改,然后放到repeater中发送。
(3)High:
代码分析:
0); // The "@" character suppresses errors } catch(Exception $e) { $exists = false; } } ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); break; case SQLITE: global $sqlite_db_connection; $query = "SELECT first_name, last_name FROM users WHERE user_id = "$id" LIMIT 1;"; try { $results = $sqlite_db_connection->query($query); $row = $results->fetchArray(); $exists = $row !== false; } catch(Exception $e) { $exists = false; } break; } if ($exists) { // Feedback for end user $html .= "User ID exists in the database."; } else { // Might sleep a random amount if( rand( 0, 5 ) == 3 ) { sleep( rand( 2, 4 ) ); } // User wasn"t found, so the page wasn"t! header( $_SERVER[ "SERVER_PROTOCOL" ] . " 404 Not Found" ); // Feedback for end user $html .= "User ID is MISSING from the database."; }}?>
可以看到,High级别的代码利用cookie传递参数id,当SQL查询结果为空时,会执行函数sleep(seconds),目的是为了扰乱基于时间的盲注。同时在SQL查询语句中添加了LIMIT1,希望以此控制只输出一个结果。
虽然添加了LIMIT1,但是我们可以通过#将其注释掉。但由于服务器端执行sleep函数,会使得基于时间盲注的准确性受到影响,这里用上面两种方法任意一种即可进行爆破。这里就不再一一说明步骤了。
(4)Impossible:
代码分析:
prepare( "SELECT first_name, last_name FROM users WHERE user_id = (:id) LIMIT 1;" ); $data->bindParam( ":id", $id, PDO::PARAM_INT ); $data->execute(); $exists = $data->rowCount(); break; case SQLITE: global $sqlite_db_connection; $stmt = $sqlite_db_connection->prepare("SELECT COUNT(first_name) AS numrows FROM users WHERE user_id = :id LIMIT 1;" ); $stmt->bindValue(":id",$id,SQLITE3_INTEGER); $result = $stmt->execute(); $result->finalize(); if ($result !== false) { // There is no way to get the number of rows returned // This checks the number of columns (not rows) just // as a precaution, but it won"t stop someone dumping // multiple rows and viewing them one at a time. $num_columns = $result->numColumns(); if ($num_columns == 1) { $row = $result->fetchArray(); $numrows = $row[ "numrows" ]; $exists = ($numrows == 1); } } break; } } // Get results if ($exists) { // Feedback for end user $html .= "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 $html .= "User ID is MISSING from the database."; }}// Generate Anti-CSRF tokengenerateSessionToken();?>
作为防御模板,有以下几个需要注意的。impossible.php代码采用了PDO技术,划清了代码与数据的界限,有效防御SQL注入只有当返回的查询结果数量为一个记录时,才会成功输出,这样就有效预防了暴库利用is_numeric($id)函数来判断输入的id是否是数字or数字字符串,满足条件才知晓query查询语句Anti-CSRF token机制的加入了进一步提高了安全性,session_token是随机生成的动态值,每次向服务器请求,客户端都会携带最新从服务端已下发的session_token值向服务器请求作匹配验证,相互匹配才会验证通过。
-
通讯!DVWA靶场实战(八)——SQL Injection(Blind)
DVWA靶场实战(八)八、SQLInjection(Blind):1.漏洞原理:SQLInjection(Blind)全称为SQL注入之盲注,...
来源: 通讯!DVWA靶场实战(八)——SQL Injection(Blind)
团购低人一等?男子理发耳朵被剪掉一块肉:店方求网友高抬贵手
2025年前后!嫦娥六号将为人类取回月球背面第一批月壤
联想启天M540c/M450c商用机对比评测:酷睿版配置/性能完胜
卡梅隆:在家看《阿凡达2》要有大电视 别在手机上看
当前短讯!对比飞天茅台 花8万块测市面多款白酒:结果不出所料
【新视野】没人买!机械硬盘出货量惨遭腰斩 稳定性/性价比都输SSD
世界观速讯丨深度根植!苹果永远都不能完全离开中国制造
今日热闻!男子疑因抽烟错过高铁跪地求开门:科普正确补救方法
三星Galaxy S23系列美版定价泄露:Ultra版卖8000多元 向苹果看齐
【新视野】联想Tab P11 5G安卓平板将在国内上市:骁龙750G处理器
观速讯丨曾言获10万订单:零跑C01变相降价2.5万
【全球新要闻】韩国电动车基金不重仓特斯拉了!基金经理感叹:坑太多
【全球速看料】dubbo实战篇:dubbo超时设置
头条焦点:RTX 4090 16针电源线又烧了!加强版“躺平”也不行
今亮点!低脂高蛋白 鲨鱼菲特鸡胸肉:5袋到手14.9元
当前热点-安卓碎片化一地鸡毛:发布5个月后 仅5.2%用户升级Android 13
天天关注:大红灯笼挂满街头认不出红绿灯?官方回应:已调整 交通违法误判可撤销
每日讯息!男子网购耐克鞋收到两只左脚 商家拒绝提供售后
当前滚动:树状数组笔记整理
今日快看!排队5小时、日营业额过万!春节前美甲生意火了
比新车还香!极氪推出官方二手车:三电终身质保
【独家焦点】或将对标《原神》!《王者荣耀·世界》即将发布新实机演示
环球微速讯:学习笔记——@RequestMapping注解位置、注解属性;@RequestMapping支持Ant风格的路径
每日短讯:吃完饭车没了 男子怀疑被偷报警:结果忘拉手刹车溜进沟
我国第二款国产ECMO获批上市!航天火箭技术转化:完全自主知识产权
微头条丨定了!2023高考全国统考时间公布:6月7日开考
世界看热讯:曾两次感染新冠!辉瑞CEO:正研发可保护一年的新冠疫苗
环球焦点!SpaceX星际飞船超级重型助推器本周测试:33部猛禽发动机同时点火
天天观速讯丨【网关开发】5.Openresty 自定义负载均衡与流量转发
观点:100w人在线的 弹幕 系统,是怎么架构的?
焦点热议:年轻人的第一台影像旗舰!卢伟冰:Redmi Note 12 Pro系列绝对可以
天天观速讯丨东北大哥8小时狂炫40斤砂糖橘 网友提醒:当心变黄
全球报道:《魔兽世界》国服即将停运!最后一周超7千帐号开挂被封
世界看热讯:近千亿国产半导体公司卓胜微净利润暴降超50%:大家确实不爱换手机!你换没
全球速读:呆萌!66只考拉七代同堂齐送新春祝福
全球播报:非对称加解密算法SM2
世界简讯:从合并石子学区间DP
环球快播:Golang的基本数据类型-基本使用
不是安卓!鸿蒙系统成大学教材 “鸿蒙之父”王成录参与 培养开发者
焦点热议:美国科技史上最大规模裁员开启:亚马逊、微软“毕业”均超万人
全球快播:25年历史的笔记本内存将被淘汰 新标准单条可达128GB 频率更快
环球最新:24年前经典重现!《轩辕剑叁:云和山的彼端》将推出Switch版本
世界微动态丨三亚已成全国最堵城市:国人扎堆去海南 能堵到你哭泣
焦点精选!零下30度 东北司机穿10斤棉裤冒雪下乡送年货:网友为劳动者正能量点赞
焦点播报:大年初一上映!《流浪地球2》要做中国科幻片天花板 特效拉满
学习笔记——SpringMVC简介;SpringMVC处理请求原理简图;SpringMVC搭建框架
全球今日报丨曾致苹果华人工程师身亡!FSD造假实锤:特斯拉技术大牛证实
短讯!强推Win11:微软即将停售Win10数字许可
观天下!Win系统下实现任意exe静态免杀
全球速看:iPhone 14 Pro Max屏幕抽风出现死亡横线:iOS 16.3终于修复了
当前资讯!质量堪忧 退换货激增!AMD旗舰显卡RX7900 XTX游戏实测近3.5GHz 你买吗?
当前视点!还有5天关服 魔兽世界怀旧服免费玩 网易高管:出问题就找暴雪
低配版《黑神话:悟空》即将发售!新实机预告公布
“搭桥”运工具 波士顿动力机器人展示新技能:网友却不认账
佛诞是哪个国家的节日?佛诞日是农历的哪一天?
如来佛拈花一笑是什么意思?如来佛拈花一笑的故事
五常指的是哪五常?五常是什么时候建立的?
卫生衣是什么东西?卫生衣是什么季节穿的?
学习笔记——Spring声明式事务管理属性(隔离级别、事务超时、事务只读、事务回滚);Spring5新特性、新注解&整合log4j2;Spring5整合Juni
AIRIOT答疑第6期|如何使用二次开发引擎?
村的由来是什么?中国省市县区等级划分
思科路由器怎么进入设置界面?思科路由器配置命令大全
宝岛眼镜是哪里的品牌?宝岛眼镜怎么样?
开心消消乐什么时候上线的?开心消消乐怎么求助好友过关?
电脑重装系统后没有声音是怎么回事?电脑重装系统后没有声音怎么办?
b站在线人数在哪里看?b站在线人数怎么关闭?
国产芯的iPhone 14 Pro!乐视手机S1 Pro现货发售:仅899元
【当前热闻】嚣张!飞度女应急车道超车未果打砸后车被刑拘 受害车主回应
观速讯丨专为游戏优化!AYANEO OS掌机操作系统官宣2023年上线
国产科幻巨制!《流浪地球2》终极预告发布:大年初一上映
焦点要闻:红灯藏在成片红灯笼里引司机吐槽:差点6分没了
【天天播资讯】店主卖自制香肠遭男子10倍索赔 被法院驳回:网友大赞判决
世界视点!55天徒步跨越1600公里!沙特一观众获国际足联最佳球迷奖提名
【世界新视野】坐等分钱!全球205位富豪呼吁征收财富税:现在就向我们征税
全球首款独显掌机!AYANEO官宣NEXT 2将搭载锐龙7000系处理器
东芝高管放言:SSD硬盘永远无法取代机械硬盘
全球新资讯:Array 数组
读编程与类型系统笔记11_高级类型及其他
游戏对PC性能需求走向失控:16G内存已成最低要求
【世界时快讯】8900元!TP-Link最新Wi-Fi7路由器BE900上架 网速达24Gbps
观焦点:售价曝光!RTX 4060 Ti一塌糊涂 NV各种秀刀法:你会买?
新资讯:中金公司10大预测错9个:称电动车高景气 结果宁德时代年度最惨
世界速看:穷疯了?13岁儿女起诉父亲还压岁钱1.68万 官方回应压岁钱是个人私有财产
天天快报!“丑”出圈!蓝兔子邮票身价暴增 溢价幅度接近300%
过年租车7天起 日租价上涨近7倍:还定不到现车
【世界独家】西藏林芝一隧道出口雪崩 8人遇难:失联者家属称丈夫计划回家过年
全球要闻:近8年最大规模!微软正式宣布将裁员1万人
百事通!《阿凡达2》全球票房破19.28亿美元:成全球影史第六
观速讯丨CSS3选择器总结(表格)
年味十足!苹果发布iPhone兔年限定壁纸:苹果Logo变兔头
热门:“三体 脱水”登顶热搜 于和伟游戏刚上线游戏就下线
焦点速讯:“巨型屎山”QQ终于要史诗级重写!但是腾讯被骂惨了
口碑爆棚!冒险游戏改编剧《最后生还者》豆瓣开分9.2分
全球热推荐:AMD被大大看好:抢走Intel 30%市场!
【天天新视野】SpringBoot Wiki项目部署记录
环球微速讯:学习笔记——Spring声明式事务管理;Spring中支持事务管理;使用声明式事务管理;Spring声明式事务管理属性
世界热门:C. Equal Frequencies
全球播报:雷军:小米13用了昂贵的高硅负极电池才把容量做到4500mAh
世界简讯:Qt项目-翻金币游戏