Talking Web

news2025/2/23 2:07:07

1. curl

1.1 http

curl http://127.0.0.1:80

向目标主机端口发送http请求

1.2 http+head

curl -H “Host: 18ed3df584cd48328b5839443aa7b42b” http://127.0.0.1:80

1.3 http+path

curl http://127.0.0.1:80/853c64cd218f80d0a59665666fb2ab80

1.4 URL编码路径

(空格转义%20)

curl http://127.0.0.1:80/82cb7091**%20f70a467f/9fcaf321%20**61dff81f

1.5 get传参(略)

1.6 gets多参传递+URL转义符集合

联想截图_20240325220356.png

1.7 post传参

curl -X POST http://example.com/api -d “param1=value1&param2=value2”

curl -X POST http://127.0.0.1:80 -d “a=63fd067f4bff285ea2cbd48f68e9f70b”

多个参数用 & 隔开

1.8 post多参+URL转义符【略】

1.9 JSON请求

要使用curl发送满足要求的HTTP POST请求,包括指定Content-Type为’application/json’并且请求主体是一个JSON对象,可以按照以下方式进行:

curl -X POST http://127.0.0.1:80 \
-H "Content-Type: application/json" \
-d '{"a": "a2058cfa996ff89a3c9a9ae03f9452b3}'
# 下面的JSON 数据被双引号包裹,并且内部的双引号进行了转义。这样可以确保服务器能够正确解析JSON 数据
-d "{\"a\": \"a2058cfa996ff89a3c9a9ae03f9452b3\"}"

服务器端无法正确解析单引号包裹的JSON数据所致。在这种情况下,你可以尝试使用双引号来包裹JSON 数据,并在需要转义双引号的地方进行适当的转义。

在这个命令中:

  • -X POST 表示使用POST方法发送请求。
  • -H "Content-Type: application/json" 指定请求头中的Content-Type为’application/json’。
  • -d '{"a": "a2058cfa996ff89a3c9a9ae03f9452b3}' 表示要发送的JSON格式数据,其中包含一个名为a,值为a2058cfa996ff89a3c9a9ae03f9452b3的键值对。

通过这个curl命令,你可以发送满足要求的HTTP POST请求,包括指定了Content-Type为’application/json’并且请求主体是一个JSON对象。

1.10 多个JSON请求

curl -X POST http://127.0.0.1:80 \
-H "Content-Type: application/json" \
-d '{
    "a": "4827710bb4f1f050ec59637ee395a687",
    "b": {
        "c": "ee810713",
        "d": ["7d64256a", "deea38fe b3ce496e&619ead70#c62d1f56"]
    }
}'

1.11 目标地址重定向

要使用curl发送能够自动重定向的HTTP请求,你可以通过使用-c参数来实现。以下是详细的步骤:

  1. 使用curl命令发送HTTP请求,并允许自动重定向。示例命令如下:
curl -L http://127.0.0.1/http://127.0.0.1   【new_url】

在这个命令中,-L参数告诉curl在遇到重定向时继续跟随重定向。确保替换http://example.com/original_url为实际的原始URL。

  1. 如果你想保存重定向后的结果到文件中,可以使用-o参数。示例命令如下:
curl -L -o output.txt http://example.com/original_url

这个命令会将重定向后的结果保存到output.txt文件中。同样,确保替换http://example.com/original_url为实际的原始URL。
通过以上curl命令,你可以发送能够自动重定向的HTTP请求,并获取重定向后的结果。

1.12 重定向+cookie

通关:

curl -v -H 'Cookie: cookie=6fd6429d2031ea12836e4bd6fba11204' localhost
# (cookie在服务端获取,然后修改再次发送)
                    or
curl -L --cookie /tmp/cookie localhost              # 直接得到flag

杂谈:

使用curl发送HTTP请求并添加Cookie可以通过-b--cookie选项来实现。下面是详细的说明:

  1. 使用单个Cookie
    如果你只需要添加一个Cookie,可以使用-b--cookie选项,后面跟上Cookie的键值对。例如:
curl -b "cookie_name=cookie_value" http://example.com
  1. 使用多个Cookie

如果你需要添加多个Cookie,可以将多个键值对用分号分隔,然后作为一个整体传递给-b选项。例如:

