Lession-11
这次练习的靶场是sqli-labs第7关,练习mysql的文件写入。我们的目的是将一句话木马
使用账号admin’#密码1发现可以成功登陆
猜一下字段数,为2
执行mysql函数
这一关payload与第一关是一样的,差别仅在于请求方式,所以这里参考第一关注入即可。
Lession-12
与Lession-11一样,只要把Lession-11中payload里的’(单引号)改成”)(双引号加右括号)即可
Lession-13、14
POST型双查询,登陆成功和登陆失败的返回信息不会显示出来,返回的图片是不一样的,但是图片对于我们的SQL攻击作用不大。所以我们可以使用双查询结合报错来实现SQL注入攻击,过程与第5关类似,可以参考这篇文章:Double SQL Injection(双查询注入)
Lession-15、16
POST型基于时间盲注,参考第9关
Lession-17
要想通过这关,我们需要先学习数据库基本的增删改查操作
Insert语句
Update语句
Delete语句
drop database 数据库名; 删除某个数据库
drop table 表名; 删除某个表
alter table 表名 drop column 列名; 删除某个表中的某一列
在了解了以上基本知识后,我们就可以开始这一关的注入了。首先,这一关的页面提供了用户修改密码的功能
使用报错注入
passwd=123’ and updatexml(1,concat(0x7e,(select @@version),0x7e),1)#(另一种报错注入)
使用延时盲注
这里如果查询失败,会执行sleep(1),但是实际并不会sleep一秒钟,而是会sleep十三秒,因为数据库中的username有13个
其余过程和之前的关卡类似。
Lession-18、19、20
这几关都属于HTTP头注入,第18关注入位置在User-Agent处,第19关注入位置在Referer处,第20关注入位置在Cookie处。开始之前,我们先来了解一些HTTP基础。
Accept: 浏览器能够处理的内容类型
Accept-Charset: 浏览器能够显示的字符集
Accept-Encoding:浏览器能够处理的压缩编码。
Accept-Language: 浏览器当前设置的语言。
Connection:浏览器与服务器之间连接的类型
Cookie:当前页面设置的任何Cookie
Host:发出请求的页面所在的域。
Referer:发出请求的页面的URI。
User-Agent:浏览器的用户代理字符串
Server: WEB 服务器表明自己是什么软件及版本等信息。例如:Server:Apache/2.0.61 (Unix)
下面是第18关的关键代码
$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
mysql_query($insert);
echo '<font color= "#0000ff" font size = 3 >';
echo 'Your User Agent is: ' .$uagent;
echo "</font>";
使用payload=’and extractvalue(1,concat(0x3c,(select @@version),0x3e)) and ‘1’=’1
Lession-21、22
可以发现cookie部分经过了base64加密,我们把第20关的payload使用base64编码后传输即可实现注入
第22关和21关一样,只是sql语句中单引号和双引号的区别
总结
完成sqli-labs1-22的关卡,可以使你快速了解常见的sql注入类型,这些关卡中的关键字通常没有进行过滤,因此比较简单,自己一定要对其中的某一关卡写一个自动化攻击脚本,因为这样能让你对SQL注入有更深的理解,所以不能偷懒。