BUUCTF刷题记录[warmup&easysql&Havefun]

warmup【buuctf-pwn】 阅读详情

这是我第一次在csdn上写文章,后面我将在这上面分享一些我个人的一些偏技术性的文章,本人web菜狗一枚还请大佬指教,最近在鼓捣我的博客网站,等备案好了还请捧个场

[HCTF 2018] warmup

image-20211208132225582

打开一看,是一张图片,但是不知道为什么我没有加载出来,去网上搜了一下,这里其实就一张滑稽的图片,没啥用

按下Ctrl U查看源码发现存在一个source.php

image-20211208132417625

打开一看是一道代码审计的题

<?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"]; //白名单表
            if (! isset($page) || !is_string($page)) {   //判断是否变量存在且为字符串
                echo "you can't see it";
                return false;
            }

            if (in_array($page, $whitelist)) {    //判断变量是否在白名单里面有匹配的值
                return true;
            }

            $_page = mb_substr(                  //问号?截取检测,若有变量中有问号就会截取问号前的字符串值然后赋给$_page,没有则将page的值全部赋给_page变量
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {  //再一次进行白名单检测,判断$_page是否在白名单中存在
                return true;
            }

            $_page = urldecode($page);          //对$page进行URL解码
            $_page = mb_substr(                 //再一次进行问号截取赋值
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {  //再一次判断$_page是否在白名单中
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }

    if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>

其中: mb_substr(): 作用类似于substr()字符串截取的功能,只不过这个函数好像可以对中文字符串进行截取

语法:mb_substr(string , start , length ,encodinig)
    string:将要截取的字符串
    start:截取开始的位数,若为负数则从后往前数开始截取,若为0则是从第一位开始截取
    length:可选。所要截取的长度,默认是截取的字符串末尾,若为负数则从字符串末端返回
    encoding:可选。字符编码。如果省略,则使用内部字符编码

​ mb_strpos(): 作用类似于strpos(),即返回变量在某一字符串中最开始出现的位数

语法:strpos(string,find,start)
    string:	必需。规定被搜索的字符串。
    find:   必需。规定要查找的字符。
    start:	可选。规定开始搜索的位置。

所以可以得出下面这串代码的作用

$_page = mb_substr(                 
                $page,
                0,
                mb_strpos($page . '?', '?')
            );

即对page变量进行从第0位到第mb_strpos( p a g e . ′ ? ′ , ′ ? ′ ) 位 进 行 截 取 , 而 m b s t r p o s ( page . '?', '?')位进行截取,而mb_strpos( page.′?′,′?′)位进行截取,而mbs​trpos(page . ‘?’, ‘?’)的作用则是给变量结尾拼接一个’?’,然后再进行判断第一次出现问号的位数,很明显如果字符串中如果没有问号则返回该字符串原本的长度,截取出来的 p a g e 也 就 是 p a g e 本 身 , 若 如 果 _page也就是page本身,若如果 p​age也就是page本身,若如果page中本身就存在问号,那就则会返回问号前的字符串

通过这个理解我们就能利用问号进行截断,使得对include进行任意文件包含

这里还存在一个url二次解码的问题,但是我试了一下,就算他进行二次解码也不影响

image-20211208135140012

我们通过访问hint.php知道了flag的位置在image-20211208135238864

所以直接开始构造payload:

POST: file=hint.php?../../../../../ffffllllaaaagggg //因为我们不知道flag的具体路径,所以只能通过../这个切换相对路径的方法一层一层得进行目录穿越,最终拿到flag

image-20211208135424768

[极客大挑战2019] EasySql

首先进行burp抓包发现是一个get型的传参

image-20211208135843771

然后尝试单引号拼接,发现存在注入点

image-20211208140136583

后面尝试使用order by进行列数判断,发现image-20211208140226663

我把空格都替换成/**/,发现又能正常回显了,说明是过滤了空格

接着将空格全部替换掉之后进行爆列数,发现它居然直接就把flag爆出来了,不知道这是不是题的问题还是出题人故意这么设置的

image-20211208140544394

payload:

?username=-1'/**/union/**/select/**/1,2,3%23

[极客大挑战 2019]Havefun

打开一看是一张很可爱的猫咪图片,查看源码可以发现

image-20211208161805346

$cat=$_GET['cat'];
        echo $cat;
        if($cat=='dog'){
            echo 'Syc{cat_cat_cat_cat}';
        }

如果传入一个GET参数,且变量cat的值等于’dog’,就能输出flag,只能说with hands is ok

image-20211208161927188

buuctf web warmup详细题解 题目:warmup 题目来源:buuctf 分析过程: 1. 首先ctrl + u 查看源代码,我们发现有一个source.php文件 2. 我们打开source.php文件,是一段代码,这道题要我们代码审计。 3. 与source文件相似的hint.php文件我们也打开看一下,它说flag在ffffllllaaaagggg中。 正在上传… 4. 然后回来source.php看这段代码,通过上网查询关于php的函数的用法。然后审计代码得出,... 阅读详情

相关推荐

BUUCTF web WarmUp

BUUCTF web WarmUp 一天一道CTF题目,能多不能少 打开页面,一个滑稽,查看源码,得到source.php,输入得到源码: <?php highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { ...

A_dmin的博客 1万+

BUUCTF web题目 之WarmUp

BUUCTF web题目之WarmUp

m0_54993799的博客 2513

ptrade量化策略之沪深300指数增强

本策略的核心是在沪深300股票池中选股,选择的股票都是市值比较大,业绩比较好的白马股,根据市场相对位置以及基本面因子来选择股票

qq_29301281的博客 1191

关于buu warmup的深入理解

关于buu warmup的深入理解 打开页面,一个滑稽,查看源码,得到source.php,输入得到源码: <?php //首先测试一下in_array()函数的绕过方法 //$str=["heel","zzy"]; //var_dump(in_array("heel?f",$str)); highlight_file(__FILE__); class emmm { public static function checkFile(&$page)

qq_51425032的博客 575

从光耦隔离到稳定驱动:信捷伺服与STM32的硬件设计陷阱与救赎

本文深入探讨了信捷伺服驱动器与STM32微控制器配合时的硬件设计关键问题,包括光耦隔离电路选型、电源电压选择、拨码开关设置等核心环节。针对伺服驱动器的稳定驱动需求,提供了从电路设计到抗干扰策略的完整解决方案,帮助工程师规避常见陷阱,提升工业控制系统的可靠性。

gold8的专栏 312

【密码专栏】超强进阶:PLONK VS Groth16(上)

前言 前文《天冷了,干了这碗“零知识证明”鸡汤》对「零知识证明学习」作了一个形象化的比喻:炖鸡汤。那么本系列的主要内容可以简单概括为《论高压锅炖鸡汤的一百种方法》之方法二。在学会了“清炖鸡汤”之后,不如来一口“阿胶鸡汤”补补脑细胞吧! 正如鸡汤不同风味之间各具千秋,不同的zk-SNARK方案也各有所长。zk-SNARK方案可以被分为【通用】与【非通用】zk-SNARK,PLONK与Groth16分别是其中的典型代表。通过本系列,我们将对PLONK算法内容作简要介绍,并指出PLONK和Groth16算法思路上

Hyperchain的博客 1805

BUUCTF web之WarmUp 源代码详解

前言前言访问除了一张滑稽图,就没其他的了查看源码,有一个注释了的 source.php,可以尝试直接访问一下。同时进行目录扫描访问source.php,里面包含php代码,题目说了是php代码审计,那就先从这里进行分析提取其中的php代码代码分析1. 代码整体结构分析前面两个条件很好满足,只需要 source.php?file=字符串 ,即可。所以重点需要让checkeFile函数返回true,则会进行文件包含2. chechkFile()函数分析。

渗透之路,攻防之间皆学问 2844

七段数码管动态显示技术:分时复用与使能端优化

本文深入解析了七段数码管动态显示技术的核心原理,重点阐述了分时复用与使能端优化如何协同工作。通过利用人眼视觉暂留效应,分时复用技术以一套数据线驱动多个数码管,而合理的使能端控制则是消除鬼影、保证亮度均匀的关键。文章提供了从硬件基础到Verilog代码实战的完整指南,帮助开发者实现稳定高效的动态显示系统。

lilh34434的博客 213

buu:pwn warmup_csaw_2016

buu:pwn warmup_csaw_2016 第一次写pwn题,得到文件放入ida 其实一开始和re的题很像,都是寻找关键函数,怎么找,个人理解是要关注输入输出有无比较的地方,这里shb_40060D很明显就是关键函数,点进去,为什么呢,因为gets()函数很明显会有栈溢出漏洞,sub_40060D函数是后门。 找到了system和 cat flag.txt。 进入虚拟机,对文件进行checksec操作 发现没有任何防护 写exp 在终端运行得flag. ...

weixin_60553183的博客 2731

Unity轻量级框架QFramework:四层架构与命令事件驱动的实战指南

在Unity游戏开发中,软件架构是确保项目可维护性和可扩展性的核心。通过分层架构(如MVC、DDD)和事件驱动设计,开发者能够有效管理代码复杂度,实现模块间的解耦与高效通信。QFramework作为一个轻量级框架,精准地运用了这些原理,通过严格定义的四层架构(表现层、系统层、数据层、工具层)和命令/事件通信规则,为中小型项目提供了“约束下的自由”。其核心价值在于以极简的代码(不足1000行)强制实施清晰的职责分离,如使用命令模式集中管理状态变更,并通过事件驱动实现响应式更新。这种设计特别适用于解决项目规模扩

weixin_42521032的博客 262

生产环境中redis的SCAN命令如何替代KEYS命令?

本文介绍了使用SCAN命令替代KEYS的完整方案。SCAN通过游标分批迭代,避免KEYS命令遍历整个键空间导致的阻塞风险。文章详细说明了SCAN的基础语法、迭代流程和Java实现示例,强调必须关闭Cursor避免连接泄漏。针对生产环境,提供了COUNT参数调优、客户端去重、集群模式适配等优化建议,并列举了典型错误场景。SCAN通过分批次迭代和游标管理,可安全实现高性能键空间遍历。全文150字。

DN金猿的博客 179

BUU刷题-Pwn-warmup_csaw_2016

同时存在危险函数get(),可以实现栈溢出漏洞!发现v5变量距离ebp+8=0x40+8。分析:有后门函数,利用栈溢出。

一个啥也不会的小菜鸡! 184

Pydoll浏览器自动化框架教程

让浏览器自动化回归本质。不再纠缠驱动兼容、不再手动处理验证码、不再因为请求和 UI 分裂而头疼。如果你经常做 Web 自动化、爬虫或者测试,不妨试试 Pydoll。也别忘了给项目点个 ⭐,让作者知道有人喜欢这个工具。👉GitHub 地址。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 204

BUUCTF平台-web-(WarmUp+easy_tornado+随便注)记录-day1

1.WarmUp 思路很清晰,文件包含,漏洞点在代码会二次解码,只需注入一个?就可以使用../../进行路径穿越,然后去包含flag,flag路径在hint.php里面有 2.easy_tornado 题目就给了这些信息,flag路径已知,render应该是跟模板注入相关,hint.txt给的应该是filehash的算法, 看看url,我们可以控制文件名和文件hash ...

weixin_30765475的博客 368

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

BUUCTF的Web真题学习整理(一)

目录WEB1—WarmUp (任意文件包含漏洞)WEB2—高明的黑客(fuzz脚本)WEB3—easy_tornado (服务端模板注入(ssti攻击))WEB4—Hack World(时间盲注)WEB5—admin(unicode欺骗)WEB6—piapiapia (一个源码中有防止sql注入的反序列化漏洞) BUU上的题基本都是比赛真题,还是很有借鉴意义的,安利一波https://buuoj...

CTF小白的博客 5704

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

buuctf--web篇01WarmUp

0x01 [HCTF 2018]WarmUp 参考链接:https://blog.youkuaiyun.com/zouchengzhi1021/article/details/104173137 打开源码,发现source.php字样,添加在后面,然后就看见了php代码。如下: <?php highlight_file(__FILE__);//highlight_file() 函数对文件进行语法高亮显示。 class emmm { public static functio

Xor0ne 1060

buuctf 之warmup_csaw_2016

发现了一个gets函数可以溢出,并且在上面的运行中,我们看到他输出了一个地址,在下面的sprintf函数中将一个函数的地址输出了,我们去看看这个函数是干什么的。一种是ida直接看(不一定准),40h是64字节,再加8字节的rbp就是ret的位置。这里的返回地址,也就是rbp下面的地址是df28,我们输入的‘aaaaa’在dee0。是一个没有保护机制的64位x86架构的小端可执行程序。断在main函数地址,或者调用gets函数的地址也行。减一下刚好和ida中的一样。两种方式获得填充数据大小。

weixin_54452942的博客 743

[HCTF 2018]WarmUp;极客大挑战 2019]EasySQL;[极客大挑战 2019]Havefun;[强网杯 2019]随便注

HCTF 2018]WarmUp 打开题目,可知存在source.php 访问source.php得到源码,访问hint.php得到提示 分析源码 if (! empty($_REQUEST['file'])#首先传入一个参数`file` && is_string($_REQUEST['file'])#判断file是否为字符串 && emmm::checkFile($_REQUEST['file'])#并将参数传递给checkFile

feiniaotjx的博客 268

BUUCTF——web(WarmUp、[极客大挑战 2019]EasySQL)

BUUCTF-webwarmUp(考点;PHP 代码审计)做题思路[极客大挑战 2019]EasySQL做题思路(考点:苟住,猥琐发育) 题目可食用,不慌。 warmUp(考点;PHP 代码审计) 做题思路 直接参考我的博客,才发现两个靶场题目一样 传送门: 题解地址 [极客大挑战 2019]EasySQL 做题思路(考点:苟住,猥琐发育) 图片有点小帅 乍一看是个登录sql考点,试试万能密码, 1’or 1=1 or ‘1’='1# 哦,它出来了。 好吧,挖能密码的意思是,可以把查找语句拼接成后

LizePing_的博客 622

BUUCTF warmup_csaw_2016 writeup

BUUCTF warmup_csaw_2016 打开IDA, 发现: PS:这个题直接把函数位置给了。。。 可以看出,gets绝对有问题,v5的长度为0x40,同时加上返回地址8个字节,所以要溢出总长度为0x48,在运行程序时可以看到sub_40060D的地址就为0x40060D… 所以构建payload:payload = ’a’ * 0x48 + p64(0x40060D),得flag...

weixin_45999107的博客 2414

BUUCTF学习笔记-WarmUp

BUUCTF-WarmUp 时间:2020/03/04 考点:代码审计         先看看题目的描述,写着PHP和代码审计,估计是那种直接给一段PHP源代码,然后构造请求来获得flag。         打开题目链接只有一...

weixin_42271850的博客 1070

BUUCTF-WarmUp

BUUCTF-WarmUp(代码审计) 1、打开靶场后,查看源码即可看到 <!--source.php--> 2、进入sourcep.php 代码如下 <?php highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { $whitelist = ["source"=>"source.ph

硫酸超的博客 5440

BUUCTF web-[HCTF 2018]WarmUp

[HCTF 2018]WarmUp 点进去一个滑稽,,查看源码 有个php,访问php 查看源码,有个hint.php访问一下 提示说flag在ffffllllaaaagggg文件里,我们继续分析源码 我们发现最底部的if语句为执行条件,有三个条件,第一个判断文件不能为空(检查是否传了file参数),第二这个传的参数是字符串,第三要过白名单检测,过了之后包含 隐藏了flag的文件。我们再看上面的if语句,白名单是hint.php,又有mb_strpos和mb_substr截取内容,碰到?就截止,所以我们只

m0_53314778的博客 5472

【学习笔记8】buu [HCTF 2018]WarmUp

1.点开一看发现一个表情包,f12查看源码发现提示让去找source.php页面,转到source.php页面后看到如下代码,日常代码审计,再看其中提到了hint.php,接下来跳转到hint.php看,提示flag not here, and flag in ffffllllaaaagggg <?php highlight_file(__FILE__);//指定地址 cla...

weixin_43553654的博客 270

BUUCTF—WEB-WarmUp

拿到题目,一个表情包,顺便扫一下目录

迷风小白 1万+
下一篇: 成理第二届信安大挑战web篇
Pysnow
博客等级 码龄5年 44粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pysnow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值