nssctf(Web刷题)

[SWPUCTF 2021 新生赛]gift_F12

打开题目是一个时间页面,不过看了一会儿发现没有什么用

直接F12打开网页源代码

Ctrl+F搜索flag

找到了flag

NSSCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft}

[第五空间 2021]签到题

NSSCTF{welcometo5space}

[SWPUCTF 2021 新生赛]jicao

打开题目发现是一段代码

解读:

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

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

如果id和json变量的值都等于设定字符串,那么就打印flag

JSON

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

在JSON中,键是一个字符串,值可以是字符串、数字、布尔值、数组、嵌套的JSON对象或null。JSON对象的语法规则如下:

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

下面是一个JSON对象的示例:

{
   "name": "John",
   "age": 30,
   "isStudent": false,
   "interests": ["reading", "traveling"],
   "address": {
      "city": "New York",
      "country": "USA"
   },
   "phoneNumber": null
}

在上面的示例中,name、age、isStudent、address、phoneNumber都是键,对应的值分别是字符串、数字、布尔值、嵌套的JSON对象、null。

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

所以我们传入

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

POST id= wllmNB

NSSCTF{43cc5241-889f-4ca6-b9b5-1cf4641510e6}

关于MD5绕过

一:强类型与弱类型比较

松散比较也就是弱类型比较,严格比较就是强类型比较
a==b:弱类型比较会将a和b转成统一数据类型在进行比较,而强类型比较会先判断a和b是不是相同类型,不是,则返回false,是,再比较a和b的值。

也就是== 和 ===的区别

php中其中两种比较符号:

==:先将字符串类型转化成相同,再比较
===:先判断两种字符串的类型是否相等,再比较

二:类型

1)弱比较(==):

例子:

<?php
highlight_file(__FILE__);
error_reporting(0);
$flag = "flag{H3rmesk1t_is_a_loser}";
$val1 = $_GET['val1'];
$val2 = $_GET['val2'];
if (isset($_GET['val1']) and isset($_GET['val2']))
{
	if ($_GET['val1'] != $_GET['val2'])
	{
		if ((md5($_GET['val1']) == md5($_GET['val2'])))
			echo $flag;
		else
			echo "you can't get flag";
	}
}
?>
<?php
highlight_file(__FILE__);
error_reporting(0);
$flag = "flag{H3rmesk1t_is_a_loser}";
$val1 = $_GET['val1'];
$val2 = $_GET['val2'];
if (isset($_GET['val1']) and isset($_GET['val2']))
{
	if ($_GET['val1'] != $_GET['val2'])
	{
		if ((md5($_GET['val1']) == md5($_GET['val2'])) and (md5(md5($_GET['val2'])) == md5(md5($_GET['val1']))))
			echo $flag;
		else
			echo "you can't get flag";
	}
}
?>
PHP转换规则

字符串和数字比较使用==时,字符串会先转换为数字类型再比较,若字符串以数字开头,则取开头数字作为转换结果,不能转换为数字的字符串(例如"aaa"是不能转换为数字的字符串,而"123"或"123aa"就是可以转换为数字的字符串)或null,则转换为0。

 

方法一:数组绕过

上面的例题:

payload:?val1[]=1&val2[]=2

md5不能加密数组,会返回null

例如:

$a=$_GET['a'];
 
$b=$_GET['b'];
 
md5($a)==md5($b) 

payload:?a[]=1&b[]=2

方法二:科学计数法绕过(0e)

在php中,0e开头的数字会当作科学计数法解析,不管后面的值为任何东西,0的任何次幂都为0

只要是以0e开头,后面为数字的字符串和字符串0比较值都是相等的,因为不管0不论和多少相乘都是0

QNKCDZO
0e830400451993494058024219903391
 
s878926199a
0e545993274517709034328855841020
 
s155964671a
0e342768416822451524974117254469
 
s214587387a
0e848240448830537924465865611904
 
s214587387a
0e848240448830537924465865611904
 
s878926199a
0e545993274517709034328855841020

例如:

(1)

$a=$_GET['a'];
 
$b=$_GET['b'];
 
md5($a)==md5($b)

