首页 > 其他分享 >2024 NSSCTF 做题记录

2024 NSSCTF 做题记录

时间:2024-04-12 20:55:06浏览次数:12  
标签:include 记录 JSON 2024 flag 3.2 字符串 php NSSCTF

web

[SWPUCTF 2021 新生赛]easy_sql

我可能不知道怎么写参数,但是我会用 sqlmap.

python3 sqlmap.py -u .... --dump testdb

另外说一句,直接用 --dump-all 是很蠢的行为 因为可能会 dump 到 mysql 的配置数据库,显然对拿到 flag 没什么帮助。

try to use --dbs.

[SWPUCTF 2021 新生赛]jicao

<?php
highlight_file('index.php');
include("flag.php");
$id=$_POST['id'];
$json=json_decode($_GET['json'],true);
if ($id=="wllmNB"&&$json['x']=="wllm")
{echo $flag;}
?>

简单的代码审计。

显然想要拿到 flag 只需要 post 一个内容为 wllmnb 的 id ,再在 json 把变量 x 赋值 wllm 即可。

用 hackbar 完成。

另:json

    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对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上文所述的值由逗号分割的键值对组成,如:

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


    引用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的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

[SWPUCTF 2021 新生赛]easy_md5

 <?php 
 highlight_file(__FILE__);
 include 'flag2.php';
 
if (isset($_GET['name']) && isset($_POST['password'])){
    $name = $_GET['name'];
    $password = $_POST['password'];
    if ($name != $password && md5($name) == md5($password)){
        echo $flag;
    }
    else {
        echo "wrong!";
    }
 
}
else {
    echo 'wrong!';
}
?>
wrong!

需要 get 一个 name , post 一个 password

且需要 name 和 password 的值不相等但 md5 又要相等。

考点: php 弱比较

==不会对比类型
===也会对比类型

可以采用两个0e(php会将每个0e开头的哈希值解释为0)开头的哈希值进行绕过

弱比较会把0exxxx当做科学计数法,不管后面的值为任何东西,0的任何次幂都为0
代码审计:要求get获取的a和b的值要求不相等,但要求其md值相同

以下是一些字符串md5值以0e开头

QNKCDZO
240610708
s878926199a
s155964671a
s21587387a

payload:?a=QNKCDZO&b=240610708 即可绕过

也可以采用两个数组进行绕过(MD5无法对数组进行加密,因此返回值均为NULL)

另: isset 函数用来判断一个变量是否被声明 返回布尔类型。

[SWPUCTF 2021 新生赛]include

先告诉我们传入一个 file 试试,于是 ?file=114514

然后出现如下

 <?php
ini_set("allow_url_include","on");
header("Content-type: text/html; charset=utf-8");
error_reporting(0);
$file=$_GET['file'];
if(isset($file)){
    show_source(__FILE__);
    echo 'flag 在flag.php中';
}else{
    echo "传入一个file试试";
}
echo "</br>";
echo "</br>";
echo "</br>";
echo "</br>";
echo "</br>";
include_once($file);
?> flag 在flag.php中

发现玄机在于 flag.php 但是 ?=flag.php 无回显。

于是我们想到使用 php 伪协议 把源代码转变成 base64 编码后再一次 decode 查看到源代码。

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

关于 php 伪协议 https://www.php.cn/faq/481803.html

include_once 语句在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含,且 include_once 会返回 true

标签:include,记录,JSON,2024,flag,3.2,字符串,php,NSSCTF
From: https://www.cnblogs.com/reverber/p/18132071/ctf

相关文章

  • 2024.4.10华为暑期实习笔试题解尝试1~2
    题目在4.10华为暑期实习笔试题解努力开摆的小鱼2024-04-10T1简单难度,按照题意顺着写就可以n=int(input())#表示计费日志的条数lst=[]#去重后的日志ss=set()#为了去重foriinrange(n):s=tuple(input().split(","))t=s[0]+s[1]+s[2]#......
  • P10064 [SNOI2024] 公交线路
    显然只需要考虑叶子结点的连边情况,设一个结点\(u\)仅经过一条路径能到达的点的集合为\(S_x\),则条件等价于对于任意两个叶子结点\(x,y\),\(S_x\)与\(S_y\)有交.由树的性质,所有\(S_x\)的交集非空(否则存在环),于是交集为一个连通块,上点边容斥.于是问题转化为两部分:求所有\(......
  • having的用法 对分组后的数据进行条件过滤 ,HAVING语句通常与GROUP BY语句联合使用,用来
    having的用法HAVING语句通常与GROUPBY语句联合使用,用来过滤由GROUPBY语句返回的记录集。HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。语法:SELECTcolumn1、column2、...column_n,aggregate_function(expression)。FROMtables。WHEREpredicates。GRO......
  • bug记录:java.lang.UnsupportedOperationException: null
    java.lang.UnsupportedOperationException:null这个错一般是因为不支持的操作导致,即对象不支持某方法,显示抛出此异常。举个例子:Arrays.asList这个方法返回Arrays内部类ArrayList而不是java.util.ArrayList,而Arrays的内部类ArrayList是继承了AbstractList,AbstractList中的add、r......
  • 2024 4月成七集训总结
    这次集训有收获也有不足收获1.学会了广义扫描线,反演,对数据结构,扫描线的理解进一步加深2.学会了Dinic最大流,Dinic最小费用最大流,对网络流模板,网络流建模了解的更深刻3.学会了新算法:线性基,并且这几天做了一些位运算的题目,对位运算的性质有了更深刻,全面的了解4.学会了DP的slope......
  • 2024/04/12 多校集训总结
    总结知识点线段树,平衡树,块状数据结构,字符串,网络流,DP,DP优化,数学。数据结构听懂得比较多,但是\(LCT\)还是没会,知道了扫描线的广泛应用,码力有小小的提升。字符串对于算法讲的很简略,主要就是讲一些题目,所以没学到啥,题目也没咋做。网络流的话,做了很多题,过程中自己......
  • Uipath下载安装202401
    在网上找了一圈,发现没更新uipath的下载方法。一起来下载玩玩吧~1、用浏览器搜索“uipath”,进入官网  2、点击官网右上角的“tryuipathfree”  3、用邮箱注册个uipath账号  4、自用选社区版本,邮箱注册账户后,会收到验证邮件,输入验证码后即注册成功   5......
  • Devexpress 控件学习记录(一:BarManager 控件、XtraTabbedMdiManager 控件)
    BarManager控件最终实现的效果如下:首先在窗体中拖出BarManager控件,窗体Baradd地方点击添加设置BarManager的属性设置出现的窗体的底部【DockStyle=Bottom】点击AddDropDownMenu添加下拉菜单出现下拉菜单设置下拉菜单中的子菜单选中下拉菜单,然后点击下面的Add......
  • Java基础学习 | 2024年4月12日
    修饰符1.受保护的访问修饰符-protected子类与基类在同一包中:被声明为protected的变量、方法和构造器能被同一个包中的任何其他类访问;子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。简单来讲,被p......
  • nexus 3.49 手动上传本地jar包记录
    1.登录nexus网页管理平台:http://192.168.3.100:8081/2.下载要上传的jar包https://releases.aspose.com/zh/diagram/java/22-12/ 3.选择要上传的库 4.上传 5.找到验证对应包,并使用 ......