首页
社区
课程
招聘
未解决 [悬赏]Hook WSASend实现网址跳转的功能。 50.00雪花
发表于: 2017-10-20 16:30 6619

未解决 [悬赏]Hook WSASend实现网址跳转的功能。 50.00雪花

2017-10-20 16:30
6619
各位大牛,我现在Hook住了WSASend函数,在lpBuffers数组中获取到了发包的数据,如:
GET /abc.htm HTTP/1.1
Host: sina.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
然后我将这些数据里面的网址改为我想要跳转的网址,比如上面的数据,我只是将第一行和第二行改为新的数据,如改为:
GET /index.htm HTTP/1.1
Host: baidu.com
后面的数据保持不变。
也就是我希望在访问sina.com/abc.htm时,自动跳转到baidu.com/index.htm,当然baidu.com/index.htm这个网址是确认存在的(在我程序中实际跳转到的不是这个网址)。
并且我将lpBuffers数组中对应元素的len改为了新的长度。但是我实际测试时却发现并不会跳转,而只是打开了一个页面,上面就一行字母,内容为pageok,并没有跳转到我想要的网页上去,请问这是什么原因呢?

另外如果我在代码中修改一下,只是将访问sina.com/abc.htm跳转到sina.com/123.htm时,发现是能够正常跳转的,也就是域名不变,并且访问的网址的长度也不变的情况下,是可以跳转的。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (19)
雪    币: 7885
活跃值: (2285)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我觉得:WSASend时,程序已经连接sina.com主机了吧,此时无论你怎么修改WSASend,数据都是往sina.com主机发送的。
因此重点是,你要HOOK连接的地方。
2017-10-20 23:09
0
雪    币: 3710
活跃值: (2669)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
3
lz的操作属于跨域访问了,不允许的吧,不知道有没有特殊方法绕过
2017-10-20 23:23
0
雪    币: 1304
活跃值: (741)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
你就没想过hook  WSArecv吗
2017-10-21 08:42
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
地址是在WSA初始化中使用的,send已经在过程中了。
2017-10-21 08:47
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
其实你这个办法有点鸡肋。不如HOOK  Wininet的Internet*函数,向返回的Buffer里注射JavaScript,然后在JavaScript里实现网址跳转.
2017-10-21 09:38
0
雪    币: 234
活跃值: (296)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢楼上几位的回复,但感觉都没太说到点子上啊。
2017-10-21 11:16
0
雪    币: 145
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
1L  +  3L    合起来就对了  5L 也对, 没毛病
2017-10-21 11:38
0
雪    币: 1157
活跃值: (847)
能力值: ( LV8,RANK:150 )
在线值:
发帖
回帖
粉丝
9
6楼的听起来靠谱,直接重定向到本地到一个页面,然后在页面里面用JS就可以随心所欲的控制
2017-10-21 11:56
0
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
WSASend的目标是新浪的服务器,  你往新浪服务器发什么报文都不可能随意跳到其它站的,  除非目标是个代理服务器
2017-10-21 15:05
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
11
rrrfff WSASend的目标是新浪的服务器, 你往新浪服务器发什么报文都不可能随意跳到其它站的, 除非目标是个代理服务器
从sina到baidu...这个跨度惊悚。TCP都连上了,跳什么。
Hook  Recv路径还有希望
2017-10-21 16:09
0
雪    币: 312
活跃值: (123)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
修复wsprecv相关的函数成http  302. 
2017-10-21 17:55
0
雪    币: 234
活跃值: (296)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
感谢各位的回复,但是我还是不知道该怎么弄。
至于hook  WSARecv和recv函数的话,其实我已经都hook了,并把拦截到的数据都保存到了一个log文件中,通过查看log文件,我发现这两个函数里面并没有网址信息,并且更神奇的是,这两个函数中都没有网页内容的数据,也就是并没有<html><title>....</title>....这些网页的源文件信息,我都不知道浏览器是通过哪个函数来获取到这些网页源文件内容的。
2017-10-22 20:36
0
雪    币: 3710
活跃值: (2669)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
14
xiaokaige 感谢各位的回复,但是我还是不知道该怎么弄。 至于hook WSARecv和recv函数的话,其实我已经都hook了,并把拦截到的数据都保存到了一个log文件中,通过查看log文件,我发现这两个函数里 ...
你不如说说想做什么工具,大家给你点思路,可能未必要按你现在的想法去实现
2017-10-23 12:59
0
雪    币: 775
活跃值: (3420)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
15
friendanx 我觉得:WSASend时,程序已经连接sina.com主机了吧,此时无论你怎么修改WSASend,数据都是往sina.com主机发送的。 因此重点是,你要HOOK连接的地方。
连接的地方是connect吧?解析DNS的地方应该也可以?
2017-10-23 13:41
0
雪    币: 159
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
1.关于楼主方案中存在的问题,2楼,5楼已经说明白了,就是TCP连接已经建立了,你修改HTTP中的数据是没有用的!
2.关于楼主的问题,比较靠谱的是DNS劫持,具体研究一下Windows的dnsapi.dll吧!
2017-10-23 23:40
0
雪    币: 234
活跃值: (296)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
yegu 你不如说说想做什么工具,大家给你点思路,可能未必要按你现在的想法去实现
我想限制电脑,不允许访问一些用户设定的网站(如黄色网站,炒股网站等)。
2017-10-25 10:40
0
雪    币: 3710
活跃值: (2669)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
18
xiaokaige 我想限制电脑,不允许访问一些用户设定的网站(如黄色网站,炒股网站等)。
应该有很多类似的软件,你直接修改HOOK到的内容,让其访问出错也行吧。
2017-10-25 12:07
0
雪    币: 312
活跃值: (123)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
19
楼主可以在路由器限制域名
2017-10-25 12:33
0
雪    币: 180
活跃值: (80)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
20
Hook  Connect,解析sina.com的IP.
Connect時檢查如果是sina.com的IP,轉移到自己本地服務器,服務器上檢查URL,命中時返回302到百度
2017-10-28 18:13
0
游客
登录 | 注册 方可回帖
返回
//