当前位置:网站首页 > 网络安全培训 > 正文

HexionCTF web&crypto&misc题目分析

freebuffreebuf 2020-05-14 269 0

本文来源:HexionCTF web&crypto&misc题目分析

作者: uzi_god合天智汇

HexionCTF 2020 都是一些基础和中等的题目,但是没有 ak,等到官方 wp 出来之后就整理了一下,发现还是有一些知识没有掌握的

web

Well Known

打开靶机发现是 404 页面,看一下 robots.txt

Sitemap: sitemap.xml Allow: *

访问 sitemap.xml 可以看到给了三个 url

?xml version="1.0" encoding="UTF-8"?>urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">    url>       loc>https://wk.hexionteam.com/404.html/loc>    /url>   url>       loc>https://wk.hexionteam.com/robots.txt/loc>    /url>   url>       loc>https://wk.hexionteam.com/.well-known/security.txt/loc>    /url> /urlset>

Weekly CTF

>> ") shares = [] for i in range(0x40): p.sendline(str(i)) data = p.recvuntil(">>> ").replace(" ", "").replace("\n", "").replace(">>>", "") shares.append((bytes_to_long((str(i)).encode()), int(data))) print(long_to_bytes(recover_secret(shares)))

Really Smart Acronym

给了加密的源码,及 nc 域名 端口 ,这题是LSB Oracle Attack

从源码可以看到是 RSA,并且已知密文,输入明文对应的密文,输入密文对应的二进制明文最后一位

print("Flag:", pow(bytes_to_long(flag), key.e, key.n))print(pow(m, key.e, key.n)) print(bin(pow(c, key.d, key.n))[-1])

这里使用的是 pycrypto 库,一般它生成的 e 为 65537

在 python 中有一个特性,-1 % x = x-1 这里输入 -1 就可以获得 n 的值

剩下的就是 RSA 中的 LSB Oracle Attack 了。

用户知道 RSA 中的公钥 N,e 以及密文 c 并且可以任意构造密文 c1,返回它解密后 m1 的末尾某些位的性质。可以通过多次构造 c1 来把明文 m 缩小在某一个范围内。

因为 c = (m^e) mod N 构造 c1 = (2^e)*c mod N = (2m)^e mod N 对应的 c1 解密之后为 m1 = 2m mod N

数论中有个定理,c = 偶数 a mod 奇数 b,若 c 为奇数,则 a>b,若 c 为偶数,则 ab,结合上面的内容就可以缩小 m 的范围了

from Crypto.Util.number import *from Crypto.PublicKey import RSA from pwn import *  p = remote("challenges1.hexionteam.com", 5000) p.recvuntil("Flag: ") c = int(p.recvuntil("\nO", drop=True)) e = 0x10001  p.recvuntil("=> ", drop=True) p.sendline("-1")  n = int(p.recvuntil("Alot of unhelpful decrypts:", drop=True)) + 1 p.recvuntil("> ") _max = n _min = 0 i = 1 try:     while i = 1024:         p.sendline(str(c * pow(2 ** i, e, n)))         a = p.recvuntil("\n> ", drop=True)         if b"0" == a:             # even             _max = (_max + _min) // 2         else:             # odd             _min = (_max + _min) // 2         i += 1 except:     pass print(long_to_bytes(_max))

# misc

Mirage

f12 可以发现一个 url https://mirage.hexionteam.com/assets/hexfont.ttf 这是一个字体文件

看到字体文件就想到了 FontForge

下载 ttf 后使用 FontForge 可以找到对应的编码表

Hmmm

附件是一个二进制文件,file 命令查看一下发现是 ELF

v2-b7bd157505f5ef3ad6c84210ec5a7f02_720w

执行了一下看看

v2-da13f4525a90cb36dffa7fc733537098_720w

然后试着 cat 一下

v2-24a511205efd6c17dda31959de56ba4d_720w

over,查了一下其他的 wp

查看 ELF 文件的所有信息 readelf -a ./hmmm 发现里面有个段 .note.f14g

v2-648c5e9aa2130603d34ed82382e576df_720w

显示 note 段信息 readelf -n ./hmmm 发现 .note.f14g 这个段是被破坏的

v2-181a0cb3601af51eac2cf21f3b3bc82d_720w

考虑 hexdump objdump -j .note.f14g -s hmmm

v2-5467545d1ea8a1585245e17d22d6d45f_720w

可以读到 flag,直接写脚本

from pwn import ELF  section = ELF('./hmmm').get_section_by_name('.note.f14g').data() print(''.join([chr(_) for _ in section if _ != 0]))

Treturn v}{x+=comp(strtonum("0x"$2));y+=comp(strtonum("0x"$3))}$1=="01"{print x,y}' 2.txt > 3.txt

最后用 Gnuplot 画出来,得到一个镜像图片,在 3D 画图 里面就可以翻转了

v2-28224288a061a6e12aeacd699d967145_720w

CTF实验室

CTF从入门到实践-CTF一站式学习平台-合天网安实验室

声明:笔者初衷用于分享与普及网络知识,若读者因此作出任何危害网络安全行为后果自负,与合天智汇及原作者无关!

渗透测试训练营

掌握渗透测试岗位9大核心知识体系,提升自身岗位竞争力

40+实战训练及考核,提升动手操作能力

胜任渗透测试工程师岗位功能能力

v2-047ad39e19f465363ec0f94bcb0ad5bf_720w


转载请注明来自网盾网络安全培训,本文标题:《HexionCTF web&crypto&misc题目分析》

标签:CTF

关于我

欢迎关注微信公众号

关于我们

网络安全培训,黑客培训,渗透培训,ctf,攻防

标签列表