sql注入测试(一)

简介
sql注入攻击包括数据库的输入或者浏览器(客户端)传输到web服务器的部分和完整的sql查询或者注入。一个成功的sql注入攻击可以从数据库读取敏感数据,修改数据库的数据(插入/更新/删除),在数据库上执行管理的操作。
sql注入攻击可以分为三大类:

  1. 内部:使用注入sql代码的相同的通道提取数据。这是最直接的一种攻击,检索到的数据直接显示在web页面中
  2. 外部:使用不同的通道检索数据(生成一个带有查询结果的电子邮件,发送给特定的测试人员)
  3. 推理或盲注:没有实际的传输数据,但是可以通过发送特定的请求并观察数据哭的结果行为来重构信息

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'

posted on   寂寞梧桐#  阅读(743)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示