BUUCTF--web(1)

news2025/1/17 21:32:28

1、[极客大挑战 2019]Http1

1.http报文请求:

1、请求行:

        第一部分是请求方法,常见包括GET、POST、OPTIONS(我目前还没有见过我是菜鸡)

        第二部分是url

        第三部分是HTTP协议(http(Hypertext transfer protocol)超文本传输协议,通过浏览器和服务器进行数据交互,进行超文本(文本、图片、视频等)传输的规定。也就是说,http协议规定了超文本传输所要遵守的规则。)
2、请求头

1、Host:接受请求的服务器地址,可以是IP:端口号,也可以是域名

2、User-Agent:发送请求的应用程序名称

3、Accept: 表示客户端可以接受的内容类型,多个值使用;分号隔开q=0.9 表示权重优先级,*/*表示可以接受任意类型内容

4、Accept-Language:通知服务器可以发送的语言

5、Accept-Encoding:通知服务端可以发送的数据压缩格式

6、Content-Type:表单提交时才有可能出现,表示表单的数据类型,使用url编码,url编码 % 16位数

7、Upgrade-Insecure-Requests:告诉服务器,浏览器可以处理https协议

8、请求头结束后有一个空行,与请求体进行分隔
3、请求体

2.解题:

GET没有请求体,POST有请求体

打开题目首先查看源代码,发现了一个secret.php,

打开看一下,发现有限制(考察http报文请求)

因此考虑抓包后改包上传,在请求头中加入Rferer:

显示使用“Syclover”浏览器,把User-Agent中的Firefox/125.0改成Syclover

显示只能用本地查看,添加X-Forwarded-For: 127.0.0.1后放包,得到flag

2、[极客大挑战 2019]Knife1

打开题目发现一个一句话木马,考虑蚁剑链接找flag

连接成功,找到flag

3、[ACTF2020 新生赛]BackupFile1

打开题目发现提示只有查看源码,但是根据题目提示BackupFile备份文件,考虑尝试找到备份文件。

常见的备份文件后缀名有 .git .svn .swp .~ .bak .bash_history

尝试后发现此题输入index.php.bak是找到文件。

is_numeric() 函数用于检测变量是否为数字或数字字符串。

语法

bool is_numeric ( mixed $var )

参数说明:

  • $var:要检测的变量。

返回值

如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回 1,即 TRUE。

intval() 函数可以获取变量的「整数值」。常用于强制类型转换。

语法

int intval( $var, $base )

参数

    $var:需要转换成 integer 的「变量」
    $base:转换所使用的「进制」

返回值

返回值为 integer 类型,可能是 0 或 1 或 其他integer 值。

    0:失败 或 空array 返回 0
    1:非空array 返回 1
    其他integer值:成功时 返回 $var 的 integer 值。

返回值的「最大值」取决于系统

    32 位系统(-2147483648 到 2147483647)
    64 位系统(-9223372036854775808到9223372036854775807)

题目要求传入参数key,key的值只能是数并和key的值进行比较,这里涉及php弱比较

php的弱比较:

  • === 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
  • == 在进行比较的时候,会先将字符串类型转化成相同,再比较

因此构造payload:key=123

4、[RoarCTF 2019]Easy Calc1

打开题目发现一个输入框,想到了sql注入,用1'测试注入时发现框内仅可识别数字,查看源码

在url中发现一个传输数据的calc.php文件,尝试打开

这里需要空格绕过waf,PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:

1.删除空白符

2.将某些字符转换为下划线(包括空格)

因此可以将上传num前加一个“ ”,这样waf就找不到num这个变量了,因为现在的变量叫“ num”,而不是“num”。但php在解析的时候,会先把空格给去掉,这样代码还能正常运行,还上传了非法字符。于是参考[RoarCTF 2019]Easy Calc 构造payload:

calc.php? num=2;var_dump(scandir(chr(47)))

扫根目录下的所有文件,也就是scandir("/"),因为/被过滤就改为chr(47)

scandir() 函数用于获取指定目录中的文件和文件夹列表。它接受一个路径作为参数,并返回一个包含指定目录中所有文件和文件夹的数组。scandir(".") 表示获取当前目录下的文件列表。
var_dump() 函数将该列表输出到页面上。

chr(47)是“/”的ASCII编码。

找到一个"f1agg",猜想与flag有关,尝试查看其内容

calc.php?num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法;
chr(47)是/的ASCII编码;
chr(102)是f的ASCII编码;
chr(49)是1的ASCII编码;
chr(97)是a的ASCII编码;
chr(103)是g的ASCII编码。

5、[极客大挑战 2019]BuyFlag1

打开题目在菜单中找到与buyflag相关的提示

提示说只有cuit的学生可以购买,同时还需要正确的密码。尝试查看源码找跟多的信息。

发现有is_numeric() 函数,判断其中的参数是数字还是其他,如果是数字则判断为真,否则为假

同时还存在一个php弱类型比较,如果$password==404则可以绕过。用password==404aaa绕过,因为题目还有身份验证,考虑抓包

cookie的值看起来值得思考,尝试修改后看有什么变化

发现现在身份验证和密码都是对的,可以开始支付了题目中说:Flag need your 100000000 money,尝试上传money,显示上传数字过长,想到了可以用科学计数法绕过,e表示10,e后面的数字表示次方,100000000表示为1e8,尝试输入money=1e8后提示money不够。尝试1e9

6、[BJDCTF2020]Easy MD5 1

打开题目只有一个输入框,查看源码发现没有信息后尝试抓包,在输入框任意输入后尝试转包发现hint

“select * from 'admin' where password=md5($pass,true)”,sql会将传入的$pass在进行md5哈希后 在‘admin’表中匹配是否有与其相等的值。其中利用散列函数md5加密了password因为传参进行了md5加密,所以普通输入的SQL语句:or 1 ;这是不会被解析执行的。所以得想一个当输入进去的值能被md5加密解析成 or 语句,查看资料发现万能密码ffifdyop

ffifdyop:

ffifdyop经过md5加密后为:276f722736c95d99e921722cf9ed621c

再转换为字符串:'or’6<乱码> 即 'or’66�]��!r,��b

select * from 'admin' where password=md5($pass,true)

在php中md5中的第二个参数不填默认是no,也可以填入yes

当第二个参数为no时返回的是一个十六进制字符串

当第二个参数为yes时返回的是二进制字符串(也就是16字符串转ascii码字符串)

绕过原理是:
ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是 ' or '6
而 Mysql 刚好又会把 hex 转成 ascii 解释,因此拼接之后的形式是 select * from 'admin' where password='' or '6xxxxx',等价于 or 一个永真式,因此相当于万能密码,可以绕过md5()函数

输入ffifdyop后,跳转到新页面,查看源码发现一个弱比较

方法一:0e绕过

PHP在处理字符串时会出现缺陷,可能将一些向科学计数法的字符串误判为科学记数法,导致其使用科学计数法的计算方式。因此md5加密后的哈希值第一位为0,第二位为e,后面不论是什么都认为和0相等,一下几个字符串经过md5函数后开头都为0e

QNKCDZO

240610708

s878926199a

s155964671a

s214587387a

s214587387a

构造payload:?a=QNKCDZO&b=240610708

方法二:数组绕过

无论是PHP弱比较还是强比较,md5()函数无法处理数组,如果传入的是数组,会返回NULL,两个数组经过加密后返回值均为NULL,形成相等。

构造payload:?a[]=1&b[]=2

之后得到此页面,包含MD5强碰撞,要求与之前一样,需要两个参数的值不同但MD5转换后相同。强碰撞只能用数组绕过。

构造payload: param1[]=1&param2[]=2

ffifdyop原理:https://www.cnblogs.com/redfish404/articles/17878453.html

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

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

相关文章

CMakeLists.txt中如何添加编译选项?

1. 引子 编译器有多种可供选择&#xff0c;如g、c、clang等&#xff0c;如下以c作为示例。 2. 使用CMAKE_CXX_FLAGS添加编译选项 在Makefile中可能用类似如下的指令来添加编译选项&#xff1a; /usr/bin/c -Wall -Wextra -Wno-sign-compare -Wno-unused-variable -Wno-unuse…

网络基础(day3)

【 理论重点】 网络是什么&#xff1f; &#xff08;网络是载体&#xff0c;目的是传输互联网中的数据&#xff0c;数据是终端产生<手机、电脑、服务器等>。&#xff09; 如何组件网络&#xff08;良性网络架构&#xff09;&#xff1f;有网络架构思维&#xff0c;得按层…

C 函数递归

目录 什么是递归 递归的限制条件 递归的例子 1、用递归求n的阶乘 递归扩展学习 1、青蛙跳台阶 思路 代码实现 2、汉诺塔问题​ 思路 代码实现 总结 什么是递归 递归&#xff1a;“递推” “回归” 在C语言中&#xff0c;函数递归就是&#xff1a;函数自己调用自…

【docker】安装openjdk

查看可用的 openjdk版本 docker hub 查看地址&#xff1a;https://hub.docker.com/_/openjdk 此图片已被正式弃用&#xff0c;建议所有用户尽快找到并使用合适的替代品。其他官方形象替代品的一些例子&#xff08;按字母顺序列出&#xff0c;没有有意或暗示的偏好&#xff09;…

Python语言在地球科学交叉领域中的应用

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;Python能够运行在Linux、Windows、Macintosh、AIX操作系统上及不同平台&#xff08;x86和arm&#xff09;&#xff0c;Python简洁的语法和对动态输入的支持&#xff0c;再加上解释性语言的本质&…

羊大师分析,羊奶相伴五一畅享自然时光

羊大师分析&#xff0c;羊奶相伴五一畅享自然时光 羊奶相伴&#xff0c;五一畅享自然时光&#xff0c;这是一句富有诗意和生活气息的语句。羊奶&#xff0c;作为一种营养丰富、易于消化的饮品&#xff0c;不仅为人们提供了优质的蛋白质、矿物质和维生素&#xff0c;还因其独特…

vue echarts 柱状图 堆叠柱状图

echarts堆叠柱状图&#xff08;效果图在文章末尾&#xff09; 1、默认只显示 月度的 数据&#xff0c;手动点击 legend 季度的 数据才会显示&#xff1b; 2、监听左侧菜单栏的宽度变化&#xff0c;图表宽度自适应展示 <template><div><div id"barChart&q…

01数学建模 -线性规划

1.1线性规划–介绍 翻译翻译什么叫惊喜 1.2线性规划–原理 拉格朗日乘数法手算 最值化 f ( x , y ) , s . t . g ( x , y ) c , 引入参数 λ &#xff0c;有&#xff1a; F ( x , y , λ ) f ( x , y ) λ ( g ( x , y ) − c ) 再将其分别对 x , y , λ 求导&#xff0c…

MySQL第一次作业

解压完安装包 以管理员进入命令行 初始化并记住初始随机密码 创建服务名称 启动mysql 使用随机密码登录 修改密码 退出并重登服务器 MySQL创建数据库和表 创建数据库 创建表 1.进入数据库 创建表 向表中插入数据

服务器数据恢复—ESXi无法识别数据存储和VMFS文件系统如何恢复数据?

服务器数据恢复环境&#xff1a; 一台某品牌服务器&#xff0c;通过FreeNAS来做iSCSI&#xff0c;然后使用两台同品牌服务器做ESXi虚拟化系统。 FreeNAS层为UFS2文件系统&#xff0c;使用整个存储建一个稀疏模式的文件&#xff0c;挂载到ESXi虚拟化系统。ESXi虚拟化系统中有3台…

吴恩达2022机器学习专项课程(一)7.2 逻辑回归的简化成本函数课后实验 Lab5

问题预览/关键词 二分类问题的训练集&#xff08;多特征&#xff09;绘制训练集数据的散点图自定义plot_data() Python实现逻辑回归的成本函数自定义sigmoid() 调用成本函数不同的w&#xff0c;b&#xff0c;绘制逻辑回归模型的决策边界验证哪条决策边界效果好总结 二分类问题的…

【科学研究】农村出身:一种复杂的情感结构

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

前后缀分离,CF1209 C. Maximal Intersection

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1029C - Codeforces 二、解题报告 1、思路分析 线段相交具有可…

【网络安全】HTTP协议 — 特点

专栏文章索引&#xff1a;网络安全 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 学习目标​ 一、请求与响应 1.服务器和客户端 二、不保存状态 1.不保存状态的协议 三、资源定位 1.URI&#xff08;统一资源标识符&#xff09; 四、请求方法 1.请求方法 五…

LangChain4j

文章目录 关于 LangChain4j特性2 levels of abstractionLibrary StructureTutorials (User Guide)Integrations and Models免责声明 Highlights定义由LLM提供支持的声明性 AI Services&#xff1a;使用 LLM 分类从非结构数据中提取结构化信息 Getting started兼容性 支持的 LLM…

[NSSCTF]prize_p5

前言 之前就学过反序列化的字符串逃逸 但是没怎么做题 补一下窟窿 题目 <?phperror_reporting(0);class catalogue{public $class;public $data;public function __construct(){$this->class "error";$this->data "hacker";}public functi…

Midjourney之利用tile进行图像拼粘,壁纸和纹理生成无缝拼图

hello 小伙伴们&#xff0c;我是你们的老朋友——树下&#xff0c;今天分享Midjourney提示词常用参数——tile&#xff0c;这个参数的主要作用是用来生成平铺图案&#xff0c;话不多说&#xff0c;直接开始~ 如果你想要各种图案的壁纸或者需要一些图案参考去制作织物&#xff…

FSRCNN:加速超分辨率卷积神经网络,SRCNN的加速版

paper&#xff1a;https://arxiv.org/pdf/1608.00367 code: https://github.com/yjn870/FSRCNN-pytorch/tree/master 目录 1. 动机 2. 方法 3. 代码对比 4. 实验结果 1. 动机 作者此前提出的SRCNN证明了CNN在图像超分领域的有效性。然而&#xff0c;SRCNN计算效率较低&#…

235 基于matlab的时频盲源分离(TFBSS)算法

基于matlab的时频盲源分离&#xff08;TFBSS&#xff09;算法&#xff0c;TFBSS用空间频率分布来分离非平稳信号&#xff0c;可以分离具有不同时频分布的源信号&#xff0c;也能够分离具有相同谱密度但时频分布不同的高斯源。同时&#xff0c;该算法在时频域上局域化源信号能量…

Bytebase 2.16.0 - 支持 Oracle 和 SQL Server DML 变更的事前备份

&#x1f680; 新功能 支持 Oracle 和 SQL Server DML 变更的事前备份。 支持在 SQL 编辑器中显示存储过程和函数。 支持兼容 TDSQL 的 MySQL 和 PostgreSQL 版本。 支持把数据库密码存储在 AWS Secrets Manager 和 GCP Secret Manager。 支持通过 IAM 连接到 Google Clou…