在经过书本学习和视频学习后,再结合靶场实操,我将对注入攻击进行一个简单的总结,将从注入原理,攻击方式,常见的sql函数,关键字,sql绕过,注入作用,以及sql的加固这几个方面进行阐述。
注入攻击原理:利用应用程序或系统没有对用户输入的数据进行足够严格的检查和过滤,从而使攻击者可以向目标系统中注入恶意的代码或命令。
SQL注入原理:利用web应用程序对用户输入数据的信任,攻击者通过构造特殊的sql语句,将恶意代码或命令注入到应用程序中,并执行这些代码或命令。
在pikachu靶场中的,搜索型注入中输入' 将会报错。
但是,在搜索框中输入%‘#,将会返回该表中的所有数据。
该原理就是%进行了模糊查询,'进行了搜索闭合,#注释掉了后面的字符,从而可以查询到该数据表中 的所有数据。
SQL注入的攻击方式:
1.基于报错的SQL注入:攻击者通过提交恶意代码时故意构造错误的sql语句,从而引发服务 器返回错误信息。
2.基于盲注的SQL注入:攻击者无法直接获取服务器敏感信息,但可以通过简单的布尔逻辑 判断。(布尔类型)
3.基于时间的SQL盲注:攻击者提交恶意代码时,通过构造需要耗费时间的SQL语句,从而 获取敏感信息(常见sleep())。
4.基于联合查询的SQL注入:攻击者利用Union操作符将多个SQL语句合并为一个结果集,从 而获取服务器敏感数据。
5.基于堆的查询注入:用;'分割开多条语句,可同时执行多条语句。
4和5的区别:Union/Union all执行的语句有限,可以用来执行查询语句,而堆叠注入可以执 行任意语句。
常见的SQL函数:database()数据库,user()用户名,version()数据库版本,sleep()休眠时 间,floor()向下取整,ceil()向上取整,substr()截图字符串,count()统计数 量,limit()限制查询结果。
常见的SQL关键字:select,where,order,union,update,floor,exec,insert,from等
SQL绕过:1.注释符号绕过,2.大小写绕过,3.特殊编码绕过,4.过滤or and xor not 绕过
SQL注入的作用:1.绕错登录验证,2.获取敏感数据,3.进行文件系统操作,4.注册表操作, 5.执行系统命令
SQL的加固与防御:1.对输入字符进行过滤
2.使用预编译语句处理