【软件安全】cwe-89 SQL Injection(一)

NO.1

ID:CWE-89

Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')


SQL注入攻击

    SQL Injection:在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

    具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

    所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

    首先,在以【.asp?id=32(数字任意)】结尾的链接依次添加语句【'】、【and 1=1】和【and 1=2】,来判断网站是否存在注入点。

    然后,添加语句【and exists(select * from admin)】,根据页面返回结果来猜解表名。

    再次,添加语句【and exists(select admin from admin)】,来猜解admin表中的列名admin

    最后,添加语句【and (select top 1 len (admin) from admin)>1】,来猜解字段长度;添加【and (select top 1 asc(mid(admin,1,1)) from admin)>97】,来猜解字段中字符的ASCII码。

   通过以上四个步骤,反复猜解,即可得到数据库存储的用户名和密码。

由于没能找到存在sql注入漏洞的网站,谨将网络安全实验平台下的操作及截图附上)

   实验步骤:

一、找到有注入漏洞的目标网站

1.1目标站点:【http:// 192.168.1.3:8008,随便选择一个链接【`http://192.168.1.3:8008/onews.asp?id=45`】。

1.2测试链接,在链接末尾添加【'】。

1.3在链接末尾添加【 and 1=1】。

1.4在链接末尾添加【and 1=2】,返回页面显示该网站存在注入漏洞。

二、猜解表名

2.1在链接末尾添加语句【and exists(select * from admin)】,页面正常显示,说明存在表名【admin】。

三、猜解列名

3.1在连接末尾添加语句【and exists(select admin from admin)】,页面显示正常,即在表中存在admin列。

3.2同样的方法,在链接末尾添加【and exists(select password from admin)】,页面显示正常,说明存在列password

四、猜测字段内容

4.1猜测字段的长度,在连接末尾输入语句【and (select top 1 len (admin) from admin)>1】,页面显示正常,数字依次加1,进行测试,如【and (select top 1 len (admin) from admin)>5】,说明字段长度为5

4.2同样的方法,在链接末尾添加连接【and (select top 1 asc(mid(admin,1,1)) from admin)>97】,可猜解出第一条记录的第一位字符的ASCII码为97,对应a

4.3同样的方法可以得到admin字段内容为【admin】,password字段内容为【bfpms】。


最后,欢迎大家到我的个人主页点击打开链接一起交流、学习~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值