/
test_http_socket_sever.php
76 lines (51 loc) · 1.37 KB
/
test_http_socket_sever.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
71
72
73
74
75
76
<?php
if(ini_get('register_globals')) exit("<center><h3>Error: Turn that damned register globals off!</h3></center>");
define('CAN_INCLUDE', true);
require 'include/common.php';
require ROOT.'include/auth.php';
header('content-type: text/plain');
function myecho($str='') {
echo $str, "\n";
ob_flush();
flush();
}
for($i=0; $i<2000; $i++) echo '.';
myecho();
touch('flag');
set_time_limit(30);
$address = '';
$port = 1234;
$sock=socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
myecho("create");
socket_bind($sock, $address, $port);
myecho("bind");
socket_listen($sock, 1);
myecho("listen");
$msgsock = socket_accept($sock);
myecho("accept");
$n=0;
$req='';
while(true) {
$data=socket_read($msgsock, 2048, PHP_NORMAL_READ);
if($data==='' or $data===false) {
if($data==='') myecho("socket_read - empty data");
else myecho("socket_read - false");
break;
}
$req.=$data;
sleep(1);
$n++;
if($n===5) break;
}
file_put_contents('req.txt', $req);
$msg="HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n4\r\nWiki\r\n5\r\npedia\r\n";
socket_write($msgsock, $msg, strlen($msg));
for($i=0; $i<5; $i++) {
echo $i, ": ";
socket_write($msgsock, "2\r\nxx\r\n");
}
socket_write($msgsock, "0\r\n\r\n");
//socket_write($msgsock, $talkback, strlen($talkback));
//socket_close($sock);
unlink('flag');
?>