浅谈注入攻击及小结

前言

科三考试临近,眼看疲惫的练车时光就要结束,彩六也是打到手酸才突然想起要学习,回想起TSCTF那个卡了我半天(真的是半天,为什么我会去构造XSS)的注入题,于是我决定挤出了点时间研究下sql inject,在这里做下记录和小结。
疲惫

什么是注入?

注入(inject)攻击产生的本质原因是输入过滤机制的不完善,导致攻击者可以利用输入数据构造执行代码,从而造成信息泄露、数据损坏、服务宕机等一系列问题。由于注入(inject)攻击常常导致严重后果,进一步催生了`一切输入有害的重要安全思想。

注入如何产生?

个人认为注入攻击产生的本质是:当一段输入数据需要添加到另一端执行指令或代码中时,攻击者可以根据指令或代码的语法刻意构造一段输入数据,造成的输入数据作为指令执行的错误。

例如在PHP + MySQL平台下:

1
2
3
4
5
6
7
8
<?php 
$name = $_POST['name'];
$con = mysqli_connect("127.0.0.1","root","","test") or die("error");

$query = "SELECT * FROM person WHERE name='$name';";
$result = mysqli_query($con,$query);
while($row=mysqli_fetch_assoc($result))
echo $row['age'];

这是一个用户通过输入name从person表查询对应age的场景,但是代码中没有对输入变量$name进行任何检测和过滤,如果我们构造$name为1'or'1'='1,那么查询语句$query就会变成:"SELECT * FROM person WHERE name='1' or '1'='1';",然而该查询语句恒成立,意味着这样的输入将会爆出数据库person表中所有人的age,造成信息泄露。

在上面这个案例中,如果我们对$name或者$query进行过滤,比如将'"转义,或者字符处理掉=,那么上面构造的输入数据不会被执行。这只是一个最简单的案例,想了解和实践更多可以部署DVWA进行本地或者远程测试。

SQL注入

根据是否有直接反馈信息分为 普通注入 和 盲注,盲注往往要利用sleep()时间盲注或者利用ascii()进行布尔盲注。

大概流程是这样的:
1.注入POC
2.猜字段数
3.猜字段顺序
4.爆数据库名
5.爆表名
6.爆字段
7.脱裤

有些步骤根据实际情况可有可无的,爆库过程中需要用到information_schema,在这里我就不XJB说了,具体参考:
DVWA-1.9全级别教程之SQL Injection
DVWA-1.9全级别教程之SQL Injection(Blind)

SQL注入绕过

我参考文章做了一些本地测试,记录了一些可能常用的绕过方法,环境为lamp,以下就算是是笔记了,一开简单记录,后面有时间会细化。

  1. 空格:/**/ %a0 ()
  2. '引号:hex() urlencode()
  3. =等号:like rlike regexp
  4. <>比较符:greatest() least() strcmp() in between
  5. ,逗号:substr()mid()from to代替,limitoffset
  6. 其他绕过: 大小写、字符嵌套、内联注释等
    还有一个没看懂的先mark:一些报错注入

宽字节注入
这个注入方式比较特殊,有两个产生条件。

  • 涉及到gbk编码 (iconv等含有编码转化功能的函数)
  • 涉及到转义\(魔术引号、addslashes、htmlspecialchars)

原理大概是,正常字符为2字节,汉字字符为4字节,在gbk的编码环境下可以%df\这样的字符,应为\的编码是%5c,结合起来为%df%5c,解码结果为汉字,从而绕过了\的转义消毒。
注:gbk2312应不存在低位范围无法进行宽字节注入,具体参考这里

后续会慢慢添加实例帮助理解和实践。

参考:
SQL注入绕过技巧
sql关键词绕过【积累中】

小结

无论是XSS、sqli还是commandi,只要有输入数据添加到指令的场景,就有注入攻击发生的风险,开发者也在努力寻找通用性解决方案。
PHP和python中不正确的使用system() exec()等函数会导致命令注入,前段不对js代码进行过滤会导致XSS,windows平台还有dll注入(不明觉厉),感觉都很刺激啊。
PHP5.4后使用的PDO技术和Mysqli几乎已经杜绝了sql注入,其他平台的防御策略也越来越完善,所以sql在实际渗透环境中可能作用并不大,但是这种思想还是很有意思的。

我也很绝望啊
吐槽几句,贵阳这天气是魔鬼吗,阳光直射出门半小时后大暴雨,学车能遇到军事行动,四妹又在发情期,真是每天都有新乐趣hhhh

`