curl -b "cookie1_name=cookie1_value; cookie2_name=cookie2_value" http://example.com
  1. 从文件中读取Cookie

如果你有一个包含Cookie的文本文件,你可以使用-b选项并指定文件路径来读取Cookie。例如,假设cookies.txt包含Cookie信息:

curl -b cookies.txt http://example.com
  1. 设置Cookie

如果你需要在请求中设置Cookie,可以使用-c--cookie-jar选项来保存服务器返回的Cookie。例如:

curl -c cookies.txt http://example.com

这样,你可以使用curl命令发送HTTP请求并添加Cookie。记得根据你的具体需求选择合适的选项来处理Cookie。

1.13 发出多个请求

curl -v -H 'Cookie: session=eyJzdGF0ZSI6MX0.ZIdjyA.Il0n0-3Dc92AGqznlmke0NUGbSM' localhost

curl -v -H 'Cookie: session=eyJzdGF0ZSI6Mn0.ZIdj-g.xNEcHHpWLkuTjDyiyMlOkpJlhHc' localhost

curl -v -H 'Cookie: session=eyJzdGF0ZSI6M30.ZIdkLw.GAPUeUh0rrxafcjsCri18TI506o' localhost

curl -L --cookie /tmp/cookie localhost

2. nc

2.1 http

echo -e “GET / HTTP/1.1\nHost: 127.0.0.1\n\n” | nc 127.0.0.1 80

向目标主机端口发送http请求

2.2 http+head

echo -e “GET / HTTP/1.1\nHost: b1ed1fd1d66462968551d7b54f849fb7\n\n” | nc 127.0.0.1 80

hacker@talking-web~level5:/challenge$ echo -e "GET / HTTP/1.1\nHost: b1ed1fd1d66462968551d7b54f849fb7\n\n" | nc 127.0.0.1 80
HTTP/1.1 200 OK
Server: Werkzeug/3.0.1 Python/3.8.10
Date: Fri, 22 Mar 2024 16:52:40 GMT
Content-Length: 58
Server: pwn.college
Connection: close

pwn.college{gC3ahWYU5mOWiX-HjMXNm43aMyg.dJzNyMDLwYTM2QzW}

2.3 http+path

echo -e “GET /60f5e17a50a4dcd970df6b2e65f005d0 HTTP/1.1\n\n” | nc 127.0.0.1 80

hacker@talking-web~level8:/challenge$ echo -e "GET /60f5e17a50a4dcd970df6b2e65f005d0 HTTP/1.1\n\n" | nc 127.0.0.1 80
HTTP/1.1 200 OK
Server: Werkzeug/3.0.1 Python/3.8.10
Date: Fri, 22 Mar 2024 17:01:58 GMT
Content-Length: 58
Server: pwn.college
Connection: close

2.4 URL编码路径

空格转义%20

echo -e “GET /69083c2d%20528d9e1c/08799ad8%202f6a1ceb HTTP/1.1\n\n” | nc 127.0.0.1 80

2.5 get传参

echo -e “GET /path/to/resource?param1=value1&param2=value2 HTTP/1.1\r\nHost: example.com\r\n\r\n” | nc example.com 80

echo -e "GET /?a=f3cc3f27f532ccdc94c199bfdfa730fc HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n" | nc 127.0.0.1 80

2.6 gets多参传递+URL转义符集合

联想截图_20240325220356.png

2.7 post传参

使用nc(netcat)命令发送POST请求并传递参数比较复杂,因为nc本身并不提供HTTP协议的支持。但是,你可以手动构建一个HTTP POST请求并使用nc发送。以下是一个示例:

DATA="param1=value1&param2=value2"
LENGTH=$(echo -n $DATA | wc -c)

{
  echo "POST /api HTTP/1.1"
  echo "Host: example.com"
  echo "Content-Type: application/x-www-form-urlencoded"
  echo "Content-Length: $LENGTH"
  echo ""
  echo $DATA
} | nc example.com 80

在这个示例中:

  • DATA 变量包含要发送的参数数据。
  • LENGTH 变量计算参数数据的长度。
  • 然后,使用大括号 {} 来组合HTTP请求的各个部分,包括请求行、头部和主体。
  • 最后,通过管道将构建的HTTP请求发送到目标服务器。

