近期一些CTF的writeup
0x00 签到
from Crypto.Util.number import *
import random
flag=b'flag{******************}'
n = 2 ** 256
flaglong=bytes_to_long(flag)
m = random.randint(2, n-1) | 1
c = pow(m, flaglong, n)
print('m = ' + str(m))
print('c = ' + str(c))
# m = 73964803637492582853353338913523546944627084372081477892312545091623069227301
# c = 21572244511100216966799370397791432119463715616349800194229377843045443048821
这是一个求解离散对数的问题——经过查询在sage下有discrete_log函数可以直接解决问题,discrete_log(Mod(c,n),Mod(m,n))
,在sagemath的docker下运行。
得到34852863801130149185238904762083023615101
,利用long_to_bytes
得到flag{DASCTF_zjut}
0x02 hellounser
源代码如下:
|
|
参考https://www.gem-love.com/ctf/770.html
现在的困难:
- 不能通过
system()
等函数执行系统命令,就无法cat flag.php
- 过滤了 flag 等关键字,不能操作
$flag
变量 - 过滤了 print 等关键字,不能直接读取或类似无参数 RCE 的方法 flag.php 源代码
但是代码明确写了包含 flag.php,在不指定变量名称的情况下输出变量的值,get_defined_vars()
可以用来输出所有变量和值。构造如下的payload
|
|
上传pop的值得到
现在的困难:
- 过滤了 include 关键字
- 过滤了单引号双引号
- 过滤了 flag 关键字和类似无参数 RCE 题目中能够得到 1flag.php 字符串的各种函数的关键字,比如无法
scandir()
应对的策略:
- 过滤了 include 还能用 require
- 过滤了引号,可以使用那些参数可以不加引号的函数,
require()
代替require " "
- 过滤了 flag,可以 base64 编码。其他过滤的不用便是
修改
$b->arg = "};require(base64_decode(VHJ1M2ZsYWcucGhw));var_dump(get_defined_vars());//";
0x03 Girlfriend’s account
jackie的女朋友又偷偷用他的信用卡买东西了,你能算算一共花了多少钱吗?
打开Excel,提示flag{账单总金额四舍五入保留至小数点后两位},例如总金额为 543.21 元时,你需要提交 flag{543.21}
套用公式
|
|
然后把值粘贴出来,把件数替换成阿拉伯数字。再用公式=A2*B2
计算,最后=SUM(C1:C5001)
0x03 双目失明,身残志坚
打开压缩包,得到两张图
两张看起来一样的图,blind,联想到了盲水印,解一下。
看起来像是盲文,对应的点是34,26,1245,1346,1245,256,15,145,35,125,23456
试了下转日文,发现不太行。又对照维基尝试了下汉语拼音。得到如下结果:
zh(i) e/o g/j iang(yang) g/j ong(weng) ie(ye) d a h/x ue(yue)
组合一下,惊奇地发现是zhejianggongyedaxue
0x04 [Jboss]CVE-2017-12149
漏洞名称:Jboss 反序列化(CVE-2017-12149)
漏洞描述:JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。在/invoker/readonly路径下,攻击者可以构造序列化代码传入服务器进行反序列化,由于没有对反序列化操作进行任何检测,导致攻击者可以执行任意代码。
漏洞影响:Redhat JBoss Enterprise Application Platform 5.0
参考:https://juejin.cn/post/6869587131678294023
https://github.com/yunxu1/jboss-_CVE-2017-12149
打印环境变量env,获得flag{d0c54aa0-5bce-4fd6-84a1-e01230f23d19}
0x05 [Jboss]CVE-2017-7504
git clone https://github.com/joaomatosf/jexboss
,cd到jexboss文件夹下执行python3 jexboss.py -u http://node4.buuoj.cn:28056/
,发现存在漏洞。
输入yes后,工具自动进行漏洞利用,利用成功会出现shell的命令行,可执行相关命令。
查看环境变量,得到flag。
0x06 [JBoss]JMXInvokerServlet-deserialization
同样使用jboss反序列化工具,查看环境变量即可。