当前位置:首页 > 网络安全 > 正文内容

Plaid CTF 2019 – Tonnerre解题思路

访客3年前 (2021-04-15)网络安全438

描述
首要咱们坚信搭载tonnerre.pwning.xxx:8560的服务器是彻底安全的,后边咱们能够拜访该网站。怎么搞呢?
咱们有了一个斗胆的主意….他们会不会将用户数据和网页内容存储在同一个数据库呢?
细节
分值: 200
分类: 加密
验证: 119
解决方案
这个Web登录表单存在一个简略的SQL注入,运转sqlmap就能够直接获取tonnerre数据库中的users表单:只要一个用户get_flag 以及两个值:
salt, 一个随机的127字节字符串
verifier, 一个随机的145字节字符串


这两个值都运用到根据公钥的认证协议,长途协议类似于SRP(安全长途暗码协议),其服务端是由Python完成的。
下面包括咱们注释的代码就是其间一部分风趣的当地:
N = ... # a 1024-bit prime number, the group modulus
g = ... # a 671-bit number, a group generator
...
   # generates a key pair
    random_server = random.randint(2, N-3)
    public_server = pow(g, random_server, N)
    # mask the public key with the verifier
    residue = (public_server + permitted_users[username][1]) % N
    # send salt and masked pubkey
    req.sendall(tostr(permitted_users[username][0]) + 'n')
    req.sendall(tostr(residue) + 'n')
    # compute the session key,
    #   masking the client pubkey with the verifier
    #   raising to the server's secret exponent
    #   hashign the whole thing using SHA-256
    session_secret = (public_client * permitted_users[username][1]) % N
    session_secret = pow(session_secret, random_server, N)
    session_key = H(tostr(session_secret))
    # receive a proof from the client..
    proof = req.recv(512).strip('n')
    # ..should be a hash of the server's masked pubkey and session key
    if (proof != H(tostr(residue) + session_key)):
      req.sendall('Sorry, not permitted.n')
      req.close()
      return
    # this is useless for the challenge
    our_verifier = H(tostr(public_client) + session_key)
    req.sendall(our_verifier + 'n')
    # send us the flag!
    req.sendall('Congratulations! The flag is ' + flag + 'n')
    req.close()
现在咱们就调用服务器端的(s, S)密钥对,以及客户端的(c, C)密钥对。类似于g^s=S 以及 g^c=C.
他看起来像是客户端接纳服务端的Diffie-Hellman算法公钥(运用verifier后得知),另一方面同享密钥为:
(C * verifier)^s = g^(cs) * verifier^s
因为客户端并不知道服务端的private exponent s,所以咱们不能确认同享密钥,问题出在哪儿呢?
其间的窍门就是public_client不该该是客户端公钥C,而是C乘以verifier的倒数。运用规范模块的反序算法,咱们能够计算出verifier的首要逆模N。
咱们能够用下面的程序进行身份验证(相同,咱们仅向您展现精彩部分)
random_client = random.randint(2, N-2)
public_client = pow(g, random_client, N)
invver = modinv(verifier, N)
public_client2 = invver * public_client % N
if ((public_client2 * verifier) % N) == public_client:
    print 'verifier verified'
s.sendall(tostr(public_client2) + 'n')
# get salt and server pubkey
salt = int(s.recv(512).strip('n'), 16) % N
residue = int(s.recv(512).strip('n'), 16) % N
public_server = (residue - verifier + N) % N
session_secret = pow(public_server, random_client, N)
session_key = H(tostr(session_secret))
proof = H(tostr(residue) + session_key)
s.sendall(proof + 'n')
time.sleep(0.5)
r = s.recv(512).strip('n')
print r
取得成果
python tonnerre_solve.py
Welcome to the Tonnerre Authentication System!
verifier verified
ca787059bc572bc7902c91d2a168226a32052518073f4c32948ff02826e6be22
Congratulations! The flag is PCTF{SrP_v1_BeSt_sRp_c0nf1rm3d}
 

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:http://therlest.com/106138.html

分享给朋友:

“Plaid CTF 2019 – Tonnerre解题思路” 的相关文章

【紧急+重要】勒索病毒解决方案!附:MS17-010补丁下载

  滚动更新:2017年5月13日16:57:22   游侠安全网(良心网站,站长先贴上注意事项和解决方法!防止你看本文的时候就被加密了!   1、本次共计是自动化攻击,利用了Windows的MS17-010。但苹果的MacOS用户不用得意,因为在昨晚之前,我这里得到的好几起勒索攻击案例都是针对...

干洗对衣物有害吗

干洗对衣物有害吗 干洗剂实际上就是有机溶剂,所以对衣服多少都有点危害,只不过高级的干洗剂对衣服损伤小一些而已。 随着人们工作的繁忙和生活节奏的加快,现代人更多地把换下的衣物送到洗衣店干洗,以保证衣服不变形和有更多的时间休闲娱乐,这本是一件提高生活品质的好事,但据最新的研究显示,干洗衣物对身...

氟碳涂料(钢结构氟碳漆工序)

方能涂装后道面漆,使表面达到St3级,抹灰层或混凝土表面层,高压淡水清洗掉盐渍和其他污物;喷砂。 中重点推荐的,加工而成的一种新型涂层材料,抹灰和混凝土的基层质量应符合,外墙金属氟碳漆施工工艺,其键能为485KJ/mol,不得有工序污物。树脂为主要成膜物质的涂料;又称氟碳漆。 基面清理用适当的清洁剂...

一年黄金价格走势图(黄金价格实时走势图分析

2019年金价将迎来上涨荷兰银行,2018年黄金市场或许不会有太好的表现,是一种软的,你可以随时来平台内查询。 金道贵金属,日交易k线图构成周交易k线图,此时段间,即开始疲软下跌,2016年06月06日老凤祥价格可,黄金价格走势K线图盘面,整体的价格走势是由每天的交易组成的,24kinfo这个平台的...

ems邮政快递查询(ems快递附近网点查询)

一、邮政快递包裹号码查询 北京邮政速递丰丸西路分局鑫源投资部:发货及收货 EMS快递单号:EI061382538CS 时间、地点及跟踪进展北京邮政速递丰丸路分公司西局鑫源投资部:发货及收货2012-02-12 08:19:21北京邮政速递丰丸路分公司西局鑫源投资部:安排发货2012-02-12...

黄埔燃料油现货价格_今日燃料油市场价格

这句话是指期货比现货价格高100元吗,柴油,1%的权重都没有,通过技术指标和消息面影响来分析的。有的有点差,点88 国际燃料油收盘价涨跌新加坡。244点5 国内燃料油,燃料油,作为成品油的一种,屈居第二位,有的高点有的低一点,2。97#汽油5点38元/价格升,在原油的加工过程中,常关注的消息为OPE...

评论列表

世味笑惜
2年前 (2022-07-06)

ier) % N) == public_client:    print 'verifier verified's.sendall(tostr(public_client2) + 'n')# get salt and se

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。