找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 183|回复: 0

Tinyhttpd精读解析

[复制链接]

2万

主题

128

回帖

10万

积分

管理员

积分
105860
发表于 2021-10-9 14:53:00 | 显示全部楼层 |阅读模式 IP:山东省 移动/数据上网公共出口

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 mind 于 2021-10-9 15:05 编辑

Tinyhttpd精读解析
https://github.com/nengm/Tinyhttpd

https://www.cnblogs.com/nengm1988/p/7816618.html

       首先,本人刚刚开始开源代码精读,写的不对的地方,大家轻拍,一起进步。本文是对Tinyhttpd的一次精读,大家每天都在用着http服务,很多人也一直活跃在上层,使用IIS、Apache等,大家是否想看看http服务器大概是怎么运作的,通过一个500多行的源码加上完整的注释,和大家逛一逛http服务器。Tinyhttpd真的非常适合阅读尤其是刚入门的,清晰的代码,简单的makefile...其实有很多分析tinyghttpd的,这边抱着人家写的是人家,自己写的才是自己的态度,写的尽量详细,尽量简单,很多都写在代码注释里面,也把学习中的一些坑翻出来和大家一起读读,吸取将近20年前的大神通过500行代码带给我们的财富。不管你是写c的,或者C#,js亦或java,只要用到http的都欢迎读读。
大家看后如果觉得我有写的不对的地方,欢迎指出~~

附上注解代码的github地址:

https://github.com/nengm/Tinyhttpd

1.首先是一张图 全解了Tinyhttp是如何运作的,我觉得图说明比我用文字描述的要清晰,语言功底不太给力。

0.png

2. 主要函数简略说明,代码中进行了详细注释。

main          主函数
startup         绑定监听套接字
accept_request     每次收到请求,创建一个线程来处理接受到的请求
serve_file      接读取文件返回给请求的http客户端
execute_cgi     执行cgi文件

3.注意点

注意点1:

index.html必须没有执行权限,否则看不到内容,并且会产生Program received signal SIGPIPE, Broken pipe,因为程序中如果有可执行权限会当cgi脚本处理。所以假如html有执行权限先把它去除了,chmod 600 index.html

color.cgi、date.cgi必须要有执行权限。

注意点2:

color.cgi是用perl写的,相信大家很少接触了。所以可以引用网上一个简单的例子,换成一个shell写的cgi测试



4.操作

1.执行make,生成成功,./httpd启动成功。

1.png

2.如果在当前linux下的firefox下执行。直接在浏览器中输入

2.png

3.在windows中测试,
3.png


4.测试执行自带的perl写的cgi脚本

4.png

5.进入index2.html页面,测试shell写的cgi脚本。
5.png
6.png

5.代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|IOTsec-Zone|在线工具|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-5-18 13:14

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表