Làm sao để tải tệp lên server sử dụng thư viện PycURL trong Python?

DDos

VIP Members
22/10/2013
524
2.191 bài viết
Làm sao để tải tệp lên server sử dụng thư viện PycURL trong Python?
Chức năng tải tệp lên máy chủ có khá nhiều mục đích. Đối với kẻ tấn công, sau khi xâm nhập vào một hệ thống, chúng thường tải các script hoặc các mã độc có nhiều chức năng nhằm đạt được mục đích nhất định nào đó. Đối với việc tìm kiếm lỗ hổng của ứng dụng web, pentester cũng nên thử việc tải lên các tệp có chứa payload cần thiết để tìm lỗi. Hay đối với quản trị viên, sau khi hoàn thành một chức năng nào đó, muốn tải tệp lên server để xem code hoạt động có chính xác hay không.

Có rất nhiều cách để tải tệp lên server, bạn có thể sử dụng nhiều thư viện có sẵn trong các ngôn ngữ lập trình khác nhau, hay đơn giản chỉ là việc dùng lệnh wget hoặc curl để lấy tệp từ một nguồn nào đó. Bài viết này nhắm đến ai đó đang học và tìm hiểu về ngôn ngữ lập trình Python. Để tải tệp lên máy chủ, bạn có thể sử dụng thư viện PycURL.

python_ddos.png

PycURL là một giao diện Python cho libcurl. PycURL có thể được sử dụng để tìm nạp các đối tượng được xác định bằng URL từ chương trình Python, tương tự như mô-đun Python urllib. Phiên bản mới nhất của PycURL là 7.45.1. Việc cài đặt nó trên các bản phân phối của Linux là rất dễ dàng.

Yêu cầu:
  • Python 3.5-3.10.
  • libcurl 7.19.0 hoặc mới hơn
Cài đặt

Chỉ cần dùng lệnh đơn giản:

easy_install pycurl
hoặc
pip install pycurl
Dưới đây là một vài dòng code đơn giản được viết trong Python để tải tệp lên server

Python:
import pycurl
from io import StringIO

def do_http_request(method, url, post_data='', upload_file=None):
    ch = pycurl.Curl()
    buf = StringIO.StringIO()
    ch.setopt(ch.URL, url)
    ch.setopt(ch.CUSTOMREQUEST, method)
    if upload_file != None:
        ch.setopt(ch.HTTPPOST, [('file', (ch.FORM_FILE, upload_file['file_path'],
            ch.FORM_FILENAME, upload_file['file_name']))])
    else:
        if method == self.METHOD_POST:
            ch.setopt(ch.POSTFIELDS,  urlencode(post_data))

    ch.setopt(ch.TIMEOUT, 30)
    ch.setopt(ch.WRITEFUNCTION, buf.write)
    ch.perform()
    content = buf.getvalue()
    buf.close()
    ch.close()
    return content

Trong đó, upload_file là kiểu dữ liệu dict mà yêu cầu hai key file_path và file_name.

ch.FORM_FILE: xác định đường dẫn đến tệp bạn muốn tải lên

ch.FORM_FILENAME: xác định tên của tệp bạn muốn tải lên

Để tìm hiểu chi tiết hơn về PycURL, bạn có thể tham khảo hướng dẫn chính thức tại đây nhé!
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
pycurl python
Bên trên