[PHP]POST mee sturen via fsockopen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 17:18
Na zelff een functie te hebben geschreven voor GET met fsockopen moest ik ook gebruik gaan maken van POST.
Alleen het lijkt wel of hij de POST data niet goed naar de website wil versturen.

deze code haalt probeer de website te openen en POSTS mee te sturen
PHP:
1
2
3
4
5
6
7
8
9
<?
require('open_link_POST.php');
//deze data heb ik ook al geprobeerd
//"type2=1&amp;type4=1&amp;type5=2&amp;x=105&amp;y=16&amp;number=1&amp;g=1&amp;fly=yes&amp;submit=Launch+Attack%21";
    $data = "type2=1&type4=1&type5=2&x=105&y=16&number=1&g=1&fly=yes&submit=Launch Attack!";
    $website_output = open_link("attack.php",$data,$cookie);

echo "$website_output";
?>


hier een stukje html uit de website
HTML:
1
2
3
4
5
6
7
<form id=form method=post action=attack.php>

<input type=text size=8 name=type2>
<input type=text size=8 name=type4>
<input type=text size=8 name=type5>

<input type=hidden name=x value=107><input type=hidden name=y value=14><input type=hidden name=number value=1><input type=hidden name=g value=1><input type=hidden name=fly value=yes><input type=submit value="Launch Attack!">


deze code zorgt voor de fout afhandeling bij het ophalen van de webpagina
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?
require('GetWebsite_POST.php');

$cookie =  $response[0];

function open_link($url,$data,$cookie)
{
    $response3 = GetWebsite("www.website.com", "80", "/$url", "$data",$cookie,"POST");

    $check_array = is_array($response3);
    if($check_array)
    {
        while($response3[1] == "/load.html")
        {
            sleep(15);
            $response3 = GetWebsite("www.website.com", "80", "/$url", "$data",$cookie,"POST");
        }
    }
    else
    {
        preg_match_all("/The universe ([\s\S]*?)<br>/", $response3, $update);
        while($update[1][0] == "is currently updating itself.")
        {
            sleep(15);
            $response3 = GetWebsite("www.website.com", "80", "/$url", "$data",$cookie,"POST");
            preg_match_all("/The universe ([\s\S]*?)<br>/", $response3, $update);
        }
    }
    return $response3;
}
?>


deze code zorgt voor de fsockopen afhandeling
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?
function GetWebsite($host,$port,$path,$data,$cookie,$met)
    {
        if($met == "GET")
            {
                $path .= '?' . $data;
            }

        $request  = "$met $path HTTP/1.1\r\n";
        $request .= "Host: $host\r\n";
        $request .= "Content-type: application/x-www-form- urlencoded\r\n";
        $request .= "Content-length: " . strlen($data) . "\r\n";
        if($cookie != NULL)
        {
        $request .= "Cookie: $cookie\r\n";
        }
        $request .= "Connection: close\r\n\r\n";
        if($met == "POST")
        {
        $request .= "$data";
        }

        $fs = fsockopen($host, $port);
            while(!$fs)
            {
                sleep(2);
                $fs = fsockopen($host, $port);
            }

        $put = fputs($fs, $request);
        
        while(!feof($fs))
        {
        $response .= fgets($fs);    
        }

            preg_match_all("!PHPSESSID=([^;]*);!i",$response,$matches);
                if($matches[0][1] != NULL)
                {
                    $PHPSESSID = $matches[0][1];
                }

            preg_match_all("/Location:\s([\s\S]*?)\s/im", $response, $matches1);
            if($matches1[1][0] != NULL)
                {
                    $Location = $matches1[1][0];
                }

            $return_waarde[0] = $PHPSESSID;
            $return_waarde[1] = $Location;

            if($Location != NULL)
            {   
                return $return_waarde;
            }
            else
            {
                return $response;
            }
        
        fclose ($fs);
    }


$response = GetWebsite("www.website.com", "80", "/account.php", "username=username&pass=pass&submit=%Enter%", "","GET");
$response1 = GetWebsite("www.website.com", "80", "/account.php", "",$response[0],"GET");
preg_match_all("/<a href=\"([\s\S]*?)\">Play/im", $response1, $matches);
$response2 = GetWebsite("www.website.com", "80", "/".$matches[1][0]."", "",$response[0],"GET");

?>


ik hoop dat een beetje begrijpenlijk is
alvast bedankt voor de moeite

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Wat een gedoe, heb je niet de beschikking over cURL?

Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 17:18
nope en aangezien ik al erg veel scripts heb gemaakt voor fsockopen zou het me erg veel tijd kosten om alles weer om te zetten.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
In de user notes op www.php.net/fsockopen staat een redelijk eenduidig script waarmee je een form POST kunt nabootsen;
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
# $host includes host and path and filename
   # ex: "myserver.com/this/is/path/to/file.php"
# $query is the POST query data
   # ex: "a=thisstring&number=46&string=thatstring
# $others is any extra headers you want to send
   # ex: "Accept-Encoding: compress, gzip\r\n"
function post($host,$query,$others=''){
   $path=explode('/',$host);
   $host=$path[0];
   unset($path[0]);
   $path='/'.(implode('/',$path));
   $post="POST $path HTTP/1.1\r\nHost: $host\r\nContent-type: application/x-www-form-urlencoded\r\n${others}User-Agent: Mozilla 4.0\r\nContent-length: ".strlen($query)."\r\nConnection: close\r\n\r\n$query";
   $h=fsockopen($host,80);
   fwrite($h,$post);
   for($a=0,$r='';!$a;){
       $b=fread($h,8192);
       $r.=$b;
       $a=(($b=='')?1:0);
   }
   fclose($h);
   return $r;
}
?>


Kijk eens wat jouw script mist wat dit script wel heeft.
Post anders gewoon even de HTML request welke jouw script uitvoert wanneer je iets post, dat is wat simpelen dan het uit de broncode vissen.

[ Voor 25% gewijzigd door frickY op 13-10-2005 09:49 ]


Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 17:18
het enige verschil is dat ik nog een cookie mee stuur en dat ik niet aan geef welke browser ik gebruik.
dus niet :
User-Agent: Mozilla 4.0\r\n

wel:
Cookie: $cookie\r\n

hij logt ook wel goed in enzo alleen hij geeft het zelfde resultaat ook al geef ik $data niet mee

Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 17:18
oke probleem al gevonden

in Getwebsite stond

$request .= "Content-type: application/x-www-form- urlencoded\r\n";

tussen 'form-' en 'urlencoded' stond een spatie en die is stout

toch eerst maar is goed kijken als ik iets van iemand overneem :D

maar bij GET werkte hij wel goed zonder die

hij werkt nu :)

[ Voor 37% gewijzigd door InfoTracer op 13-10-2005 11:19 ]

Pagina: 1