请注意,这种方法相对复杂且容易出错,推荐使用更专门的工具(如curl)来发送带有参数的POST请求。

联想截图_20240325222023.png

2.8 post多参+URL转义符【略】

2.9 JSON请求

通关:

/$ nc localhost 80
POST / HTTP/1.1
Content-Type: application/json
Content-Length: 41

{"a": "53313aa20b8e449ead12861551d51ddf"}

杂谈:

要使用nc命令发送符合要求的HTTP POST请求,包括Content-Type为application/json和JSON格式的请求主体,你可以按照以下步骤进行:

  1. 构建HTTP请求
  • 构建HTTP POST请求,包括请求头和请求主体。请求主体是一个JSON对象,包含一个名为a的键和值为53313aa20b8e449ead12861551d51ddf的对。
  1. 使用nc发送请求
  • 使用nc命令连接到目标服务器的HTTP端口,并手动构建HTTP POST请求。以下是一个示例:
echo -e "POST / HTTP/1.1\r\nHost: example.com\r\nContent-Type: application/json\r\nContent-Length: <length>\r\n\r\n{\"a\": \"53313aa20b8e449ead12861551d51ddf\"}" | nc <server_ip> <port>

请将<server_ip>替换为目标服务器的IP地址,<port>替换为目标服务器的端口号,并确保替换<length>为实际请求主体的长度。然后运行上述命令即可发送符合要求的HTTP

echo -e "POST / HTTP/1.1\r\nHost: 127.0.0.1:80\r\nContent-Type: application/json\r\nContent-Length: 39\r\n\r\n{\"a\": \"53313aa20b8e449ead12861551d51ddf\"}" | nc 127.0.0.1 80

2.10 多个JSON请求【⭐】

解析:

要使用nc(netcat)命令来发送一个HTTP请求,你需要构建一个有效的HTTP POST请求,其中包含正确的头部和JSON主体。下面是一个基于你给出的要求的示例命令:

echo -e "POST / HTTP/1.1\r\nHost: 127.0.0.1\r\nContent-Type: application/json\r\nContent-Length: <your_content_length>\r\n\r\n{\"a\":\"22128d91815c9485b2d9593513694301\",\"b\":{\"c\":\"a817fbb0\",\"d\":[\"656b4721\",\"721c816e 352a1731&e1f09370#9786b4c1\"]}}" | nc 127.0.0.1 80

注意:

  1. <your_content_length>需要替换为JSON主体内容的实际长度。你可以使用echo -n “your_json_string” | wc -c来得到这个长度。
  2. 这个命令使用echo -e来发送多行字符串,并使用管道|将字符串传递给nc命令。
  3. HTTP请求的/表示你正在请求根路径。如果你的flag位于其他路径,请相应地更改它。
  4. 确保nc命令已安装在你的系统上,并且你有权限执行它。

首先,你可以使用以下命令来计算JSON主体的长度:

json_string='{"a":"22128d91815c9485b2d9593513694301","b":{"c":"a817fbb0","d":["656b4721","721c816e 352a1731&e1f09370#9786b4c1"]}}'
content_length=$(echo -n "$json_string" | wc -c)

然后,使用上面计算出的content_length来发送HTTP请求:

echo -e "POST / HTTP/1.1\r\nHost: 127.0.0.1\r\nContent-Type: application/json\r\nContent-Length: $content_length\r\n\r\n$json_string" | nc 127.0.0.1 80

这个命令会向127.0.0.1的80端口发送一个HTTP POST请求,其中包含了你指定的JSON主体。
通关:

