Close

[JDCTF] web writeup

偶然看到的刷一刷
-w1083

签到题~

进入题目
-w917

既然签到题F12一下
-w723
真的发现了,有提示打开那个js
-w1192

跑一下就有flag了

你知道正则么?

源码审计



总共两个判断
第一个函数是ereg可以用%00绕过
第二个函数strpos用来判断该字符串中有没有#biubiubiu
因为#在url中有特殊含义所以得用url编码
payload:
http://jdctfweb.ngrok.xiaomiqiu.cn/web3-re/?jdctf=123%00%23biubiubiu

还记得hash么?

还是源码



很简单呀=。=
就是拿一个经常用的
240610708

皮皮更健康~

进题目

进入之后
发现是jsfuck

跑一下
出来一串3D45353D39333D38383D45353D39333D38383D45353D39333D38383D45353D39333D38382C3D45343D42443D41303D45383D41323D41423D45393D41413D39373D45343D42413D38362C3D0A3D45343D42383D38443D45363D39383D41463D45383D42463D39393D45343D42383D41412C3D45353D42303D42313D45393D39373D41453D45343D42443D41303D45383D41373D41333D0A3D45343D42413D38363D45353D38443D38413D45353D41343D41393D45363D42303D39343D45343D42383D38443D45363D42303D3934
不知道啥编码了=。=
16进制解一下

=E5=93=88=E5=93=88=E5=93=88=E5=93=88,=E4=BD=A0=E8=A2=AB=E9=AA=97=E4=BA=86,=\n=E4=B8=8D=E6=98=AF=E8=BF=99=E4=B8=AA,=E5=B0=B1=E9=97=AE=E4=BD=A0=E8=A7=A3=\n=E4=BA=86=E5=8D=8A=E5=A4=A9=E6=B0=94=E4=B8=8D=E6=B0=94
(让我觉得是misc)
解出来也不知道是啥拖到百度搜索一下

可以看到是Quoted-printable编码 之前一直没碰到过=。=

解一下好气啊。。。。再看看题
F12 fuck。。

%3D就是等号还是一个Quoted-printable编码

这里有http://ctf.ssleye.com/cvencode.html
-w1156
119, 104, 49, 116, 101, 95, 49, 115, 95, 115, 48, 95, 104, 52, 110, 100, 115, 48, 109, 69
有完没完了。。。一看就知道是ascii码

233333

综合实力考察


在头里面发现一个hint 16进制的解一下是MRWWY5DGM46T2===
突然看到url 里面有一个look-misc又是misc吗。。。
三个等号 base32解一下
出来是dmltfg==
base64再解一下
-w222
vim有两个特性
1. vim备份文件

    默认情况下使用Vim编程,在修改文件后系统会自动生成一个带~的备份文件,某些情况下可以对其下载进行查看;
    index.php普遍意义上的首页,输入域名不一定会显示。   它的备份文件则为index.php~

  1. vim临时文件

    vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件,如果原文件名是submit,则它的临时文件 .submit.swp。如果文件正常退出,则此文件自动删除。

找了很久在index.php~发现了。。
源码


=0:
                echo "蹇嚭鍘诲惂锛岃蛋閿欒矾浜嗭綖锝烇綖
"; echo "杩欎箞绠€鍗曢兘涓嶄細涔堬紵"; break; case $id>=10: exit($flag); break; default: echo "浣犺蛋涓嶅埌杩欎竴姝ョ殑!"; break; } } } ?>

这样就过了
-w429
is_numeric只要后面加任何除数字之外的字母或者符号即可绕过
不过我做的时候发现他的代码和备份好像不一样23333 id为0的时候出来的是flag

PHP

F12源码 23333我喜欢

$user = $_GET["user"];
$file = $_GET["file"];
$pass = $_GET["pass"];

if(isset($user)&&(file_get_contents($user,'r')==="the user is admin")){
    echo "hello admin!
"; include($file); //class.php }else{ echo "you are not admin ! "; }

file_get_contents出来的内容要和the user is admin相等用php的伪协议php://input
post里面放 the user is admin
-w1088
用伪协议读一下class.php的代码

file)){
            echo file_get_contents($this->file);    
        }
        return "__toString was called!";
    }
}
?>

反序列化
f1a9.php读不到
读一下index.php的代码

";
    if(preg_match("/f1a9/",$file)){
        exit();
    }else{
        include($file); //class.php
        $pass = unserialize($pass);
        echo $pass;
    }
}else{
    echo "you are not admin ! ";
}
 
?>



原来是因为有一个f1a9的waf怪不得读不到
只要构造一个反序列化 来输出flag
-w496
构造反序列化
得用file把class.php导入然后才能使用read类
http://jdctfweb.ngrok.xiaomiqiu.cn/web6-php/?user=php://input&file=class.php&pass=O:4:"Read":1:{s:4:"file";s:8:"f1a9.php";}
-w213

Leave a Reply

Your email address will not be published. Required fields are marked *