payload:?a=QNKCDZO&b=240610708

(2)

$a=$_GET['a'];
 
$a==md5($a);

payload:?a=0e215962017

(3)

if ($_GET['a'] != $_GET['b'])
    {
        if (md5($_GET['a']) == md5($_GET['b']))
            echo '1';
        else
            echo '0';
    }
    else echo "请输入不同的a,b值";

payload:?a=QNKCDZO&b=240610708

代码审计:要求get获取的a和b的值要求不相等,但要求其md值相同

  • 以下是一些字符串md5值以0e开头
    QNKCDZO
    240610708
    s878926199a
    s155964671a
    s21587387a

 

2)强比较(===):

注意:强比较不能使用0e来绕过

(因为强类型比较,不仅比较值,还比较类型,0e会被当做字符串,所以不能用0e来进行,但是我们可以用MD值完全相同的字符来进行绕过)

方法一:数组绕过

与弱比较的方法相同

方法二:使用md5加密后两个完全相等的两个字符串绕过

例如:

$a=$_GET['a'];
 
$b=$_GET['b'];
 
md5($a)===md5($b)

payload:?a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2&b=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
 

二进制md5加密 ecd33e3e09ff2a58e1d9ed7189dc186b
url编码 abc%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D6%16y%AC%CE%C5%A1LrY5fn%94%10%D9%01%C3%AC%F8%AAN%21%D0%27%BE%3Ej%A7%22%0C%D08%D3%AF%DFRo%2F%A4%8B%E8%EB45j%E4h%9C%21%22%AB%7E%BC%8E%7C%17%9E%C3Xg%D7%A8%CDHt%BE%AB.%2FWb%3Eb%EA%FC%261%0F_%3D%AFo%3F%1E%DE%E8i%86%7D%BF%C7_Q%CDA%B4%CF%B8n%06Ir%7F%5C%A3k%F9%2AO%DFF%2A%F3%8BcH%FF%85%3F%0D%D0%9B%C7%C8-%12%92
二进制md5加密 ecd33e3e09ff2a58e1d9ed7189dc186b
url编码 abc%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D6%16y%AC%CE%C5%A1LrY5fn%94%10%D9%01%C3%ACx%AAN%21%D0%27%BE%3Ej%A7%22%0C%D08%D3%AF%DFRo%2F%A4%8B%E8%EB45%EA%E4h%9C%21%22%AB%7E%BC%8E%7C%17%9E%C3%D8g%D7%A8%CDHt%BE%AB.%2FWb%3Eb%EA%FC%261%0F_%3D%AFo%BF%1E%DE%E8i%86%7D%BF%C7_Q%CDA%B4%CF%B8n%06Ir%7F%5C%A3k%F9%2A%CF%DEF%2A%F3%8BcH%FF%85%3F%0D%D0%9BG%C8-%12%92

 3)特定条件下的MD验证绕过:ffifdyop

Select * from ’admin’ where password=md5($pass,true)

首先要知道md($pass,true)的含义:

MD5报文将以原始 16字符二进制格式返回

ffifdyop 字符串经过MD5加密后为276f722736c95d99e921722cf9ed621c
在转换成字符串为’or’6乱码

Select * from ’admin’ where password=‘or’6乱码
相当于万能密码

例题:

一:[SWPUCTF 2021 新生赛]easy_md5(Nssctf)

进入题目,有一段代码

代码审计:这里需要让password 不等于 name ,但是又需要让他们的md5值相等,所以我们需要md5绕过

我们使用hackbar传入参数

法一:数组绕过

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

法二:使用0e(科学计数法绕过)

同样的使用hacker工具进行传参

二:[SWPUCTF 2022 新生赛]奇妙的MD5(Nssctf)

神秘的字符串就是ffifdyop,根据函数md5加密后,再次转换为字符串时,会变成’or’6 。进入第二关。源码里面有东西。 

输入ffifdyop,点击提交查询

进入了这个界面

查看源代码:

代码审计:就是要x和y的值不相等,但是MD5值要相等

payload:?x[]=1&y[]=2

在url中输入这个payload

发现Url多出一个后台,访问一下

继续数组绕过