hacker@talking-web~level29:~/Desktop$ sh
$ json_string='{"a":"22128d91815c9485b2d9593513694301","b":{"c":"a817fbb0","d":["656b4721","721c816e 352a1731&e1f09370#9786b4c1"]}}'
$ content_length=$(echo -n "$json_string" | wc -c)
$ echo -n "$json_string"
{"a":"22128d91815c9485b2d9593513694301","b":{"c":"a817fbb0","d":["656b4721","721c816e 352a1731&e1f09370#9786b4c1"]}}$ echo -n "$content_length"
116   $ ^C
$ exit
echo -e "POST / HTTP/1.1\r\nHost: 127.0.0.1\r\nContent-Type: application/json\r\nContent-Length: 116\r\n\r\n{\"a\":\"22128d91815c9485b2d9593513694301\",\"b\":{\"c\":\"a817fbb0\",\"d\":[\"656b4721\",\"721c816e 352a1731&e1f09370#9786b4c1\"]}}" | nc 127.0.0.1 80

2.11 目标地址重定向 【⭐】

解析:
要使用nc(netcat)命令向127.0.0.1的80端口发送HTTP请求并获取重定向后的“flag”,您需要发送一个HTTP请求,并解析服务器返回的重定向响应。由于nc不支持自动重定向,您必须手动处理这一过程。
下面是一个步骤指南,用于完成此挑战:

  1. 发送HTTP GET请求: 首先,使用nc命令发送一个HTTP GET请求到服务器的根路径(/)。
echo -e "GET / HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n" | nc 127.0.0.1 80
  1. 解析重定向响应: 服务器将返回一个HTTP响应,其中可能包含一个Location头,指示重定向的URL。您需要从这个响应中提取出Location头的值。
# 发送请求并保存响应
RESPONSE=$(echo -e "GET / HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n" | nc 127.0.0.1 80)

# 提取Location头的值
LOCATION=$(echo "$RESPONSE" | grep -oP 'Location: \K[^ ]+')
  1. 发送重定向请求: 一旦您有了重定向的URL(即Location头的值),您可以发送另一个HTTP GET请求到这个URL。
# 如果LOCATION不为空,则发送重定向请求
if [ -n "$LOCATION" ]; then
    echo -e "GET $LOCATION HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n" | nc 127.0.0.1 80
else
    echo "No redirect found in the response."
fi
  1. 处理重定向响应: 这次,服务器将返回最终的“flag”。您需要查看这个响应的内容。
# 保存重定向响应
REDIRECT_RESPONSE=$(echo -e "GET $LOCATION HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n" | nc 127.0.0.1 80)

# 打印重定向响应的内容
echo "$REDIRECT_RESPONSE"

请注意,这个脚本假设重定向URL不包含空格或其他特殊字符,并且重定向是通过标准的Location头实现的。如果重定向逻辑更复杂,或者重定向URL包含特殊字符,您可能需要调整脚本来适应这些情况。

此外,由于nc不支持HTTP重定向,这个过程相对复杂。在实际应用中,使用像curl这样的工具会更加简单和可靠,因为它会自动处理重定向。如果您有权限使用其他工具,我强烈建议您考虑使用它们来完成此任务。

通关:

hacker@talking-web~level32:~/Desktop$ echo -e "GET / HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n" | nc 127.0.0.1 80
HTTP/1.1 302 FOUND
Server: Werkzeug/3.0.2 Python/3.8.10
Date: Sat, 27 Apr 2024 15:32:01 GMT
Content-Length: 253
Location: /c86377902e90e4795cb9df47f5c6ad1a
Server: pwn.college
Connection: close

<!doctype html>
<html lang=en>
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to the target URL: <a href="/c86377902e90e4795cb9df47f5c6ad1a">/c86377902e90e4795cb9df47f5c6ad1a</a>. If not, click the link.

echo -e “GET $Location / HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n” | nc 127.0.0.1 80

hacker@talking-web~level32:~/Desktop$ echo -e "GET /c86377902e90e4795cb9df47f5c6ad1a HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n" | nc 127.0.0.1 80
HTTP/1.1 200 OK
Server: Werkzeug/3.0.2 Python/3.8.10
Date: Sat, 27 Apr 2024 15:33:31 GMT
Content-Length: 58
Server: pwn.college
Connection: close

