BUUCTF:[De1CTF 2019]SSRF Me ------(代码审计&&哈希拓展长度攻击&&代码审计明白之后的另一种方法)

本文介绍了Python SSRF漏洞和哈希拓展长度攻击的概念,通过一个De1CTF 2019的挑战案例,详细解析了如何利用Python的特性进行攻击。文章提到了关键点在于理解盐的长度、MD5拓展攻击的条件,并提供了攻击方法和伪造签名的步骤,强调了代码审计的重要性。
摘要由CSDN通过智能技术生成

初稿于2021.2.15,重温于2021.4.13.

读取本地文件;file:///app/flag.txt
python特有的伪协议读取:local_file:///app/flag.txt

一、不足:

真·什么也不会。。

  1. 代码审计吧,,不会代码审计,
  2. 对python很不了解,,,刚看代码的时候,真的没有一句能够看懂的。。不行就以后看看少用burp,多用pyt脚本练练python看看,
  3. 代码审计拉得很,,,

二、注意事项

  1. 盐的长度,通常不会是题目所给的盐的长度,这点要注意。
  2. 好像明白md5 拓展攻击了,,,有点积累,前提: 知道 salt的长度,知道一组:明文+相应的md5的值,,那么我们就能够创造出 以 该salt 为盐的任意的铭文+md5的值了,,听起来不错,但是 明文是有限制的。。。
  3. 这里的明文的开头仍旧是 我们已知的明文的开头,然后后面填充着很多800000还有我们随意添加的字符串,,,这个才叫做 任意明文字符,,,着实鸡肋的很,,,。。限制的原因在这里。。因为是只能够后补,所以前面的不能动,
  4. 所以能出现这个md5拓展攻击的地方,,如果是看字符串的话,不能够是 === ,只能够是 == 然后后面的%80000就没了,,这个是要求 明文是某个已知的字符串开头的话, 第二个情况就是 这个题: 字符串 in 铭明文中,只需要里面有这个字符串就好了,不需要 完全相等,也用的到。

三、看WP:

1. 哈希拓展长度攻击

  1. 啥啊这是,,是个python的flask。但是怎么看啊这,,,
    在这里插入图片描述
#! /usr/bin/env python
#encoding=utf-8
from flask import Flask
from flask import request
import socket
import hashlib
import urllib
import sys
import os
import json
reload(sys)
sys.setdefaultencoding('latin1')

app = Flask(__name__)

secert_key = os.urandom(16)


class Task:
    def __init__(self, action, param, sign, ip):#初始化是吧,
        self.action = action
        self.param = param
        self.sign = sign
        self.sandbox = md5(ip)
        if(not os.path.exists(self.sandbox)):          #SandBox For Remote_Addr
            os.mkdir(self.sandbox) // 沙盒,,,,没有了解过,了解一下

    def Exec(self):
        result = {
   }#定义一个字典,存放各种状态参数。
        result['code'] = 500
        if (self.checkSign()):
            if "scan" in self.action:   # 注意这里是 in  哦 in 还是比较安全的
                tmpfile = open("./%s/result.txt" % self.sandbox, 'w')
                resp = scan(self.param)//
                if (resp == "Connection Timeout"):
                    result['data'] = resp
                else:
                    print resp
                    tmpfile.write(resp)
                    tmpfile.close()
                result['code'] = 200
            if "read" in self.action:# 如果read这个字符串再 action 这个参数里面的话
                f = open("./%s/result.txt" % self.sandbox, 'r')#这个sandbox是ip的一个md5加密。
                result['code']
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值