sql注入测试(一)
简介
sql注入攻击包括数据库的输入或者浏览器(客户端)传输到web服务器的部分和完整的sql查询或者注入。一个成功的sql注入攻击可以从数据库读取敏感数据,修改数据库的数据(插入/更新/删除),在数据库上执行管理的操作。
sql注入攻击可以分为三大类:
- 内部:使用注入sql代码的相同的通道提取数据。这是最直接的一种攻击,检索到的数据直接显示在web页面中
- 外部:使用不同的通道检索数据(生成一个带有查询结果的电子邮件,发送给特定的测试人员)
- 推理或盲注:没有实际的传输数据,但是可以通过发送特定的请求并观察数据哭的结果行为来重构信息
sql注入常用的5种技术(这些技术也可以组合使用):
- 联合注入:SQL注入缺陷出现在select查询语句之中。
- 布尔注入:使用布尔条件来验证某些条件是真还是假。
- 报错注入:这种技术迫使数据库生成一个错误,更好的注入测试。
- 外部注入:使用不同的通道检索技术(建立http连接将结果发送到web服务器)
- 延迟注入:使用数据库的命令(sleep)延迟条件来查询答案。
测试
检测技术:了解程序何时与数据库进行交互访问一些数据
- 身份验证表单:当进行身份验证时会根据用户名和密码进行数据库检查
- 搜索引擎:用户提交字符串在数据库中进行sql查询
- 电子商务的网站:产品及其特性很可能会储存在数据库中
必须列出用于构建的sql查询的输入字段,包括post请求的隐藏字段,还可以考虑cookie和HTTP,来进行测试他们。
标准的注入测试:
例子1:select * from user where username='$username' and password='$password'
(闭合''')
$username=1' or '1'='1
$password=1' or '1'='1
select * from user where username='1' or '1'='1' and password='1' or '1'='1'
例子2:select * from user where((username='$username') and (password=MD5($password)))
(注释后面的')')
$username='1 or '1'='1'))/*
$password=foo
select * from where ((username='1' or '1'))/*) and (password=MD5('$password')))
简单的select语句查询:
select * from products where id_product=$id_product
请求:
http://www.example.com/product.php?id=10
在测试应用在这种场景中是否容易受到攻击的一个好方法是使用and和or处理逻辑
select * from products where id_product=$id_product and 1=2
http://www.example.com/product.php?id=10 and 1=2
http://www.example.com/product.php?id=10 and 1=1
堆叠查询:
select * from products where id_product=$id_product
http://www.example.com/product.php?id=10;insert into users(...)
数据库指纹:
即使sql语言是一个标准,每个数据库都有自己的特点,当我们转向高级的sql注入利用时,我们要知道后端数据库是什么
通过返回的错误来进行观察
mysql:you have an error in your SQL syntax;....mysql server version.....
oracle: ORA-00933:SQL command not properly ended
MS SQL Server:Microsoft SQL Native Client error...
PostgreSQL:Query failed: ERROR: syntax error at or near...
如果没有错误消息或者自定义消息,可以尝试使用连接技术注入字符串字段。
mysql:'test':'ing'
SQL Sevver:'test''ing'
Oracle:'test'||'ing'
PostgreSQL:'test'||'ing'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码