CNSS [Easy] ezhttp题解

CNSS [Easy] ezhttp

1.查看题目描述:
image-20230814101917413

这题考查的使http的请求,猜测可能是要对http的请求头的各个字段进行修改,则使用BP查看该网站的请求头

2.BP抓包该网站:
image-20230814102106081

查看响应的内容中,有提示:只接受CNSS请求,游览器一般的请求方式为GET和POST,这里只接受CNSS请求,说明要将GET改成CNSS:
image-20230814102241202

发现得到不同的响应结果:

1
只能在安卓微信内置浏览器中请求

User-Agent:User-Agent - HTTP | MDN (mozilla.org)

image-20230814102841034

语法:

1
User-Agent: <product> / <product-version> <comment>

浏览器通常使用的格式为:

1
User-Agent: Mozilla/<version> (<system-information>) <platform> (<platform-details>) <extensions>

指令:

1
2
3
4
5
6
7
8
<product>
产品识别码。

<product-version>
产品版本号。

<comment>
零个或多个关于组成产品信息的注释。

以火狐的UA为例:

image-20230814103215869

示例:

1
2
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0

所以UA是用于表示该网页内容通过什么浏览器和设备进行访问的

由题目提示得:只能在安卓微信内置浏览器中请求.

所以我们得构造一个UA让其变为安卓微信内置浏览器中请求:
payload(通用):

1
User-Agent: Mozilla/5.0 (Linux; Android 10; XXX Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 MicroMessenger/8.0.0.1920(0x2800004D) Process/appbrand2 WeChat/arm32

得到响应结果:

image-20230814103557930

得到提示:

1
只接受来自cnss.io的请求

Referer:Referer - HTTP | MDN (mozilla.org)

image-20230814104023049

image-20230814104054349

image-20230814104124465

所以该headers字段表示的是当前页面的是通过哪个源页面中的链接进行访问的,提示得只接受来自cnss.io的请求

说明需要设置该页面的源页面为cnss.io:
payload:

1
Referer:cnss.io

由于当前页面的headers中没有Referer字段所以需要手动添加该字段:

image-20230814104519850

得到提示:

1
只接受来自本机的请求

X-Forwarded-For:X-Forwarded-For - HTTP | MDN (mozilla.org)

image-20230814104909323

image-20230814105227509

实例:

1
2
3
4
5
6
7
X-Forwarded-For: 2001:db8:85a3:8d3:1319:8a2e:370:7348

X-Forwarded-For: 203.0.113.195

X-Forwarded-For: 203.0.113.195, 2001:db8:85a3:8d3:1319:8a2e:370:7348

X-Forwarded-For: 203.0.113.195,2001:db8:85a3:8d3:1319:8a2e:370:7348,150.172.238.178

由提示得只接受来自本机的请求,所以表示该页面的客户端IP地址需要是本机的IP地址即:127.0.0.1

所以可以伪造X-Forwarded-For的内容为本机地址:

payload:

1
X-Forwarded-For:127.0.0.1

响应结果:

image-20230814105841408

得到提示:

1
只接受内容类型为application/json的请求

Content-Type:
image-20230814110543771

所以由提示得浏览器的发送内容的类型为:application/json

payload:

1
Content-Type: application/json

响应结果:

image-20230814110832040

得到提示:

1
你倒是发个json过来啊

json数据:JSON数据格式详解 - 知乎 (zhihu.com):

基本形式:

1
2
3
4
5
6
7
8
9
{
"obj1":"value1",
"obj2":"123456",//数值也需要加引号
"obj3":{
//嵌套型
"obj4":"value2"
},
"obj5":"value3"
}

根据提示需要传送一个json数据,由于该游览器的请求为CNSS所以我们不知道该在哪里传输json数据,猜测该请求的传送数据格式和POST类似:

构造payload:

1
2
3
{
"hacker":"admin"
}

响应结果:

image-20230814111723058

得到提示:

1
能告诉我你的名字(name)吗?

由于headers中不存在name字段,所以该字段需要我们通过json进行传输:
payload:

1
2
3
{
"name":"admin"
}

响应结果:

image-20230814112529893

得到提示:

1
能告诉我你的密码(password)吗?

说明还需要传输一个password字段的值:

payload:

1
2
3
4
{
"name":"admin",
"password":"123456"
}

响应结果:

image-20230814112928181

根据提示我们需要在Cookie中写上name字段的值,保险起见与json中的内容一致:

Cookie:Cookie - HTTP | MDN (mozilla.org)

image-20230814113511260

语法:

1
2
3
Cookie: <cookie-list>
Cookie: name=value
Cookie: name=value; name2=value2; name3=value3

image-20230814113558180

payload:

1
Cookie:name="admin"

响应结果:

image-20230814113202256

根据提示需要在Cookie中添加password字段:

payload:

1
Cookie:name="admin";password="123456"

image-20230814113321059

BasicAuth认证秒懂HTTP基本认证(Basic Authentication) - 知乎 (zhihu.com)

image-20230814123944756

根据提示得我们需要进行BasicAuth认证,即认证我们输入的用户名和密码,需要添加Authorization字段:

admin:123456的base64格式为YWRtaW46MTIzNDU2

payload:

1
Authorization: Basic YWRtaW46MTIzNDU2

响应结果:

image-20230814124235654

flag = cnss{y0u_kn0w_h77p_r3qu3st_h4h4!}


CNSS [Easy] ezhttp题解
http://example.com/2023/09/25/2023-09-25-CNSS_ezhttp/
作者
South
发布于
2023年9月25日
许可协议