pwn.college{88GwFMOepaw5cE8Ds2N_WaIZDxO.dlTOyMDLwYTM2QzW

2.12 cookie+重定向 【⭐】

nc 127.0.0.1 80 <<EOF
GET / HTTP/1.1
Host: 127.0.0.1
Connection: close


EOF
hacker@talking-web~level35:~/Desktop$ sh 1.sh
HTTP/1.1 302 FOUND
Server: Werkzeug/3.0.2 Python/3.8.10
Date: Sat, 27 Apr 2024 15:54:29 GMT
Content-Length: 189
Location: /
Set-Cookie: cookie=e1ef8a65c82383229e1f9a1c2e2ab952; Path=/
Server: pwn.college
Connection: close

<!doctype html>
<html lang=en>
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to the target URL: <a href="/">/</a>. If not, click the link.
nc 127.0.0.1 80 <<EOF
GET / HTTP/1.1                                   # GET  $Location HTTP/1.1
Host: 127.0.0.1
Cookie: cookie=e1ef8a65c82383229e1f9a1c2e2ab952
Connection: close

EOF

2.13 发出四种不同cookie的请求

# 请求1: 初始化会话,可能设置cookie
nc 127.0.0.1 80 <<EOF
GET / HTTP/1.1
Host: 127.0.0.1
Connection: close

EOF

# 请求2: 使用提取的cookie值
nc 127.0.0.1 80 <<EOF
GET / HTTP/1.1
Host: 127.0.0.1
Cookie: session=eyJzdGF0ZSI6MX0.Zi0jvQ.3WG9G44lx8SYGdrbwJaGQ6kJT9g
Connection: close

EOF

# 请求3: 使用从第二个回显提取出cookie值
nc 127.0.0.1 80 <<EOF
GET / HTTP/1.1
Host: 127.0.0.1
Cookie: session=eyJzdGF0ZSI6Mn0.Zi0jvQ.8XI9eHJCMGDJG70kewnK-123TRs
Connection: close

EOF

# 请求4: 使用从第三个回显提取出cookie值
nc 127.0.0.1 80 <<EOF
GET / HTTP/1.1
Host: 127.0.0.1
Cookie: session=eyJzdGF0ZSI6Mn0.Zi0jvg.q_SJa48mvwO6rr5482DcOhqMoh0
Connection: close

EOF

# 请求5: 使用从第三个回显提取出cookie值     
nc 127.0.0.1 80 <<EOF
GET / HTTP/1.1
Host: 127.0.0.1
Cookie: session=eyJzdGF0ZSI6M30.Zi0klQ.fGrFAUeWXHGzIVFsN0G01OdsFlg
Connection: close

EOF

3. python

3.1 http

>>> from requests import *
>>> response = requests.get('http://127.0.0.1:80')
>>> print('响应内容:', response.text)
响应内容: pwn.college{83y0SkoeFfnsdU5YogDOF6JGRZQ.dBzNyMDLwYTM2QzW}

向目标主机端口发送http请求

3.2 http+head

>>> import requests
>>> url = 'http://127.0.0.1'
>>> headers = {'Host': '065616a0aaafbede0381252839ae6d59'}
>>> response = requests.get(url, headers=headers)
'HTTP 状态码:', response.status_code)
print('响应内容:', response.text)
>>> 
>>> print('HTTP 状态码:', response.status_code)
HTTP 状态码: 200
>>> print('响应内容:', response.text)
响应内容: pwn.college{Erb8zgS62nA93VGa5cjg8Lib34g.dNzNyMDLwYTM2QzW}

3.3 http+path

修改这里:url = ‘http://127.0.0.1/ed6e3291b486fa09e2847a67f85d7e5f’

3.4 get_URL编码路径

空格转义%20

3.5 get传参(略)

3.6 gets多参传递+URL转义符集合

联想截图_20240325220356.png

3.7 post传参

在Python中,你可以使用requests库来发送带有参数的POST请求。以下是一个示例代码:

import requests
url = 'http://127.0.0.1:80'
data = {
    'a': '345f4d16a319a34006dd714c0f24fb7d',
    'para':'value2'
}
response = requests.post(url, data=data)
print(response.text)

在这个示例中:

  • 首先,导入requests库。
  • 指定目标URL为http://example.com/api
  • 创建一个字典data,包含要传递的参数数据。
  • 使用requests.post方法发送POST请求,并传递参数数据。
  • 最后,打印响应内容,可以通过response.text访问。

通过这段代码,你可以使用Python发送带有参数的POST请求。requests库简化了HTTP请求的处理,使得发送POST请求变得更加简单和方便。

