[SWPUCTF 2021 新生赛]web方向(一到六题) 解题思路,实操解析,解题软件使用,解题方法教程

本文主要是介绍[SWPUCTF 2021 新生赛]web方向(一到六题) 解题思路,实操解析,解题软件使用,解题方法教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  题目来源

NSSCTF | 在线CTF平台因为热爱,所以长远!NSSCTF平台秉承着开放、自由、共享的精神,欢迎每一个CTFer使用。icon-default.png?t=O83Ahttps://www.nssctf.cn/problem

 

[SWPUCTF 2021 新生赛]gift_F12

这个题目简单打开后是一个网页

 我们一般按F12或者是右键查看源代码。接着我们点击ctrl+f后快速查找,根据题目给的格式我们搜索ctf即可看到flag,如下图所示。

或者是

接着根据题目所给的格式NSSCTF{}写入flag即可解出 ,这里给大家一个示例

NSSCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft}

[SWPUCTF 2021 新生赛]jicao

知识点:网站请求的POST、GET方法,JSON

阅读源码了解到需要post值给id,get值给json,json_decode()可以对一串JSON进行解码,故需要构造payload为 {"x":"wllm"}之后:
方法一:使用HackBar进行/?id=wllmNB,然后post json
方法二:使用burp直接修改请求头

另:json

格式为

{"name": "John Doe", "age": 18, "address": {"country" : "china", "zip-code": "10000"}}

JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

JSON的值:
3.1 JSON的构成: ws 值
3.2值可以是对象、数组、数字、字符串或者三个字面值(false、null、true)中的一个。值中的字面值中的英文必须使用小写。
3.2.1对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上文所述的值由逗号分割的键值对组成,如:引用JSON中的对象可以包含多个键值对,并且有数组结构,该语言正是一次实现过程内容的描述。
3.2.2数组是由方括号括起来的一组值构成,如:
[3, 1, 4, 1, 5, 9, 2, 6]
3.2.3 字符串与C或者Java的字符串非常相似。字符串是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
3.2.4数字也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

解题方法如下:

这里大家在火狐浏览器右上角点击...然后点击扩展HackBar安装然后点击题目,接着点击检查,点击load URL加入?json={"x":"wllm"}  接着设置为Post data

将下面的值写入id=wllmNB然后点击Execule即可解出flag

 [SWPUCTF 2021 新生赛]easy_md5

题目如下

既要两变量个值不相同,又要两个变量md5值一样,
可以发现此时判断md5值是否一样用的是==,这是php的弱类型比较,
方法一: 可以使用带0e开头的数字穿进行传递参数,因为php会将0e开头的数字转化为0,故此时md5值相等,而两个变量值不相等;
方法二: 可以传递数组,如name[]=123,password[]=456,md5不能加密数组,故两个md5返回的都是null

另:若遇到===这样的强类型比较,方法一就失效了,方法二仍然有效,或者还可以使用软件fastcoll进行md5碰撞,生成两个字符串使得他们的md5值相同

另:0e开头的数字

s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s1885207154a
0e509367213418206700842008763514
s1502113478a
0e861580163291561247404381396064
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s155964671a
0e342768416822451524974117254469
s1184209335a
0e072485820392773389523109082030
s1665632922a
0e731198061491163073197128363787
s1502113478a
0e861580163291561247404381396064
s1836677006a

 解题方法

选上面两个md5的值对撞即可得到flag

 [SWPUCTF 2021 新生赛]include

 题目:

 那我们就上传一个file,在搜索栏中 ?file 、?file=ture  、?file=false都可以试一下如下图所示:

 看到代码后发现是伪代码,这里我讲一下什么是伪代码:

1.什么是PHP伪协议?

PHP伪协议是PHP自己支持的一种协议与封装协议,简单来说就是PHP定义的一种特殊访问资源的方法。

有些伪协议成功执行需要allow_url_fopen和allow_url_include的支持。

allow_url_fopen On/Off 允许或禁止打开URL文件
allow_url_include On/Off 允许或禁止引用URL文件

2.什么时候用PHP伪协议?

文件包含!!!的时候,可能遇到的文件包含函数:
1、include
2、require
3、include_once
4、require_once
5、highlight_file
6、show_source
7、flie
8、readfile
9、file_get_contents
10、file_put_contents
11、fopen (比较常见)

1.常见的php伪协议

php://input

php://input 是个可以访问请求的原始数据的只读流,获取POST请求数据的协议

当enctype=”multipart/form-data” 的时候 php://input 是无效的。

php://input 伪协议 成功执行前提
php.ini 中的 allow_url_include设置为On

php://filter

php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。

在利用上很多都是与包含函数结合使用,读入或者输出获取文件源码然后编码让其不执行从而输出

补充:

php伪协议
常见的php伪协议

(1)file:// 访问本地文件系统

2)http:// 访问HTTP(S)网址

3)ftp:// 访问FTP(S)URL

4)php:// 访问各个输出输入流

5)zlib:// 处理压缩流

6)data:// 读取数据

7)glob:// 查找匹配的文件路径模式

8)phar:// PHP归档

9)rar:// RAR数据压缩

php://filter 的使用:


php://filter/read=convert.base64-encode/resource=index.php
php://filter/resource=index.php