这次是post传参方式

paylaod:?wqh[]=1&dsy[]=2

NSSCTF{83d24a46-9206-4793-afa3-f92aab660de7} 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

cPanel中如何为数据库添加用户权限

本周有一个客户&#xff0c;购买Hostease的主机&#xff0c;询问我们的在线客服&#xff0c;他的网站安装后再还是无法访问。 客户购买的是Linux虚拟主机&#xff0c;带cPanel面板的。网站访问有如下数据库连接错误: 随后检查发现客户创建的数据库没有添加数据库用户权限。 下面…

期权策略交易怎么做?怎么选择期权策略?

今天期权懂带你了解期权策略交易怎么做&#xff1f;怎么选择期权策略&#xff1f;期权交易是一种金融衍生品交易方式&#xff0c;它给予购买者在未来特定时间内以特定价格购买&#xff08;或出售&#xff09;标的资产的权利。 期权策略交易怎么做&#xff1f; 配对看跌期权&am…

基于地理坐标的高阶几何编辑工具算法(3)——相离面吸附

文章目录 工具步骤应用场景算法输入算法输出算法示意图算法原理 工具步骤 点击面&#xff0c;点击“相离面吸附”工具&#xff0c;绘制一个面&#xff0c;双击结束后&#xff0c;与所有相交的面进行吸附 应用场景 为了让相离的两个几何面在空间上相邻&#xff0c;使用该工具…

llama_factory的使用

1.git clone llama_factory到本地 2.记得安环境&#xff0c;在clone后 3.多显卡要设置一下 4.数据文件放在data里面&#xff0c;仿照模板里的格式 5.进入llama_factory微调页面 python src/webui.py 6.llama_factory介绍&#xff1a;10分钟打造你个人专属的语言大模型&am…

离散数学--图论

目录 1.简单概念 2.握手定理 3.点割集 4.边割集 5.点连通度和边连通度 6.Dijstra算法&&最短路径 7.有向图的连通性 8.图的矩阵表示 9.欧拉图问题 10.哈密尔顿图 1.简单概念 &#xff08;1&#xff09;这个里面的完全图比较重要&#xff0c;完全图是例如k3,k5这…

GPT-SoVITS语音克隆部署与使用

GPT-SoVITS是一款强大的少量样本语音转换与语音合成开源工具。当前&#xff0c;GPT-SoVITS实现了如下几个方面的功能&#xff1a; 由参考音频的情感、音色、语速控制合成音频的情感、音色、语速可以少量语音微调训练&#xff0c;也可不训练直接推理可以跨语种生成&#xff0c;…

00-Vue的介绍和vue-cli

前言Vue的介绍和vue-cli一、发展历史相关网址介绍Vue框架的特点 二、Vue 的环境搭建1&#xff0c;卸载掉所有已经存在的所有Node.js版本2&#xff0c;下载MVM包4、安装node.js5、常见的插件 三、利用 vue-cli 新建一个空的项目1、官方代码参考2、安装 vue-cli&#xff08;命令行…

【C++】学习笔记——map和set

文章目录 十五、map和set1. 关联式容器2. set的介绍3. set的使用4. multiset5. map的介绍6. map的使用7. multimap8. map中重载的operator[] 未完待续 十五、map和set 1. 关联式容器 我们已经接触过STL中的部分容器&#xff0c;比如&#xff1a;vector 、list 、deque 等&…

04. Redis 配置文件

文章目录 单位包含网络 NETWORK通用 GENERAL快照 SNAPSHOTTING主从复制 REPLICATION安全 SECURITY客户端 CLIENTS内存设置 MEMORY MANAGEMENTAPPEND ONLY MODE 模式&#xff08;aof 的配置&#xff09; 单位 配置文件对大小写不敏感&#xff08;unit单位&#xff09;。 包含 …

通过域名接口申请免费的ssl多域名证书

来此加密已顺利接入阿里云的域名接口&#xff0c;用户只需一键调用&#xff0c;便可轻松完成域名验证&#xff0c;从而更高效地申请证书。接下来&#xff0c;让我们详细解读一下整个操作过程。 来此加密官网 免费申请SSL证书 免费SSL多域名证书&#xff0c;泛域名证书。 首先&a…

