当前位置: 首页 > article >正文

1.25寒假作业

web:[UUCTF 2022 新生赛]ez_rce

打开环境,先理解代码,注重代码审计的能力

定义以get传参的方式传参code函数,所以后面我们肯定要以’code=...‘的方式去实现操作,后面禁用了一系列的字符,包括执行函数和一些绕过的字符,没有提示要我们查看或者抓取什么函数或文件,那就是三板斧先看列表ls,再去抓取列表里面的文件。

这边可以先看一下列表,直接看是不行的,因为题目没给你设置执行函数

那首先就先挑一个执行函数,很多函数都被禁用了,exec没有,试一下

不行试一下其他函数

显然是print可以,但是为什么是直接输出引号里面的字符串,去了解才知道print和echo一样是输出函数,和python里面的print很像,区别就是print会返还布尔值,那么这题的执行函数都被禁用了,就只能用这个输出函数怎么样才能变成执行呢?那就要使用`这个反引号,在php中`有特殊的含义就是执行函数的意思,类似shell_exec函数所以当我们把‘换成`时,他就会变成执行函数。

直接查列表没反应,那就看一下底层的列表

看到flag文件了,直接抓,注意层级

pwn:[SWPUCTF 2024 秋季新生赛]兄弟你的环境好香?

查壳,ida

看伪代码,声明buf字节80,后面的red函数又读取256给字节给buf,明显存在溢出

找后门函数的地址

覆盖量256-80,地址0x4011DD,尝试一下,没有反应...为什么别人的覆盖量和地址都和我不一样...地址后为什么还要加一,还有那个大写小写a怎么判断

misc:polar靶场一小时十分后看海

打开图片,可以看到北戴河海滨汽车站37路,直接去地图找找看

直接搜801路公交看看有没有什么地点

一整条路都靠海边,那就看看有没有什么景点,有一个圣蓝海洋公园,南戴河旅游度假区,南戴河仙螺岛游乐中心,阳光国际会议中心海滩浴场等等等,很多个,那这样一个一个去试肯定不是办法,结合题目一小时十分,从起点开始一小时十分的车程估计实在尾部,那就剩南戴河欢乐大世界,圣蓝海洋公园,黄金海岸风景区

一一尝试,确定是黄金海岸风景区,要把风景区去掉才行,服了搞了我好久

crypto:polar靶场spam

打开文件看起来像是一个英语的信件,看起来也没什么规律

根据题目搜看看spam,结合文本得知有一种加密叫垃圾邮件加密,找一下在线网站解密https://spammimic.com/decode.cgi

得到一串由A,B组成的字符串,之前其实也碰到过类似的,是把AB转化成-.的摩斯密码

尝试一下,直接用记事本替换A是.B是-

摩斯密码解密,对应字符串改成{}即可

reserve:[HUBUCTF 2022 新生赛]simple_RE

查壳,ida

看伪代码

代码审计:scanf函数读取我们输入的内容给v6,用sub_401570函数给v6、buf1、v4进行处理,再对比buf1和后面的字符串,起一个检验作用

接着看一下sub_401570函数

这个代码看起来还是挺麻烦的

首先声明变量result为整数64获取a1字符串的长度给v6,v6取余3给v7,设置一个根据v7的判当 v6 %3!=0 时,计算 v8=4*(v6/3)+4,然后用 malloc 分配 v8+1 个 64 位字节的内存,指针存于 v10,并将最后一个字节置 0 ;如果 v6<=0,跳转到 LABEL_5,当 v6%3=0 时,计算 v8=4*(v6/3),同样用 malloc 分配 v8+1 个 64 位字节的内存给 v10 并将最后一个字节置 0 。若 v6<=0,跳转到 LABEL_8

定义一个循环,v11 += 4; 每次循环让 v11 指针后移 4 个字节,从 a1 字符串中按顺序取出字符(v13 = a1[v12]; 等操作),并根据复杂的位运算(如 v13>>2(v14>>4)|(16 * v13)& 0x30 等)作为索引,从 aQvejaFhmuyjbaC 数组中取值,存储到 v11 相关偏移的内存位置,循环停止的条件是a1处理完成

循环结束后,当 v7=1 时,将 v10[v9-2] 和 v10[v9-1] 赋值为 61(ASCII 码 =)。

当 v7=2 时,将 v10[v9-1] 赋值为 61(=),最后将 v10 赋值给 *a20 赋值给 resultv8 赋值给 *a3,并返回 result即答案,前面声明的result的长度就是64整数

看一下加密之后的字符串和加密的数组

这题和普通的base64加密不同的就是加密的编码表不一样,是从特定的数组里面取的,所以说base64解密不能用在线网站解密,要自己写脚本,还没接触过这方面的代码编写,其实可以用ai直接写

是可以解出来,不过代码看起来很麻烦,使用的是基于映射base64标准编码表去自定义编码表,这里可以去看看别人怎么写的

不得不说简便很多,但是健壮性没那么好,他没有定义字符编码,不如说我们常用的utf-8,它直接用str.maketrans去定义编码表,要加上字符编码,可以这样操作


http://www.kler.cn/a/519198.html

相关文章:

  • 我的2024年年度总结
  • 飞牛 fnOS 安装8852be网卡驱动并成功连接
  • PHP EOF (Heredoc) 详解
  • Final2x--开源AI图片放大工具
  • 数据结构初阶之栈的介绍与栈的实现
  • vulnhub靶场【kioptrix-3】靶机
  • IDEA社区版(免费版)创建spring boot项目
  • Linux--权限
  • Spring Boot应用中实现基于JWT的登录拦截器,以保证未登录用户无法访问指定的页面
  • 语言集成查询LINQ
  • YOLOv8改进,YOLOv8检测头融合DynamicHead,并添加小目标检测层(四头检测),适合目标检测、分割等,全网独发
  • 洛谷P1003
  • Flink (十二) :Table API SQL (一) 概览
  • 安装最小化的CentOS7后,执行yum命令报错Could not resolve host mirrorlist.centos.org; 未知的错误
  • 驱动程序中的物理内存通过mmap机制映射到用户空间,用户空间得到虚拟内存地址然后进行相关数据的读写操作
  • 如何打造一个高并发系统?
  • Redis实战(黑马点评)——涉及session、redis存储验证码,双拦截器处理请求
  • Docker + Nginx 部署个人静态博客指南
  • 如何将xps文件转换为txt文件?xps转为pdf,pdf转为txt,提取pdf表格并转为txt
  • Python基于Django的宠物服务管理系统(附源码,文档说明)
  • 计算机组成原理——数据运算与运算器(一)
  • 使用 Redis 实现分布式锁的基本思路
  • gitlabgit分支合并
  • Spring AI的函数调用(Function Calling),具体怎么实现?
  • 群晖docker获取私有化镜像http: server gave HTTP response to HTTPS client].
  • 开源大模型:从单一竞争迈向多元生态时代