Curl的简单使用
curl (Client url)在大部分的使用场景下,基本充当的是一个下载工具的角色,比如:curl -v http://www.baidu.com, 表示下载百度页面,但其实深入了解后,会发现crul这个命令能做的事情可不仅仅只有下载。了解crul的各种参数后,他的作用完全可以和postman相媲美。而且他下载所下载的是源代码,是没有经过渲染的,可以看到更多的信息。在CTF中的信息收集中,curl也是常用的手段之一。
curl option参数用法
代码语言:javascript复制# 不加任何参数时表示get方式请勿服务器,服务器返回内容在命令行输出
curl www.bing.com
# -v:表示输出请求的详细过程,-A:表示设置请求头中的user-agent字段
curl -v -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36' http://www.baidu.com
# -b:表示设置请求头中的cookie信息,-X:表示请求服务器的方式为post方式,-d:也表示采用post发送给服务器
curl -b 'uid=abc123456' -X POST http://www.baidu.com
curl -d 'uname='liudongdong'&submit=1' http://www.baidu.com
# -k:跳过ssl检测,-e:表示设置请求头中的refer字段,-o:表示将请求内容保存到指定的位置
curl -k -e 'https://www.google' http://www.baidu.com -o /home/liudong/1.txt
# 关于请求头中head所有字段都可以使用 -H 来修改
curl -H 'Referer:127.0.0.1' http://www.baidu.com
curl -H 'Accept-Language: en-US' http://www.baidu.com
# -F:向服务器发送二进制文件,同时他还可以设置MIME类型
curl -F 'file=@1.jpg;type=image/jpg' http://www.baidu.com
# 获取我们自己电脑的网络的外网地址,还挺有趣的功能
curl ipecho.net/plain
# -u:设置用户的用户名&登录密码
curl -u 'liudong:12345' http://qq.ocm/login
# -x:表示指定http请求的代理,如:socket4,socker5等。-X:表示http请求的方法,如:get,post,put等
curl -x socket5 -X POST HTTPS://www.baidu.com
#--trace -:输出原始二进制请求的数据
curl --trace - http://www.baidu.com
CTF中的应用
网站的管理员或程序员在搭建网站的时候,通常会备份一下网站的源码,大概率会放在网站的目录下,比如:备份index.php,有可能会是以.bak结尾的文件(index.php.bak)或者是一些隐藏的文件(比如管理员在线使用vim编辑但出现异常退出,此时因为异常,vim编辑的内容会以缓存的形式依然存在,我们可以访问下载vim缓存的内容来收集信息。其缓存交换文件名一般为 .xxxx.php.swp, .xxxx.php.swo, .xxxx.php.swn,但常规的http请求方式无法访问下载该文件,这时候用curl就可以帮助我们解决这个问题。 还有就是当题目指出要特等的http提交方式是,比如ctfhub上指定提交方式为ctfhub,这时候直接用:curl -X ctfhub www.baidu.com ,直接拿到里面的flag。想要实战练习一下的话,可以去CTFHUB的web类的信息收集关卡挑战一下。会加深对curl的了解。
文章之外的小知识
.bak文件:.bak是备份文件,为文件格式扩展名,这类文件一般在.bak前面加上应该有原来的扩展名,将.bak文件恢复成源文件的方法是通过重命名把.bak后缀删掉就ok了。 .DS_Store:是macOS下生成的隐藏文件,主要作用是存储当前文件夹在桌面显示相关方面的一些自定义属性,包括文件图标的位置、文件夹上次打开时窗口的大小、展现形式和位置等。