sqli-labs11-22

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注入有更深的理解,所以不能偷懒。

文章作者: Mochazz
文章链接: https://mochazz.github.io/2017/11/05/sqli-labs11-22/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mochazz's blog