Part1 前言
叒有一段时间没写文章了,正好周末有时间就来写写,本文来讲讲有关SQL注入相关的知识点会尽可能详细的写出来,比较适合刚入门安全的小白进行学习,希望能在面试或实战中助你一臂之力。如有大佬发现文中内容有错误的地方恳请斧正!也欢迎各位师傅共同交流学习技术!
Part2 了解SQL注入
SQL注入分类:
从注入参数类型分:数字型注入、字符型注入
从注入效果分:报错注入、布尔注入、延时注入、联合注入、堆叠注入、宽字节注入
从提交方式分:GET注入、POST注入、HTTP头注入、COOKIE注入
常见位置:
-
URL参数:攻击者可以在应用程序的URL参数中注入恶意SQL代码,例如在查询字符串或路径中。
-
表单输入:应用程序中的表单输入框,如用户名、密码、搜索框等,如果没有进行充分的输入验证和过滤,就可能成为SQL注入的目标。
-
Cookie:如果应用程序使用Cookie来存储用户信息或会话状态,攻击者可以通过修改Cookie中的值来进行SQL注入攻击。
-
HTTP头部:有些应用程序可能会从HTTP头部中获取数据,攻击者可以在HTTP头部中注入恶意SQL代码。
-
数据库查询语句:在应用程序中直接拼接SQL查询语句的地方,如果没有正确地对用户输入进行过滤和转义,就可能导致SQL注入漏洞。
-
还有各种实战过程中遇到过的存在SQL注入的参数,比如可控的表名列名、order by、desc等参数,在其他站点遇到相同参数时可以重点测试。
如何判断:
单双引号判断、and 1=1和 and 1=2判断、or和xor判断、exp(709)和exp(710)判断等等
具体使用可自行查询,测试中一定要注意闭合。
常用函数
Mysql
system_user() 系统用户名 |
user() 用户名 |
current_user() 当前用户名 | database() 数据库名 |
version() 数据库版本 |
@@verison 版本 |
load_file() 读取本地文件 |
ascii() 字符串的ASCII代码值 |
ord() 返回字符串第一个字符的ASCII值 |
mid() 截取函数 |
substr() 截取函数 |
length() 返回字符串的长度 |
left() 从左截取 |
right() 从右截取 |
extractvalue() 报错函数 |
updatexml() 报错函数 |
sleep() 延时函数 |
exp() 返回e的x次方 |
floor() 报错函数 |
hex() 转十六进制 |
注释:
#注释内容
,表示单行注释
2." -- 注释内容
" &#x