3.8 post多参

这里注意 python 使用post传参存在空格,&,#等字符时候不需要转义,直接在表单提交!!!

3.9 JSON请求

要发送带有特定内容类型(‘application/json’)的HTTP POST请求,并且请求主体是一个JSON对象,其中包含一个名为a,值为a2058cfa996ff89a3c9a9ae03f9452b3的键值对,你可以使用Python的requests库。以下是一个示例代码:

import requests
import json

url = 'http://127.0.0.1'
headers = {'Content-Type': 'application/json'}
data = {'a': '0be5c44b1be5edf425e00a78e51c0199'}

response = requests.post(url, headers=headers, data=json.dumps(data))

print(response.text)

在这个示例中:

  • 导入requestsjson库。
  • 指定目标URL为http://example.com/api
  • 创建一个字典data,包含要作为JSON对象发送的数据。
  • 定义一个headers字典,指定Content-Type为’application/json’。
  • 使用json.dumps(data)将数据转换为JSON格式。
  • 使用requests.post方法发送带有特定内容类型的POST请求。
  • 最后,打印响应内容,可以通过response.text访问。

通过这段代码,你可以使用Python发送带有特定内容类型和JSON格式主体的HTTP POST请求。

3.10 多个JSON请求

要使用Python发送满足条件的HTTP请求,包括指定Content-Type为application/json,并且发送一个JSON对象作为请求体,可以按照以下方式进行:

import requests
import json

headers = {
    'Content-Type': 'application/json'
}

json_data = {
    "a": "bee420ccb4715a19ef4f2e04da40d1da",
    "b": {
        "c": "d04ec34a",
        "d": ["ca260e25", "94ba15f0 6c8c99e7&d52b82b0#eaafdff8"]
    }
}

response = requests.post('http://127.0.0.1', headers=headers, data=json.dumps(json_data))

print(response.text)

