HexionCTF web&crypto&misc题目分析

访客 254 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

HexionCTF web&crypto&misc题目分析-第1张图片-网盾网络安全培训

执行了一下看看

HexionCTF web&crypto&misc题目分析-第2张图片-网盾网络安全培训

然后试着 cat 一下

HexionCTF web&crypto&misc题目分析-第3张图片-网盾网络安全培训

over,查了一下其他的 wp

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

HexionCTF web&crypto&misc题目分析-第4张图片-网盾网络安全培训

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

HexionCTF web&crypto&misc题目分析-第5张图片-网盾网络安全培训

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

HexionCTF web&crypto&misc题目分析-第6张图片-网盾网络安全培训

可以读到 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 画图 里面就可以翻转了

HexionCTF web&crypto&misc题目分析-第7张图片-网盾网络安全培训

CTF实验室

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

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

渗透测试训练营

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

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

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

HexionCTF web&crypto&misc题目分析-第8张图片-网盾网络安全培训


标签: CTF

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~