第20关
POST交互方式下的cookie字段注入
第20关正确的回显页面如下图所示
从图中可以看出这一关是与cookie有关,正确的页面进入后,只有一个按钮Delete your cookie!
cookie是客户端记录的会话信息,session记录服务器端的会话信息,此时客户端已经记录了与服务器端交互的会话内容,由此可推断出,注入点在cookie字段。
1.交互方式为POST
2.注入点在cookie字段处,我们在其输入用户名和密码后,在浏览器保存cookie时,burp suite截取包,如下图所示
4.之后可用联合查询法,爆出其数据库名,表名,及其列名
第21关
POST交互方式下的cookie加密注入
第21关与第20关类似,注入点在cookie,区别在于其cookie为加密字段(BASE-64加密)
注:BASE-64不同应用场景有不同的变种
此时admin加密后为YWRtaW4=,但是此时cookie表示为YWRtaW4%3D,也是因为特殊字符’='的缘故
但是不影响其输出的结果
2.注入点cookie字段
3.闭合方式,此时测试闭合方式时必须加密,admin ’ and 1=1 # 加密后得到YWRtaW4nKSBhbmQgMT0xICM=,其闭合方式为’'闭合,
4.之后用联合查询法即可,但是查询语句也需BASE-64加密
第22关
POST交互方式下的的cookie加密注入
1.与第21关类似,都是POST交互方式,都是在cookie字段注入
2.与第21关不同的地方在于闭合方式的不同,第22关为""闭合
3.之后再用联合查询法时,查询语句必须BASE-64加密
admin’ and 1=1 # -> YWRtaW4gJyBhbmQgMT0xICM=
admin’ and 1=2 # -> YWRtaW4gJyBhbmQgMT0yICM=
admin’) and 1=1 # -> YWRtaW4nKSBhbmQgMT0xICM=
admin’) and 1=2 # -> YWRtaW4nKSBhbmQgMT0yICM=
admin" and 1=1 # -> YWRtaW4iIGFuZCAxPTEgIw==
admin" and 1=2 # -> YWRtaW4iIGFuZCAxPTIgIw==
第23关
GET交互方式下,过滤注释符
select * from users where id=’$id当前位置’ limit 0,1
在当前位置构造闭合
select * from users where id=’$id’ –+’ limit 0,1
但是其回显一致,此时也表明,and 之后的语句并没有执行,查看PHP源码,我们发现LESS-23中,过滤了’–‘与’#'注释符。
那么此时,既然注释符不能注释掉后面的闭合,我们可以在之后构造出闭合
select * from users where id=’$id’ and 1=1 --+ '
可变形为
select * from users where id=’$id’ and ‘1’='1’
3.测试显示位
我们在构造闭合后测试显示位,之后就可以使用联合查询法查询其数据库名,表名,以及列名、数据等。
第24关
构造特殊用户名
1.交互方式为POST,其登录页面如下
在web登录页面,我们可以发现有forgot your password?与New user click here?两个选项
(1).forgot your password按钮,点击后,弹到另一个页面,这个页面提示,“当忘记密码时就去攻击它”
(2).New user click here按钮,创建新用户,弹窗到创建用户页面
分析:
在一般情况下,我们不会知道其用户名和密码,此时我们不妨新创建一个用户先进入该系统,创建用户username:sql password:123
登录进入该系统后,提示需要重新修改密码,我们可以猜测到数据库SQL语句为:
UPDATE set ‘$new password’ where username=‘username’ and password='password’
我们在此可以创建一个名为sql’ #的用户,此时可以注释掉密码部分,由于用户名中的’#被后台识别,构造了闭合同时注释了username后面的部分,此时修改的就为sql用户的密码,而非sql’ #用户的密码。
UPDATE set ‘$new password’ where username=‘username’ '# and password='password’
同理当我们知道管理员用户名时,可以通过此方法来修改管理员密码,进入系统
第25关
GET交互方式下的,双写注入
1.通过WEB页面的回显,我们可以判断出交互方式为GET,如下图所示
页面回显中说明了,SQL语句中or和and两个连接词被过滤掉
过滤连接词,我们一般使用双写的方法:
比如:anandd、oorr这样在过滤之后剩下的刚好为连接词
2.测试闭合方式
用双写的方式来绕过过滤
/?id=1’ anandd 1=1 --+
/?id=1’ anandd 1=2 --+
测出闭合方式为单引号闭合
3.之后的查询用联合查询法就可以爆出库名,表名,列名以及数据,测试其列名时会用到连接词and,可以使用双写来绕过过滤。