在这段代码中:

  • 我们首先定义了请求头部,指定Content-Type为application/json。
  • 然后定义了符合要求的JSON数据,包括"a"和"b"两个键值对,其中"b"的值是一个嵌套的JSON对象,包含"c"和"d"两个键值对,其中"d"的值是一个包含多个元素的列表。
  • 使用requests库发送了一个POST请求,将JSON数据作为请求体发送到目标URL(这里用’http://example.com’代替实际URL)。
  • 最后打印了响应内容,你可以根据实际情况对响应进行处理。

3.11 目标地址重定向

Python的requests库会自动处理HTTP重定向。当你发送一个HTTP请求时,如果服务器返回的响应状态码是3xx(比如302 Found),并且包含重定向的目标URL在响应头的Location字段中,requests库会自动跟随重定向并发送新的请求到重定向的URL。
默认情况下,requests库会自动处理重定向,直到达到最终的目标URL或达到最大重定向次数(默认为30次)。你可以通过设置allow_redirects=False来禁用自动重定向,或者通过max_redirects参数来设置最大重定向次数。
因此,当你使用requests.get()requests.post()等方法发送HTTP请求时,如果服务器返回重定向响应,requests库会自动处理重定向并返回最终的响应结果。这样简化了处理重定向的过程,让你更方便地与Web服务器进行交互。

忽略python自动重定向时候,常规思路:

根据你的要求,你可以使用Python中的requests库来发送HTTP请求到127.0.0.1的端口80,并获取重定向到flag的HTTP响应。以下是一个示例代码,演示如何使用Python发送HTTP请求并处理重定向:

import requests

url = 'http://127.0.0.1:80'  
response = requests.get(url)

if response.status_code == 302:
    redirect_url = response.headers['Location']
    print(f'Redirected to: {redirect_url}')
    flag_response = requests.get(f"http://127.0.0.1:80{redirect_url}")
    print(flag_response.text)
else:
    print('No redirection occurred.')  # 由于python自动重定向,改行会被打印
    
print(response.text)

在这段代码中,首先我们使用requests.get()方法发送HTTP GET请求到目标URLhttp://127.0.0.1:80,然后检查响应状态码是否为302,如果是302表示发生了重定向。接着我们从响应头中获取重定向的URL,并发送新的HTTP请求到该重定向URL,最后输出flag响应的内容。

3.12 重定向+cookie

requests库自动处理服务器返回的cookie,并添加到下一次http请求。

常规:要在Python中处理Cookie,你可以使用requests库来发送HTTP请求并自动处理Cookie。以下是详细的步骤:

  1. 导入requests库
    在Python脚本中,首先需要导入requests库:
import requests
  1. 发送带有Cookie的HTTP请求
    使用requests库发送HTTP请求时,可以通过cookies参数传递Cookie信息。例如,发送一个带有Cookie的GET请求:
url = 'http://example.com'
cookies = {'cookie_name': 'cookie_value'}
response = requests.get(url, cookies=cookies)
  1. 获取服务器响应
    发送请求后,可以通过response对象获取服务器返回的响应内容。例如,获取响应文本和状态码:
print(response.text)
print(response.status_code)
  1. 处理服务器返回的Cookie
    如果服务器返回了新的Cookie,你可以通过response.cookies来获取并处理这些Cookie。例如,获取服务器返回的所有Cookie:
cookies = response.cookies
for cookie in cookies:
    print(cookie.name, cookie.value)

通过以上步骤,你可以在Python中使用requests库来处理Cookie,发送带有Cookie的HTTP请求,并处理服务器返回的Cookie信息。

3.13 发出多个请求

直接正常发送即可,request库自动处理问题…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1863082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文 | WebGPT: Browser-assisted question-answering with human feedback

什么是WebGPT? WebGPT是对GPT-3微调后得出的模型&#xff0c;它可以像人类一样在线搜索问题的答案&#xff0c;并添加引用来源&#xff0c;更加准确地回答开放式问题。 在回答问题时&#xff0c;WebGPT可以通过浏览器进行搜索&#xff0c;在不同链接中寻找相关答案&#xff…

第5讲:建立自己的C函数库,js调用自己写的C/C++函数,并包含依赖C/C++第三方静态库。

在javascript中&#xff0c;Array有很多内置的功能&#xff0c;比如Array.map&#xff0c;Array.filter&#xff0c;Array.find等等&#xff0c;能用内置的功能就用内置的功能&#xff0c;最好不要自己实现一套&#xff0c;因为底层调用的可能压根就不是js语言本身&#xff0c;…

windows 安装 Kubernetes(k8s)

windows 安装 docker 详情见&#xff1a; https://blog.csdn.net/sinat_32502451/article/details/133026301 minikube Minikube 是一种轻量级的Kubernetes 实现&#xff0c;可在本地计算机上创建VM 并部署仅包含一个节点的简单集群。 下载地址&#xff1a;https://github.…

SSM 美食食谱分享推荐系统【附源码】

SSM 美食食谱分享推荐系统 本科毕业论文&#xff08;设计&#xff09;学术诚信声明 本人郑重声明&#xff1a;所呈交的毕业论文&#xff08;设计&#xff09;&#xff0c;是本人在导师的指导下&#xff0c;独立进行 研究工作所取得的成果。除文中已经注明引用的内容外&#xf…

嵌入式应用开发ADC学习笔记(立创STMF4开发板)

目录 #ADC #ADC学习相关涉及概念介绍 #ADC相关概念介绍 #软件实现 #常用结构体配置介绍 #常用函数介绍 #软件编写&#xff0c;完成效果。 #ADC #ADC学习相关涉及概念介绍 数字信号(Digital Signal)&#xff1a;数字信号用最为常见的二进制数来表示的信号&#x…

k8s部署mongodb副本集

1.什么mongodb&#xff1f; MongoDB 是一个基于分布式文件存储的数据库&#xff0c;由 C 语言编写&#xff0c;旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff…

excel实现下拉筛选(超简单)

excel实现下拉筛选 引言1、需求&#xff1a;预警状态下的列 实现下拉筛选2、实现2.1、数据验证2.2、下拉筛选内容2.3、去掉预警状态单元格的下拉筛选 引言 通常&#xff0c;我们会单独新建一张sheet表 专门存每个列的下拉内容。下面我将专门建立一张名为代码表的sheet表来存放…

欧盟指控苹果应用商店规则非法压制竞争,面临巨额罚款风险

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

[Redis]事务

Redis事务 Redis 事务提供了一种将多个命令请求打包的功能。然后&#xff0c;再按顺序执行打包的所有命令&#xff0c;并且不会被中途打断。 但是&#xff0c;事务中的每条命令都会与 Redis 服务器进行网络交互&#xff0c;比较浪费资源 所以&#xff0c;日常开发中不建议使…

LeetCode题练习与总结:随机链表的复制--138

一、题目描述 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的…

成功解决ES高亮内容引起的字段显示不一致问题

在处理搜索引擎&#xff08;如Elasticsearch&#xff09;结果时&#xff0c;常见需求之一是对用户搜索的关键词进行高亮显示&#xff0c;这有助于用户快速识别搜索结果为何与其查询相关。但在实际应用中&#xff0c;如果处理不当&#xff0c;直接使用高亮片段可能会导致原始数据…

冰淇淋PDF编辑器,轻量,无需安装,打开即用

​IceCream PDF Editor (冰淇淋PDF编辑器) 是一款简单实用的PDF文件编辑工具。功能包括&#xff1a;编辑文本、注释添加、页面管理、PDF文件保护等&#xff1b;操作简单&#xff0c;功能强大&#xff0c;使用户能够轻松编辑和修改PDF文件。 软件链接&#xff1a;轻量&#xff…

代码随想录算法训练营第四十五天| 198.打家劫舍,213.打家劫舍II ,337.打家劫舍III

198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int rob(int[] nums) {int[] dp new int[nums.length];if(nums.length 1){return nums[0];}dp[0] nums[0];dp[1] Math.max(nums[0],nums[1]);for(int i2;i<nums.length;i){dp[i] Math.ma…

【服务器】磁盘满载--docker 的日志文件太大造成满载

一.背景 早上过来测试反馈服务器都宕机了,访问不了。一看服务器磁盘都已经满了。所以开始清磁盘数据。 二.解决 主要查看下面目录情况: /home/libe/docker /containers /volumes /overlay21.查看磁盘情况 df -h/ du -a|sort -rn|…

国密SSL证书提升网络安全

随着数字化时代的到来&#xff0c;网络安全已经成为全球关注的焦点。在这种背景下&#xff0c;SSL证书作为保护数据传输安全的重要工具&#xff0c;其重要性日益凸显。 数字证书产品有以下几种类别&#xff1a; 单域名SSL证书&#xff1a;为单一网站提供安全保护。 多域名SS…

ICMAN液位检测——WS003B管道检测模组

ICMAN液位检测之WS003B管道检测模组 体积小&#xff0c;成本低&#xff0c; 液位检测精度高&#xff0c; 有水输出低电平无水高电平&#xff0c; 适用于饮水机、咖啡机、扫地机器人、洗地机等&#xff0c; 有需要朋友快联系我吧&#xff01; AWE展会不容错过的ICMAN检测模组…

sheng的学习笔记-AI-高斯混合模型(GMM)

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 sheng的学习笔记-AI-聚类(Clustering)-CSDN博客需要学习前置知识&#xff1a; 聚类&#xff0c;可参考 sheng的学习笔记-AI-聚类(Clustering)-CSDN博客 EM算法&#xff0c;可参考 sheng的学习笔记-AI-EM算法-CSDN博客 贝…

python编写的多个FastApi接口如何批量运行

fastapi编写接口并批量运行 为什么要写这fastapi接口以及拿它做什么呢&#xff1f; fastapi可以快速构建你自己的api&#xff0c;前端后端联调时&#xff0c;后端接口还有做好&#xff0c;那么这个fastapi可以快速生成mock一些数据。 结合uvicorn这个python库使用起来很方便 为…

【Python实战因果推断】1_因果效应异质性1

目录 From ATE to CATE Why Prediction Is Not the Answer CATE and ITE 本文将介绍应用于行业的因果推理中最有趣的发展&#xff1a;效应异质性。在此之前&#xff0c;你们了解的是一种治疗方法的一般影响。现在&#xff0c;你将专注于发现它如何对不同的人产生不同的影响。…

【漏洞复现】用友 UFIDA saveDoc.ajax 任意文件上传漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…