K8S认证|CKA题库+答案| 2. 查看Pod CPU资源使用量

2、查看集群中运行Pod CPU资源使用量 您必须在以下Cluster/Node上完成此考题&#xff1a; Cluster Master node Worker node k8s …

『Apisix安全篇』快速掌握APISIX Basic-Auth插件高效使用

&#x1f4e3;读完这篇文章里你能收获到 &#x1f468;‍&#x1f4bb; 学习如何快速安装并配置APISIX Basic-Auth插件&#xff0c;为您的API安全保驾护航。&#x1f6e0;️ 文章详细介绍了如何创建带有basic-auth配置的Consumer&#xff0c;以及如何在Route中启用该插件。&am…

爱校对:智能校对,让文字更专业

交互未来&#xff08;北京&#xff09;科技有限公司&#xff0c;源自清华大学计算机智能人机交互实验室&#xff0c;致力于通过高科技手段提升用户体验&#xff0c;实现“科技让生活更美好”的宗旨。我们的产品——爱校对&#xff0c;正是这种创新精神的结晶&#xff0c;旨在为…

怎样策划一场价值百万的营销活动?

策划一场活动听起来是不是就有点头大&#xff1f; 别急&#xff0c;其实只要掌握了活动策划的精髓&#xff0c;一步步来&#xff0c;从构思到实施&#xff0c;整个过程都能游刃有余。 一、定下目标&#xff1a; 咱们先得搞清楚&#xff0c;这场活动到底是为了啥。是想提升品…

代码随想录-Day17

110. 平衡二叉树 这道题中的平衡二叉树的定义是&#xff1a;二叉树的每个节点的左右子树的高度差的绝对值不超过 111&#xff0c;则二叉树是平衡二叉树。根据定义&#xff0c;一棵二叉树是平衡二叉树&#xff0c;当且仅当其所有子树也都是平衡二叉树&#xff0c;因此可以使用递…

四天学会JS高阶(学好vue的关键)——构造函数数据常用函数(理论+实战)(第二天)

一、对象创建引发构造函数产生 1.1 创建对象三种方式&#xff1a; 利用对象字面量创建对象 const obj {name: 佩奇}注&#xff1a;对象字面量的由来&#xff1a;即它是直接由字面形式&#xff08;由源代码直接&#xff09;创建出来的对象&#xff0c;而不是通过构造函数或者…

开箱测评!吸猫毛除味神器,希喂FreAir Lite宠物空气净化器实测

掉毛季又来了&#xff0c;猫咪的毛发满天飞&#xff0c;怎么办&#xff1f;我家掉毛怪一到季节就开始掉老多毛&#xff0c;关键还喜欢在家里打架跑酷&#xff01;天上地下都是毛&#xff01;为了减少家里空气中浮毛&#xff0c;你做过那些努力呢&#xff1f;最近猫掉毛掉的&…

设置height:100%不生效的原因

之前网课案例总是不屑于去看&#xff0c;因为总觉得太花时间&#xff0c;但是不可否认的是&#xff0c;认真去看还是会有收获的&#xff0c;而且常有意外收获 昨天在看实现动画效果的综合案例中&#xff0c;意外解决了我长久以来的一个疑问&#xff1a;为什么给元素设置height…

论文精读--InstructGPT

模型效果取决于数据效果&#xff0c;但在精细度上控制不够&#xff0c;只是大力出奇迹&#xff0c;这样有很大的问题&#xff1a; &#xff08;1&#xff09;数据量太多或者没有这方面的数据&#xff0c;模型学不会怎么办 &#xff08;2&#xff09;安全性问题&#xff0c;模…

踩坑——纪实

开发踩坑纪实 1 npm安装1.1 查看当前的npm镜像设置1.2 清空缓存1.3 修改镜像1.4 查看修改结果1.5 重新安装vue 2 VScode——NPM脚本窗口找不到3 springboot项目中updateById()失效4 前端跨域4.1 后端加个配置类4.2 CrossOrigin注解 5 路由出口6 springdoc openapi3 swagger3文件…