Web 与 Crypto 大部分题目难度不大,整理下题解。
Web
XWiki
CVE 2020-11057,参考https://jira.xwiki.org/browse/XWIKI-16960,可以直接执行Python代码。发现根目录下 /readflag,要回答两个数哪个大,输入0或者1。拖下来逆向,写个脚本自动交互(题目环境里拉的233):
1 | from subprocess import Popen, PIPE |
把 01 流转成flag:
1 | from Crypto.Util.number import * |
simpleflask
EZFLASK
ctf.__globals__
,可以发现admin的路由,看起来是个ssrf,但是ban掉了 127.0.0.1。
5000端口,应该是要ssrf本地的5000端口服务。
前面可以发现是 requests,尝试 302 跳转。
1 |
|
发现有ssti,直接构造:
1 |
|
carefuleyes
www.zip 源码审计。
我们目标是调用XCTFGG的login方法,成功登陆admin:
有个反序列化可以完成login方法调用,现在问题是如何获取权限是admin的用户名和密码。
可以看到 sql 文件:
1 |
|
插入了一个username为XM的用户,密码未知,我们需要注入出密码。
审计一下发现几乎所有直接入库的操作前都有转义操作,尝试寻找二次注入,在rename.php中:
查询出来的结果直接拼接到了查询语句中,存在二次注入。
写个盲注脚本:
1 | import requests |
注出密码是 qweqweqwe。直接构造序列化数据:
1 |
|
Crypto
square
1 | from pwn import * |
babycrypto
参考https://keltecc.github.io/ctf/writeup/2020/05/24/m0lecon-ctf-2020-teaser-king-exchange.html,基本原题。
1 | from Crypto.Util.number import * |
da Vinci after rsa
先是个rsa,然后是达芬奇密码。
rsa 发现n可以直接分解,有三个因子,两个因子的欧拉值都与 e 不互素,并且因子比较小。
想起来 2016 0CTF 一个题,应该是先要解三个模数方程,然后用 CRT 求解。
16年那个题题解在这里:https://wooyun.js.org/drops/0ctf%20writeup.html。求三个模数方程可以用https://www.wolframalpha.com/在线求解。
求解后使用CRT,然后再达芬奇密码解密。
1 | # -*- coding: utf-8 -*- |
ezAES
密钥两位未知,拥有最后一个分组的明密文,以及倒数第二段密文的后10个字符,可以爆破。
爆破出密钥后从后向前求密文和 IV 就好了:
1 | from Crypto.Cipher import AES |
what_r_the_noise
基本原题,参考:https://teamrocketist.github.io/2017/10/22/Crypto-Pwn2Win-2017-Differential-Privacy/
1 | from pwn import * |