前言:在打hg2023时这题只写出了第一部分,故在比赛结束后学习记录一下
题目描述:
1.1第一小问
该部分是通过发送http请求报文获得5种状态码,较为简单
1:202 202表示请求接受成功,直接发送默认的报文即可
GET / HTTP/1.1\r\n
Host: example.com\r\n\r\n
2: 404
想要获得404,需要我们请求一个不存在的文件,随便填个文件地址即可
GET / index.php HTTP/1.1\r\n
Host: example.com\r\n\r\n
这样就可以获得404了
3:400
触发400的方式是请求报文的格式错误
ddddd / HTTP/1.1\r\n
Host: example.com\r\n\r\n
所以随便打点什么东西即可
4:505
触发505的条件是http请求的版本号发生了错误,想要获得只需修改版本号即可
GET / HTTP/1.1.1.1.1\r\n
Host: example.com\r\n\r\n
比如这样
4:405
触发405的条件是请求方法不被允许,随便给一个请求方式即可,比如post
POST / HTTP/1.1\r\n
Host: example.com\r\n\r\n
这样就获得第一小问的flag
2.2第二小问
该部分是获得无状态码
通过搜索我们知道HTTP/0.9时是不使用状态码的,http协议在0.9版本时只能支持get请求,直接后面跟url,没有
别的东西,规范如下
GET / \r\n
当然你也可以在get后跟上你的url。在http0.9版本中,服务器域名直接和请求文件地址放在一起组成url,不像后
来的http版本那样需要写在Host中
这样就获得了第二个flag