永发信息网

网络怎么学习找漏洞。

答案:1  悬赏:30  手机版
解决时间 2021-03-31 20:16
玩电脑两年多了,想让我的电脑技术在提高一点,就是不知道从哪下手,网高手指教。
最佳答案
这是我在网上看到的,希望对楼住有所帮助一 如何寻找漏洞
  这个是大家最关心的。大家寻找漏洞只能寻找能读到源代码码的,没有源代码但有注入漏洞的系统只能猜,具有特殊性。网上很多主机用的是成品,它的系统源代码可以从网上下到。至于如何判断主机用的是哪个系统,就需要大家有一定的积累了。这也没法用语言描述,我举个简单的例子。
以动网6为例,看到某个论坛界面酷似动网,9成是动网论坛,再看看下面的版本就知道是动网6了。这个时候就可以去Chinaz下个动网6来读一下,不会ASP的就没办法了。当然漏洞早就公布,我只是告诉大家如何判断主机用哪个WEB系统。
  漏洞是如何被发现的呢?其实也没什么诀窍,主要是扎实的基础知识,要是连HTTP协议不懂,不会抓包,也别找漏洞了,找到也不会用,这样最好先补基础知识。有了基础知识,剩下的就是毅力和耐心。论能力,现在好多系统漏洞,张三找的到,李四也找的到。
  主要是看谁先找,谁下的工夫深。有的漏洞读一遍源码是找不到的。
  找漏洞的过程也是熟悉这个WEB系统的过程,首先要了解它的数据库结构,这是最基本的。接下来就得一个文件一个文件的读。先读不需要权限的。
  有的页面开头就来个SESSION判断,就算下面有漏洞都没用。
找漏洞的过程其实就是一个文件一个文件读的过程。下面以一个页面为例。  首先把握系统流程。所谓系统的流程就是系统到底如何执行。一般系统为 开头——中间——结尾 模式。开头一般是输出HTML中<HEAD></HEAD>之间内容,对我们找漏洞没有影响。
一般文件开头都会包含很多头文件,大家看了感到头晕,其实头文件都没什么用。主要是数据库连接文件,  全局配置文件,和函数库。我们大可不理会这些东西,再找漏洞时用到了回头再看也不迟。
但是函数库里面关于输入串过滤的函数要重点看一下。
  结尾是输出系统版权信息,有的用到SQL查询,不过这里用处也不大,我们可以很粗略的看一下。
中间部分是我们重点关注的地方。  其次重点关注输入变量。因为这些变量是我们控制的,没有外来输入变量也不用谈注入了。
大家要有这样一种概念,不管是GET,POST,还是COOKIE方法,只有是从用户提交的变量都可以由我们指定,我们想让它是多少就是多少。
  至于系统取得变量后做了什么过滤是另外一回事。
  在输入变量中要重点关注能参与SQL执行的变量,有的变量比如action或者page都是控制流程的,根本就没用,就算改了值也没什么意思。  再者就要深刻了解数据库了,没有对数据库全面的把握,很可能错失很多注入点,这也是高手和菜鸟最大的差别所在。
  我们常见的数据库有Access、Mysql和SQLServer,至少要对他们有很深的了解才能找出漏洞。二 分三个方面并举实例讲解注入点的寻找及利用
1 注入点很容易发现,利用也很简单
  这种漏洞相信已经很少了,除非程序作者根本就不关心程序的安全才会有此漏洞。以前经典的 ' or '1=1就属于此类
  典型的类似(模型,以下类同)
select * from tablename where user='request("user")',
select * from tablename where id=request("id")
  有的程序对这些变量做了过滤,但不全,也可以归结为这一类。
  相信这样的漏洞大家都能发现而且也很容易利用,更不用说防范了。这种漏洞容易找,也很少。我给大家截了几个有漏洞的图,是几个系统存在的类似漏洞。
图一
  动网某插件更改密码注入漏洞
图二
  某PHP插件ftpid 变量未过滤漏洞
2 注入点容易发现,但利用相对困难
  这种漏洞是注入需要很高技巧的,作者也基本不可能避免。