php://filter 伪协议组成:
read=<读链的筛选列表>
resource=<要过滤的数据流>
write=<写链的筛选列表>
php://filter/read=处理方式(base64编码,rot13等等)/resource=要读取的文件

read 对应要设置的过滤器:
常见的过滤器分字符串过滤器、转换过滤器、压缩过滤器、加密过滤器
其中convert.base64-encode ,convert.base64-decode都属于 转换过滤器

zip://与bzip2://与zlib://协议

zip:// 等属于压缩流的协议,通过直接压缩普通文件为zip文件,再通过zip:// 协议读取,可以直接执行php代码。压缩后的zip文件可以随意修改后缀也不影响zip://协议读取。(注意是如phpinfo.txt直接压缩为zip,而不是文件夹压缩zip)

压缩及协议访问格式:

压缩文件为.zip后缀
zip://绝对路径/phpinfo.zip%23phpinfo.php
压缩文件为.bz2后缀
compress.bzip2://绝对路径/phpinfo.zip/phpinfo.php
压缩文件为.gz后缀
compress.zlib://绝对路径/phpinfo.zip/phpinfo.php

data://

data://伪协议可以通过请求提交的php代码数据配合文件包含函数可以达到代码执行效果。

data://伪协议 成功执行前提
php.ini设置allow_url_include 与allow_url_open都为On。

data://协议的格式是: data://数据流封装器,相应格式数据

 根据题目我们发现有include_once函数;
include_once():在脚本执行期间包含并运行指定文件。该函数和include 函数类似,两者唯一的区别是 使用该函数的时候,php会加检查指定文件是否已经被包含过,如果是,则不会再被包含。

于是我们进行伪造:

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

 即可得到一串字符,这里给大家补充一下base64的概念

Base64编码和解码的基本概念

  • 编码:将二进制数据转换为ASCII字符的文本格式。Base64编码使用64个字符(A-Z, a-z, 0-9, +, /)来表示数据。
  • 解码:将Base64编码的文本转换回原始的二进制数据。

最后我们base64解码即可获得flag

[SWPUCTF 2021 新生赛]easy_sql 

我们打开题目

 上面写了wllm是参数,那么这个题给参数可能是让我们sql注入。

https://download.csdn.net/download/m0_73951999/89721502icon-default.png?t=O83Ahttps://download.csdn.net/download/m0_73951999/89721502

这里给一个链接点进去就可以看到这道题怎么解sql的了。

这位大佬写的解题思路非常清晰,所以这里我就不过多赘述。

[SWPUCTF 2021 新生赛]easyrce 

题目如下:

解题思路如下:

我们可以发现是用的是exec()函数,无回显,并且是GET请求。

这里给大家补充一下知识,我们进入前看到标题REC这里给大家说一下

REC题目,常用的几个系统命令执行函数
system();
passthru();
exec();
shell_exec();
popen();
proc_open();
pcntl_exec();

这些都是php通过系统命令来查看文件内容比如我举个例子system("ls");这种通常在没有任何限制的情况下可以查看所有文件,但是题目肯定会设计一些困难,比如说不给你输入空格、=、#、&等这种特殊字符常常被限制,那么一般怎么绕过呢,我们可以这样子,空格在php执行中(不考虑版本的情况下)可以使用%20来代替,比如说system("ls /"); 时可以改为system("ls%20/"),a[]=1时可以改为a[]%=1,而#号可以使用%23来代替。(这里大家注意一下字符输入的时候一定一定要对,不然不会有反应甚至404)

好了回归正题,我们可以开始解了,根据上面已知的信息,我们可以先写一个?url=system("ls");发现是index.php那可能是让我们确定一下路径我们可以这样子写?url=system("ls /");

?url=system("ls20%/");我们也试一下

可以发现没问题, 然后我们看到的这些所有文件了

我们仔细看一下哪个像flag很明显是flllllaaaaaaggggggg,那么我们就要去这个路径下面的文件才能找到flag ,这里我们要使用cat或者是tac,这个我解释一下,这些都是查看的意思,简单来说就是通过执行cat或者是tac路径下的文件你们我们接下来如图所示,解题方法如下:

第一种通过?url=system("cat /f*");通过f*指针查找有关f的

第二种 ?url=system("cat20%/fflllllaaaaaaggggggg");替换空格也可以得到flag

第三种 ?url=system("cat20%/fflllllaaaaaaggggggg");

 第四种?url=system("cat20%/fflllllaaaaaaggggggg");

其实还有很多方法解出大家都可以试一下,这里我给大家拓展一下怎么用蚁剑做这道题

下面是中国蚁剑的资源:

https://download.csdn.net/download/m0_73951999/89724306icon-default.png?t=O83Ahttps://download.csdn.net/download/m0_73951999/89724306

GET请求url,看到eval就是蚁剑连接,但是它要POST请求才行,那就直接用一句话木马连接它

也就是利用eval这句话然后改成GER改成POST后面url改成传入的参数

像我这样子添加数据即可 node5.anna.nssctf.cn:26152/?url=eval($_POST['a']);然后在点击进去

点击fflllllaaaaaaggggggg文件后发现flag

这篇关于[SWPUCTF 2021 新生赛]web方向(一到六题) 解题思路,实操解析,解题软件使用,解题方法教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146843

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]