php做二手商城网站源码,网站seo优化总结,漳州建设银行网站,微信公众号图文模板免费下载进入题目环境#xff0c;有输入框与注入参数#xff0c;推测类型为SQL注入#xff1a; 测试--注入类型为数字型还是字符型#xff0c;构造payload#xff1a;?inject1 or 12 并提交#xff1a; 发现页面依然正常#xff0c;说明注入类型为字符型#xff0c;则继续检查…进入题目环境有输入框与注入参数推测类型为SQL注入 测试--注入类型为数字型还是字符型构造payload?inject1 or 12 并提交 发现页面依然正常说明注入类型为字符型则继续检查闭合方式首先尝试单引号闭合构造payload ?inject1 -- 证实了闭合方式为单引号继续测试字段数目order by / group by 经测试字段数目为2。接着开始注数据库名表名等关键信息
首先尝试Union联合注入---构造payload: ?inject1 union select database()提交页面如下 页面回显提示我们后端代码对注入点inject提交的内容进行了过滤将 select、where等一系列关键字进行了过滤并无视大小写阻止了 大小写绕过 等绕过方法。所以Union联合注入不可行。
同时观察到 show、from 等一些堆叠注入关键词没有被过滤故尝试堆叠注入构造payload?inject1;show databases; -- 提交页面如下 发现回显数据库信息证实堆叠注入可行。继续注表名构造payload?inject1;show tables --提交页面如下 发现两张表分别查看这两张表中的列名构造payload?inject1;show columns from 表名; --提交页面如下 首先查看表 words发现列名分别为 id 和 data猜测表words可能为默认查询的表构造payload?inject1or 11 #进行验证 观察到回显内容格式均为 id data 的格式证实表 words 为默认查询的表。
继续查询 表1919810931114514中的列构造相同payload?inject1;show columns from 1919810931114514; #提交查询页面如下 发现 flag 存储在这张表中于是尝试获取flag。 表名是纯数字时要用反引号框住否则查询无效 这是因为在标准 SQL 中表名以纯数字开头时会被解释为数字而不是作为表名。在 MySQL 中反引号用于将标识符括起来以允许使用特殊字符或保留字作为标识符同时避免歧义。 我们有两种方法来获取flag
方法一
已知表 words 为查询的默认表则可以利用 rename 关键字将 表word改名为words并将表 1919810931114514改名为 word这样默认查询的表就变成了原先的 表1919810931114514并将列 flag 改为 id这样进行查询则可得到 flag 的值
payload: ?inject1;rename words to words1;rename 1919810931114514 to words;alter table words change flag id varchar(100); #
提交页面如下 使用 payload : ?inject1 or 11 # 查询默认的表查询到flag值。