典型的类似 select * from tablename where user='FilterFunc(request("user"))'
select * from tablename where id=FilterFunc(request("id"))  也就是把输入的变量做了过滤,但未过滤全,有一线生机。尤其是没过滤引号。这种利用确实存在,大家不要看着简单。
  有个程序只过滤了空格,比如以前的BBSXP系统。尤其当用户提交的数据是用COOKIE的时候,作者更有恃无恐,做了简单的过滤。  首先谈如何防范,我给大家一个PHP例子。
function getRequestVariables()
{
foreach ($_POST as $postKey => $postValue)
{
global $$postKey;
$$postKey = filter(trim ($postValue)));
}
foreach ($_GET as $getKey => $getValue)
{
global $$getKey;
$$getKey = filter(trim($getValue)));

}
}  思想就是把所有的变量都用这个函数进行常规的提前过滤,不是所有符号都过滤,每个变量需要输入的数据不一样。做了过滤之后,可以在具体页面进行二次过滤,目的就是防止写程序时忘记过滤,有一次过滤使损失减到最少。
ASP也可以使用类似方法。
  前几天惊云下载系统 edti.asp文件就属于此类。既然注入点容易发现,那就要谈如何利用。
拿 select * from tablename where id=FilterFunc(request("id")) 为例,如果系统只过滤了单引号,和诸如"exec declare // -- ; "等,我们同样就可以猜测用户名密码(这些是建立在我们知道系统数据库结构的基础上).
  假如系统表名为 admin,用户字段为username,密码字段为password,那么我们可以构造以下查询(适合各种数据库,只是函数不一样)。  猜测用户名密码长度
select * from tablename where id=1 and (select count(*) from admin where id=1 and len(username)=1)=1
   以上ID=1是指定的,根据具体情况变化,如果注入上面的内容返回为真(再解释),说明ID为1的用户名为1,为假就继续猜,我想基本不会在20个长度以上(如果是,那个人太变态了)。密码同样方法。猜测字符也类似。
  MYSQL中情况有点不一样,因为MYSQL不支持子查询(5.0不清楚)。MYSQL要用下面的方法(系统得支持UNIOn,现在有很多系统支持):
select * from tablename where id=1111111 union select [字段匹配] from admin where id=1
  上面的字段匹配表示要和tablename的字段数目一致,MYSQL列类型检查非常送,有null即可完成匹配,上面的方法可以让系统暴露敏感信息。
比如
select a,b,c from tablename where id=1111111 union select null,username,null from admin where id=1  至于上面所提到的返回为真概念是想当广泛的。可以是服务器返回标志,如HTTP 500就是内部错误,还有根据页面的返回,这种类太多要自己体会。
3 注入点非常隐蔽,只要找到就能利用  这种漏洞就需要很深的功底和长期积累的技巧了。漏洞很少,但发现之后影响很广。前期动网USER-AGENT注入漏洞和BBSXP5.0sq1漏洞应该属于此类。
本人在这方面也只能起个抛砖引玉的作用. 本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/aspstu/archive/2005/01/11/249266.aspx
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
甘肃兰州到福建漳州坐火车路线!怎么走时间最
不锈钢网和不锈钢筛网有什么不一样
请问千叶莲是什么样子
电影挪威的森林那日本女主角叫什么,她有av过
看不见还想看见了还怕这是什么原因?
自己在家用的电竞显示器该怎么选呢?我主要就
pleaswriteyouranswer什么意思
除数78除以8约等于多少?
日产骐达后座位脚底下有水是什么情况
刚下树文玩核桃怎么办
怎样自学ERP软件
真空泵怎么修理,声音很大
奔驰GL和ML的区别
2020年青岛房价预测一下
no more me什么意思? 最近微博里一直有
推荐资讯
加入拍摄许可证上映许可证是总公司申请的,可
表格求大神!还有能力提升题! '常太息以
二十年前的超生现在可不可以追究?该向什么部
豪猪饲养国家给补助吗?
你这样是不对的 日语怎么说
《水浒传》中,洪太尉为什么一定要打开镇锁妖
惠普笔记本的系统恢复光盘怎么用
做了脸部蛋白线埋线第一天吃什么都疼
广西金融电子结算服务中心,资料什么都没有,
飞利浦42寸液晶电视42pff3055/t3和42pff5
GRE单词怎么复习呢?
对比一下哪一个压球机压辊更好一些?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?