BaseCTF 高校联合新生赛 Week1

Week1

Web

[Week1] HTTP

image.png
image.png
image.png
BaseCTF{4248fc3d-a280-4de0-b5e6-6ff0ecaa1fca}

[Week1] 喵喵喵´•ﻌ•`

image.png

[Week1] md5绕过欸

image.png

[Week1] A Dark Room

image.png

[Week1] upload

什么过滤都没有,上传一句话木马即可
image.png

[Week1] Aura 酱的礼物

image.png
卡在SSRF那里, 我想用challenge来读取http://challenge.basectf.fun:44073/,但是已经被http://jasmineaura.github.io占据了,所以能用SSRF
参考博客:浅析SSRF的各种利用方式 - 先知社区 (aliyun.com)
image.png
image.png

什么是SSRF

SSRF(服务端请求伪造漏洞) 由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。
一般情况下,SSRF针对的都是一些外网无法访问的内网,所以需要SSRF使目标后端去访问内网,进而达到我们攻击内网的目的。
image.png
遇到没掌握的SSRF漏洞,红温两三个小时才做出来,还是得好好学习啊!

PWN

[Week1] 签个到吧

image.png

[Week1] echo

/bin/echo $f*
image.png
/bin/echo $(/flag)
image.png

Crypto

[Week1] 你会算md5吗

GPT辅助解题法。

import hashlib

flag='BaseCTF{}'

output=[]
for i in flag:
my_md5=hashlib.md5()
my_md5.update(i.encode())
output.append(my_md5.hexdigest())
print("output =",output)

这段代码计算了字符串flag中每个字符的MD5哈希值,并将这些哈希值存储在一个列表中。具体来说:

  1. flag='BaseCTF{}' 定义了一个包含标志的字符串。
  2. 对于flag中的每个字符,计算其MD5哈希值。
  3. 将每个字符的哈希值以十六进制字符串的形式存入output列表。
  4. 最后,打印output列表,显示每个字符的哈希值。

这样,output将包含flag中每个字符的MD5哈希值的列表。
MD5是一种不可逆的哈希函数,这意味着它将数据(如字符串)转换为固定长度的哈希值,无法从哈希值反推回原始数据。因此,所谓的“解密”通常是指找到匹配的明文数据,这可以通过查找已知哈希值的映射来完成。

你可以创建一个“解密”脚本,这个脚本可以通过穷举法或使用一个已知的字符集去查找与给定MD5哈希值匹配的字符。这是一个示例脚本,使用穷举法来尝试找到每个字符的原始数据:

import hashlib

# 已知的MD5哈希值列表
md5_hashes = [
    '9d5ed678fe57bcca610140957afab571', '0cc175b9c0f1b6a831c399e269772661', '03c7c0ace395d80182db07ae2c30f034',
    'e1671797c52e15f763380b45e841ec32', '0d61f8370cad1d412f80b84d143e1257', 'b9ece18c950afbfa6b0fdbfa4ff731d3',
    '800618943025315f869e4e1f09471012', 'f95b70fdc3088560732a5ac135644506', '0cc175b9c0f1b6a831c399e269772661',
    'a87ff679a2f3e71d9181a67b7542122c', '92eb5ffee6ae2fec3ad71c777531578f', '8fa14cdd754f91cc6554c9e71929cce7',
    'a87ff679a2f3e71d9181a67b7542122c', 'eccbc87e4b5ce2fe28308fd9f2a7baf3', '0cc175b9c0f1b6a831c399e269772661',
    'e4da3b7fbbce2345d7772b0674a318d5', '336d5ebc5436534e61d16e63ddfca327', 'eccbc87e4b5ce2fe28308fd9f2a7baf3',
    '8fa14cdd754f91cc6554c9e71929cce7', '8fa14cdd754f91cc6554c9e71929cce7', '45c48cce2e2d7fbdea1afc51c7c6ad26',
    '336d5ebc5436534e61d16e63ddfca327', 'a87ff679a2f3e71d9181a67b7542122c', '8f14e45fceea167a5a36dedd4bea2543',
    '1679091c5a880faf6fb5e6087eb1b2dc', 'a87ff679a2f3e71d9181a67b7542122c', '336d5ebc5436534e61d16e63ddfca327',
    '92eb5ffee6ae2fec3ad71c777531578f', '8277e0910d750195b448797616e091ad', '0cc175b9c0f1b6a831c399e269772661',
    'c81e728d9d4c2f636f067f89cc14862c', '336d5ebc5436534e61d16e63ddfca327', '0cc175b9c0f1b6a831c399e269772661',
    '8fa14cdd754f91cc6554c9e71929cce7', 'c9f0f895fb98ab9159f51fd0297e236d', 'e1671797c52e15f763380b45e841ec32',
    'e1671797c52e15f763380b45e841ec32', 'a87ff679a2f3e71d9181a67b7542122c', '8277e0910d750195b448797616e091ad',
    '92eb5ffee6ae2fec3ad71c777531578f', '45c48cce2e2d7fbdea1afc51c7c6ad26', '0cc175b9c0f1b6a831c399e269772661',
    'c9f0f895fb98ab9159f51fd0297e236d', '0cc175b9c0f1b6a831c399e269772661', 'cbb184dd8e05c9709e5dcaedaa0495cf'
]

# 字符集,可以根据实际情况修改
charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-\{\}'

# 生成一个字典来存储字符及其对应的MD5哈希值
hash_to_char = {}

# 生成字符和哈希值的映射
for char in charset:
    md5 = hashlib.md5(char.encode()).hexdigest()
    hash_to_char[md5] = char

# 尝试找到每个哈希值对应的字符
decoded_chars = []
for hash_value in md5_hashes:
    if hash_value in hash_to_char:
        decoded_chars.append(hash_to_char[hash_value])
    else:
        decoded_chars.append('?')  # 如果找不到匹配的字符

# 输出找到的字符
print("Decoded characters:", ''.join(decoded_chars))

解释:

  1. **md5_hashes**** 列表**:包含了要解码的MD5哈希值。
  2. **charset**** 字符集**:可能包含你需要的所有字符,可以根据需要扩展。
  3. 生成哈希值映射:使用字符生成哈希值并将其存储在字典中。
  4. 查找哈希值:查找每个MD5哈希值对应的字符。

请确保你用实际的MD5哈希值替换脚本中的示例值。这个脚本仅适用于较小的字符集和哈希值。如果字符集较大或包含特殊字符,你可能需要扩展charset以确保找到所有可能的匹配。
image.png

[Week1] helloCrypto

GPT辅助解题法。

from Crypto.Util.number import *
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import random

flag=b'BaseCTF{}'

key=random.randbytes(16)
print(bytes_to_long(key))

my_aes=AES.new(key=key,mode=AES.MODE_ECB)
print(my_aes.encrypt(pad(flag,AES.block_size)))

这段代码涉及到AES加密和密钥生成。下面是对代码的详细解释及解密脚本的编写方法。
代码解释

  1. 导入必要的库
pythonfrom Crypto.Util.number import *
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import random
  • Crypto.Util.number 提供一些与数字相关的工具函数。
  • Crypto.Cipher.AES 提供AES加密算法的实现。
  • Crypto.Util.Padding 提供数据填充功能。
  • random 用于生成随机数。
  1. 定义**flag**
pythonflag = b'BaseCTF{}'
  • 这是待加密的消息。它是一个字节串。
  1. 生成随机密钥
pythonkey = random.randbytes(16)
print(bytes_to_long(key))
  • 生成一个16字节(128位)的随机密钥。
  • bytes_to_long(key) 将字节串转换为长整数,并打印出来。
  1. 创建AES加密对象
pythonmy_aes = AES.new(key=key, mode=AES.MODE_ECB)
  • 创建一个AES加密对象,使用ECB模式(电子密码本模式)。
  1. 加密数据
pythonprint(my_aes.encrypt(pad(flag, AES.block_size)))
  • pad(flag, AES.block_size) 将消息填充到AES块大小的倍数(16字节)。
  • 使用my_aes.encrypt 加密填充后的数据,并打印加密结果。

解密脚本
要解密这个数据,我们需要知道密钥和加密的数据。假设我们从输出中获得了密钥和加密数据。以下是解密脚本的步骤:

  1. 获取密钥和加密数据
    • 假设我们已经知道了密钥和加密数据(可以从实际的代码运行中获得)。
  2. 解密数据
    • 使用相同的密钥和加密模式来解密数据。

解密脚本

pythonfrom Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
from Crypto.Util.number import long_to_bytes

# 假设从加密代码中获得的密钥和加密数据
key_long = <密钥的长整型值>  # 从加密代码的输出中获得
encrypted_data = <加密后的数据>  # 从加密代码的输出中获得

# 将长整型密钥转换回字节串
key = long_to_bytes(key_long, 16)

# 创建AES解密对象
my_aes = AES.new(key=key, mode=AES.MODE_ECB)

# 解密数据
decrypted_data = unpad(my_aes.decrypt(encrypted_data), AES.block_size)

# 输出解密后的数据
print("Decrypted data:", decrypted_data.decode())

说明:

  1. 从加密代码中获取密钥和加密数据
    • 替换 <密钥的长整型值><加密后的数据> 为实际从加密代码输出中得到的值。
  2. **long_to_bytes**
    • 将长整型密钥转换回字节串格式以用于解密。
  3. **unpad**
    • 去除解密后的填充部分,恢复原始消息。

示例
假设你从加密代码中获得以下输出:

  • 密钥(长整型): 1234567890123456
  • 加密数据: b'\x01\x02\x03\x04...'

可以将这些值替换到解密脚本中,运行后你将得到原始的消息BaseCTF{}

from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
from Crypto.Util.number import long_to_bytes

# 给定的密钥(长整型值)和加密数据
key_long = 208797759953288399620324890930572736628
encrypted_data = b'U\xcd\xf3\xb1 r\xa1\x8e\x88\x92Sf\x8a`Sk],\xa3(i\xcd\x11\xd0D\x1edd\x16[&\x92@^\xfc\xa9(\xee\xfd\xfb\x07\x7f:\x9b\x88\xfe{\xae'

# 将长整型密钥转换为字节串
key = long_to_bytes(key_long, 16)

# 创建AES解密对象
my_aes = AES.new(key=key, mode=AES.MODE_ECB)

# 解密数据
decrypted_data = unpad(my_aes.decrypt(encrypted_data), AES.block_size)

# 输出解密后的数据
print("Decrypted data:", decrypted_data.decode())

image.png

[Week1] 十七倍

GPT辅助解题法
image.png
这个代码的目的是加密一个字符串,并用一个 cipher 数组来验证加密后的结果是否正确。加密方法是将每个字符的 ASCII 值乘以 17,然后只保留低 8 位(即取模 256)。要解密,只需要反向操作,即将 cipher 中的每个值除以 17(并且考虑到取模 256 的逆运算)。
以下是解密的 Python 脚本:

def decrypt(cipher):
    # 因为 17 在模 256 下是可逆的(其逆元是 15),所以我们使用逆元来解密。
    # 计算 17 的逆元 mod 256
    def mod_inverse(a, m):
        m0, x0, x1 = m, 0, 1
        if m == 1:
            return 0
        while a > 1:
            q = a // m
            m, a = a % m, m
            x0, x1 = x1 - q * x0, x0
        if x1 < 0:
            x1 += m0
        return x1

    inv_17 = mod_inverse(17, 256)
    flag = [(inv_17 * c) % 256 for c in cipher]
    return ''.join(chr(c) for c in flag)

cipher = [
    98, 113, 163, 181, 115, 148, 166, 43, 9, 95,
    165, 146, 79, 115, 146, 233, 112, 180, 48, 79,
    65, 181, 113, 146, 46, 249, 78, 183, 79, 133,
    180, 113, 146, 148, 163, 79, 78, 48, 231, 77
]

print(decrypt(cipher))

这段脚本计算了 17 在模 256 下的逆元,然后用它来还原原始的 flag 字符串。运行这个脚本将会输出解密后的标志。
image.png

[Week1] ez_rsa

GPT辅助解题法
这个代码片段展示了一个 RSA 加密系统的基本实现,但有一些特别的地方。我们将逐步解析代码,并给出 Python 脚本用于解密。

代码解析

  1. 导入库:
pythonfrom Crypto.Util.number import *
import gmpy2

这行代码导入了 Crypto.Util.number 库用于处理大整数,以及 gmpy2 用于高效的大数运算(尽管在这个脚本中 gmpy2 没有使用)。

  1. 定义变量:
pythonm = bytes_to_long(b'BaseCTF{th1s_is_fake_fl4g}')
e = 65537

m 是将字符串 'BaseCTF{th1s_is_fake_fl4g}' 转换为长整型整数。e 是公钥指数,通常在 RSA 加密中使用 65537。

  1. **生成素数和计算 ****n**:
pythonp = getPrime(512)
q = getPrime(512)
n = p * q

生成两个 512 位的素数 pq,然后计算它们的乘积 n,这是 RSA 加密中的模数。

  1. **计算 ****not_phi**:
pythonnot_phi = (p + 2) * (q + 2)

计算 not_phi 作为 (p + 2) * (q + 2),而不是标准的 phi(n)(即 (p-1) * (q-1))。这是一个故意的异常处理方式,可能用于解密验证或挑战。

  1. 加密:
pythonc = pow(m, e, n)

使用 RSA 加密公式 c = m^e % n 对消息进行加密。

  1. 打印结果:
pythonprint(n)
print(not_phi)
print(c)

打印出 nnot_phi 和加密后的密文 c

解密脚本

为了解密,我们需要恢复原始消息。通常,解密过程涉及计算私钥。由于 not_phi 的计算方法不同于标准的 phi(n),我们需要推导 pq 来计算私钥。
以下是解密的 Python 脚本:

pythonfrom Crypto.Util.number import inverse, long_to_bytes
import sympy

# 给定的值
n = 96557532552764825748472768984579682122986562613246880628804186193992067825769559200526147636851266716823209928173635593695093547063827866240583007222790344897976690691139671461342896437428086142262969360560293350630096355947291129943172939923835317907954465556018515239228081131167407674558849860647237317421
not_phi = 96557532552764825748472768984579682122986562613246880628804186193992067825769559200526147636851266716823209928173635593695093547063827866240583007222790384900615665394180812810697286554008262030049280213663390855887077502992804805794388166197820395507600028816810471093163466639673142482751115353389655533205
c = 37077223015399348092851894372646658604740267343644217689655405286963638119001805842457783136228509659145024536105346167019011411567936952592106648947994192469223516127472421779354488529147931251709280386948262922098480060585438392212246591935850115718989480740299246709231437138646467532794139869741318202945

# 推导 p 和 q
p_q_sum = (not_phi - 2**32 - 2) // 2
p_q_diff = sympy.sqrt(p_q_sum**2 - 4 * n)
p = (p_q_sum + p_q_diff) // 2
q = (p_q_sum - p_q_diff) // 2

# 计算 phi(n)
phi_n = (p - 1) * (q - 1)

# 计算私钥 d
e = 65537
d = inverse(e, phi_n)

# 解密
m = pow(c, d, n)
flag = long_to_bytes(m)

print("Decrypted message:", flag.decode())

说明

  1. **推导 **p** 和 ****q**:
    • 通过 not_phi 计算得到 pq 的近似值,然后求解出实际的 pq。这个步骤需要数学上的一些技巧,具体推导可以使用 sympy 库来解决。
  2. **计算 **phi(n)** 和私钥 ****d**:
    • 使用标准的 phi(n) 计算方法和 inverse 函数计算私钥 d
  3. 解密:
    • 使用 RSA 解密公式 m = c^d % n,然后将结果转换回原始消息。

运行上述 Python 脚本可以解密并打印出原始的消息。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
image.png
2024-08-17 10:59:02
运行代码报错: Traceback (most recent call last): File “D:\Downlaods_1\BaseCTF\week1\crypto\1.py”, line 20, in d = inverse(e, phi_n) File “D:\ProgrameLanguage\Python310\lib\site-packages\Crypto\Util\number.py”, line 135, in inverse raise ZeroDivisionError(“Modulus cannot be zero”) ZeroDivisionError: Modulus cannot be zero
2024-08-17 10:59:04
报错信息表明 phi_n 为零,导致计算私钥时出现问题。这个问题通常出现在以下几个方面:

  1. 推导 **p****q** 的步骤
    • 我们需要确保 pq 的值被正确地推导出来。
    • 如果推导过程有误,可能会导致 phi_n 的计算出现问题,从而影响到私钥的计算。
  2. **错误的 ****not_phi**
    • not_phi 是通过 (p + 2) * (q + 2) 计算的,不是标准的 phi(n)。我们需要确保 pq 被正确地推导出来,否则 not_phi 可能不适用。

解决方案

我们需要重新审视如何推导 pq。通常,推导 pq 可以使用如下方法:

  1. **从 **not_phi** 解出 **p** 和 ****q**: 这里我们需要找到 pq 的值使得 (p + 2) * (q + 2)n 满足条件。
  2. **重新计算 ****phi_n**: 确保计算 phi_n 的公式正确无误。

以下是改进的 Python 脚本,使用更安全的推导方法来找到 pq,然后计算 phi_n 和私钥 d

pythonfrom Crypto.Util.number import inverse, long_to_bytes
from sympy import symbols, Eq, solve, sqrt

# 给定的值
n = 96557532552764825748472768984579682122986562613246880628804186193992067825769559200526147636851266716823209928173635593695093547063827866240583007222790344897976690691139671461342896437428086142262969360560293350630096355947291129943172939923835317907954465556018515239228081131167407674558849860647237317421
not_phi = 96557532552764825748472768984579682122986562613246880628804186193992067825769559200526147636851266716823209928173635593695093547063827866240583007222790384900615665394180812810697286554008262030049280213663390855887077502992804805794388166197820395507600028816810471093163466639673142482751115353389655533205
c = 37077223015399348092851894372646658604740267343644217689655405286963638119001805842457783136228509659145024536105346167019011411567936952592106648947994192469223516127472421779354488529147931251709280386948262922098480060585438392212246591935850115718989480740299246709231437138646467532794139869741318202945
e = 65537

# 推导 p 和 q
# 设 p 和 q 是需要找到的两个素数
# 由 (p + 2) * (q + 2) = not_phi 和 p * q = n,推导 p 和 q
p, q = symbols('p q', integer=True)

# 定义方程
eq1 = Eq((p + 2) * (q + 2), not_phi)
eq2 = Eq(p * q, n)

# 解方程
solution = solve((eq1, eq2), (p, q))
if not solution:
    raise ValueError("无法解出 p 和 q")

# 从解中提取 p 和 q
p = solution[0][0]
q = solution[0][1]

# 计算 phi(n)
phi_n = (p - 1) * (q - 1)

# 计算私钥 d
d = inverse(e, phi_n)

# 解密
m = pow(c, d, n)
flag = long_to_bytes(m)

print("Decrypted message:", flag.decode())

说明

  1. 解方程:
    • 使用符号计算库 sympy 解决两个方程:(p + 2) * (q + 2) = not_phip * q = n
    • 确保得到正确的 pq
  2. **计算 ****phi_n**:
    • 使用 (p - 1) * (q - 1) 计算 phi_n
  3. 计算私钥 **d** 并解密:
    • 使用计算得到的 phi_n 计算 d,然后解密消息。

请确保在执行脚本之前,安装了 sympy 库,如果未安装,可以使用以下命令进行安装:

bashpip install sympy

希望这能解决你的问题!如果仍然有问题,请提供更多详细信息以帮助进一步调试。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
image.png
2024-08-17 11:00:26
运行代码还是报错: Traceback (most recent call last): File “D:\Downlaods_1\BaseCTF\week1\crypto\1.py”, line 32, in d = inverse(e, phi_n) File “D:\ProgrameLanguage\Python310\lib\site-packages\Crypto\Util\number.py”, line 139, in inverse return pow(u, -1, v) TypeError: unsupported operand type(s) for ** or pow(): ‘int’, ‘int’, ‘Integer’
2024-08-17 11:00:29
报错信息表明 phi_n 的数据类型可能不兼容 Crypto.Util.number.inverse 函数。Crypto.Util.number.inverse 函数通常需要 int 类型的输入,而 sympy 库的解可能返回了 Integer 类型,这导致了类型不匹配。
我们可以调整代码,确保 phi_nint 类型,并且适用于 inverse 函数。下面是更新后的代码,其中将 phi_n 转换为 int 类型:

pythonfrom Crypto.Util.number import inverse, long_to_bytes
from sympy import symbols, Eq, solve

# 给定的值
n = 96557532552764825748472768984579682122986562613246880628804186193992067825769559200526147636851266716823209928173635593695093547063827866240583007222790344897976690691139671461342896437428086142262969360560293350630096355947291129943172939923835317907954465556018515239228081131167407674558849860647237317421
not_phi = 96557532552764825748472768984579682122986562613246880628804186193992067825769559200526147636851266716823209928173635593695093547063827866240583007222790384900615665394180812810697286554008262030049280213663390855887077502992804805794388166197820395507600028816810471093163466639673142482751115353389655533205
c = 37077223015399348092851894372646658604740267343644217689655405286963638119001805842457783136228509659145024536105346167019011411567936952592106648947994192469223516127472421779354488529147931251709280386948262922098480060585438392212246591935850115718989480740299246709231437138646467532794139869741318202945
e = 65537

# 推导 p 和 q
# 设 p 和 q 是需要找到的两个素数
# 由 (p + 2) * (q + 2) = not_phi 和 p * q = n,推导 p 和 q
p, q = symbols('p q', integer=True)

# 定义方程
eq1 = Eq((p + 2) * (q + 2), not_phi)
eq2 = Eq(p * q, n)

# 解方程
solution = solve((eq1, eq2), (p, q))
if not solution:
    raise ValueError("无法解出 p 和 q")

# 从解中提取 p 和 q
p = int(solution[0][0])
q = int(solution[0][1])

# 计算 phi(n)
phi_n = (p - 1) * (q - 1)

# 计算私钥 d
d = inverse(e, phi_n)

# 解密
m = pow(c, d, n)
flag = long_to_bytes(m)

print("Decrypted message:", flag.decode())

关键改动:

  1. **p****q** 转换为 **int** 类型:确保 pq 被转换为 int 类型,以便与 Crypto.Util.number.inverse 函数兼容。
  2. 确保 **phi_n****int** 类型:计算 phi_n 时也确保其类型为 int,避免不兼容问题。

说明:

  • 符号计算:我们使用 sympy 解方程,得到的解可能是 sympyInteger 类型,通过 int() 函数转换为标准的 Python int 类型。
  • 私钥计算:使用 Crypto.Util.number.inverse 计算私钥 d

请确保安装了 sympypycryptodomeCrypto 的库),可以通过以下命令进行安装:

bashpip install sympy pycryptodome

这样修改后的代码应该能够解决你遇到的错误。如果仍有问题,请提供更多细节。
image.png

Misc

[Week1] Base

image.png

[Week1] 喵喵太可爱了

image.png

[Week1] 签到!DK 盾!

image.png

[Week1] 海上遇到了鲨鱼

image.png
image.png
image.png
image.png

[Week1] 你也喜欢圣物吗

开局一个图片一张压缩包,压缩包加密了,所以从图片下手
image.png
010Editor打开,看文件尾,有一串Base64编码
image.png
或者kali直接用strings命令显示可打印字符,输入strings sweeeeeet.png发现了一串Base64编码RE9fWU9VX0tOT1dfRVpfTFNCPw==
image.png
解密意思是DO_YOU_KNOW_EZ_LSB?,那就是提示LSB隐写嘛。
image.png
可以用kalizsteg,也可以用stegpy等等LSB隐写的工具。
我直接zsteg sweeeeeet.png
获得key:lud1_lud1,这个就是压缩包解压密码
image.png
解压之后获得一个it is fake.zip压缩文件,里面有一个flag.txt
fake嘛,fake就是伪加密呗,根据伪加密的知识,光标这里就是加密区,把后面第二个14000900改成14000000即可
image.png
image.png
然后就可以解压了,√8的7z解压还是报需要密码,但是我换成bandzip来解压就可以了
image.png
这里还留个坑,下面的才是正确的flag
image.png
image.png
再Base64解密即可
image.png

[Week1] 正着看还是反着看呢?

image.png
根据题意百度Misc 逆序
image.png
文章内容有代码
image.png
运行脚本获得逆向后的文件
image.png
image.png
image.png
放到kalifile命令看看是什么文件,说是JPG,那就给它加上后缀名,获得一张美女图片
image.png
image.png
然后binwalk常规操作即可
image.png
image.png

[Week1] 根本进不去啊!

image.png
首先进行域名解析
image.png
image.png
然后将信息收集到的IP都添加到hosts文件里面,参考:CTF:BugkuCTF-web-域名解析_域名解析bugku题解-CSDN博客
image.png
然后就用dig
参考高校网络安全管理运维赛 Writeup - 星盟安全团队 (xmcve.com)
image.png
image.png
image.png
参考:linux网络命令:查询 DNS信息的命令 dig的使用和下载、安装说明_linux dig-CSDN博客
image.png
image.png

Re

[Week1] You are good at IDA

image.png

[Week1] UPX mini

image.png
image.png
image.png
参考博客:
CTF逆向-Upx脱壳攻防世界simple unpack_ctf upx-CSDN博客
image.png

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fab1an要努力~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值