<![CDATA[Latest posts for the topic "PullThePlug wargame"]]> /hvaonline/posts/list/27.html JForum - http://www.jforum.net PullThePlug wargame /hvaonline/posts/list/23615.html#142301 /hvaonline/posts/list/23615.html#142301 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#142426 /hvaonline/posts/list/23615.html#142426 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#142563 /hvaonline/posts/list/23615.html#142563 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#142701 /hvaonline/posts/list/23615.html#142701 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#142761 /hvaonline/posts/list/23615.html#142761 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145555 /hvaonline/posts/list/23615.html#145555 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145564 /hvaonline/posts/list/23615.html#145564 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145621 /hvaonline/posts/list/23615.html#145621 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145628 /hvaonline/posts/list/23615.html#145628 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145637 /hvaonline/posts/list/23615.html#145637 GMT Re: PullThePlug wargame ntohl để unpack, còn gửi đi thì mới dùng htonl để pack. --m]]> /hvaonline/posts/list/23615.html#145646 /hvaonline/posts/list/23615.html#145646 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145650 /hvaonline/posts/list/23615.html#145650 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145651 /hvaonline/posts/list/23615.html#145651 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145666 /hvaonline/posts/list/23615.html#145666 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145685 /hvaonline/posts/list/23615.html#145685 GMT Re: PullThePlug wargame

lamer wrote:
đó là vấn đề đó ;-) chài ơi, lẽ nào nói huỵch toẹt ra hết sao? hehehe 
Phải chăng ý anh nói đến tràn số :D ]]>
/hvaonline/posts/list/23615.html#145687 /hvaonline/posts/list/23615.html#145687 GMT
Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145734 /hvaonline/posts/list/23615.html#145734 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145739 /hvaonline/posts/list/23615.html#145739 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145742 /hvaonline/posts/list/23615.html#145742 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145743 /hvaonline/posts/list/23615.html#145743 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#145778 /hvaonline/posts/list/23615.html#145778 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#146345 /hvaonline/posts/list/23615.html#146345 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#146457 /hvaonline/posts/list/23615.html#146457 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#146495 /hvaonline/posts/list/23615.html#146495 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#147020 /hvaonline/posts/list/23615.html#147020 GMT Re: PullThePlug wargame

K4i wrote:
Up phát nào, Hôm nay tí tởn làm thử cái vortex, vướng phải cái level 0 :">. Sau khi send tổng 4 số nguyên mình nhận được lúc kết nối lên server thì nhận về một cái xâu hầm bà lằng, dịch ra chuỗi số nguyên nguyên thì thấy nản quá :(. Mình muốn hỏi là cái định dạng username/password mà thằng server trả về cho mình có định dạng như thế nào :| 
Đâu có hầm bà lằng đâu ta, bạn lấy được 4 số nguyên, send lên server, xong sẽ nhận được chuỗi tương tự như trong hình:
Hoàng viết 1 cái demo nho nhỏ bằng Delphi để tự động solve cái Level 0 nè. Lấy 4 số nguyên, tổng lại rồi send trở về server. Cuối cùng hiển thị kết quả thôi. Download (source included): http://www.mediafire.com/download.php?fzjzdniwr1a Code:
{
  Solution for Vortex level 0 wargame (http://www.overthewire.org/wargames/vortex/level0)
  This console application will:
    - connect to Vortex server
    - calculate 4 numbers
    - sending result back to server
    and we got username & password

  Written by LeVuHoang
}

program Vortext0;

{$APPTYPE CONSOLE}

uses
  ScktComp,
  SysUtils,
  Windows;

const
  cHost = 'vortex.labs.pulltheplug.org'; // your host name here
  cPort = 5842;                          // remote host port

type
  TSocketMethodDispatcher = class(TObject)
  public
    procedure OnClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure OnClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure OnConnect(Sender: TObject; Socket: TCustomWinSocket);
  end; // TSocketMethodDispatcher

var
  vSocketMethodDispatcher: TSocketMethodDispatcher;
  vClientSocket: TClientSocket;

  iTotal: Longint = 0; // Total of four numbers
  iCount: Byte = 0;    // counter

  Msg: TMsg;           // window messages

//
// get error messages from server
//
procedure TSocketMethodDispatcher.OnClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
  Writeln('Error: ', Socket.ReceiveText);
  ErrorCode :=0;
end;

//
// display connected message
//
procedure TSocketMethodDispatcher.OnConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  Writeln('Connected to: ', Socket.RemoteHost);
end;

//
// get data from server
//
procedure TSocketMethodDispatcher.OnClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  iNumber: Integer;
begin
  inc(iCount);

  //
  // receive 4 integer numbers
  //
  if iCount <= 4 then
  begin
    Socket.ReceiveBuf(iNumber, SizeOf(iNumber));
    iTotal :=iTotal + iNumber;

    //
    // diplay each number
    //
    Writeln(Format('Number%d = %d, Total = %d', [iCount, iNumber, iTotal]));
  end; // if

  //
  // we have the total now
  // send back to server
  //
  if iCount = 4 then
  begin
    Writeln('Sending result: ', iTotal);
    Socket.SendBuf(iTotal, SizeOf(iTotal));
  end; // 4

  //
  // finally, we got username & password
  //
  if iCount = 5 then
  begin
    Writeln;
    Writeln('Yahhhhhhhhhhooooooooooooo!!!!!!!! Here is your account.');
    Writeln(Socket.ReceiveText);
  end; // if
end; // TSocketMethodDispatcher.

begin
  vSocketMethodDispatcher :=TSocketMethodDispatcher.Create;
  vClientSocket :=TClientSocket.Create(nil);
  vClientSocket.Host :=cHost;
  vClientSocket.Port :=cPort;

  //
  // socket events
  //
  vClientSocket.OnRead :=vSocketMethodDispatcher.OnClientRead;
  vClientSocket.OnConnect :=vSocketMethodDispatcher.OnConnect;
  vClientSocket.OnError :=vSocketMethodDispatcher.OnClientError;

  //
  // connecting to server
  //
  Writeln('Connecting to: ', cHost);
  vClientSocket.Active :=True;

  // wait until the console is closed
  while GetMessage(Msg,0,0,0) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end; // while

  // free resources
  vClientSocket.Free;
  vSocketMethodDispatcher.Free;
end.
]]>
/hvaonline/posts/list/23615.html#147075 /hvaonline/posts/list/23615.html#147075 GMT
Re: PullThePlug wargame /hvaonline/posts/list/23615.html#147150 /hvaonline/posts/list/23615.html#147150 GMT Re: PullThePlug wargame Code:
unsigned char buf[512];
unsigned char *ptr = buf + (sizeof(buf)/2);
.....

case '\\': ptr--; break;
default: e(); if(ptr > buf + sizeof(buf)) continue; ptr++[0] = x;
bồ nên vẽ cái stack ra, xem ptr nó nằm ở đâu (where), làm thế nào để ghi giá trị vào đó (how), và ghi vào đó giá trị gì (what). tui có nói ở trên rồi đó, ghi vào một giá trị sao cho MSB của ptr là 0xca. --m PS: lvl12 hay, non-executable stack, giải xong cũng thích như lvl11. giờ đụng phải lvl13, khó nuốt quá. mới đầu đọc mã asm của nó, chẳng hiểu gì, trời ơi gì mà nó jne/jnz/jmp tùm lum. quyết định load lên idapro, nhìn mấy cái graph coi bộ dễ hơn nhiều so với gdb. nhưng cũng mất một buổi để reverse nó, mặc dù sau khi viết lại code C, thì thấy nó ngắn ngủn :-p, chắc là do chưa quen tay. reverse xong rồi ngồi ngó từ mấy tiếng đồng hồ, chẳng biết làm thế nào. thằng quỷ này chơi ác thật, envp và argv bị xóa sạch, stack thì lại non-executable, chẳng biết phải làm sao :-/. ]]>
/hvaonline/posts/list/23615.html#147174 /hvaonline/posts/list/23615.html#147174 GMT
Re: PullThePlug wargame /hvaonline/posts/list/23615.html#147694 /hvaonline/posts/list/23615.html#147694 GMT Re: PullThePlug wargame lamer đã gợi mở các hướng đi khi bị bí :-p. hehe cuối cùng em tìm được một cách khá gọn để khai thác, khỏi phải ghi 2 byte một lần :-p. cái lvl này khá kỳ lạ, lỗi thì khá đơn giản, nhưng muốn khai thác được cái lỗi đó thì kô hề đơn giản tí nào. giờ mới thấm thía câu nói của mấy bậc tiền bối: tìm lỗi thường dễ hơn khai thác lỗi. đi được nửa chặng đường của vortex mới thấy để có thể khai thác lỗi, thì phải có hai điều kiện: có kiến thức căn bản tốt + biết nhiều mẹo (có thể xem là kinh nghiệm):-p. mẹo thì càng làm nhiều sẽ càng biết nhiều (riêng cái lvl13 này thôi đã xài 4-5 cái mẹo), nhưng kiến thức căn bản thì phải chịu khó học và học và học. bồ nào đang tìm hiểu về lĩnh vực memory corruption vulnerability, thì nên làm mấy cái lvl của vortex. càng lên các lvl trên thì sẽ càng hấp dẫn đó. chắc chắn sẽ học được rất nhiều mẹo :-p. một điều rất thích là mỗi level lại là một challenge hoàn toàn mới, với các vấn đề và kỹ thuật khai thác mới. bắt đầu lvl14 http://www.overthewire.org/wargames/vortex/level14 thôi! --m]]> /hvaonline/posts/list/23615.html#147937 /hvaonline/posts/list/23615.html#147937 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#154247 /hvaonline/posts/list/23615.html#154247 GMT Re: PullThePlug wargame Code:
import socket
import struct

sock = socket.socket()
sock.connect(('vortex.labs.pulltheplug.org', 5842))

len = 4

in_data = sock.recv(len)

print in_data
Tuy nhiên khi chạy đoạn code này nó in ra ký tự ascii chứ ko ra dạng unsigned integer. Vậy em phải làm sao để nó in ra được dạng unsigned integer trong python nhỉ ? Thân,]]>
/hvaonline/posts/list/23615.html#154277 /hvaonline/posts/list/23615.html#154277 GMT
Re: PullThePlug wargame unsigned int trước khi sử dụng nó. xem thêm module struct của python. -m]]> /hvaonline/posts/list/23615.html#154280 /hvaonline/posts/list/23615.html#154280 GMT Re: PullThePlug wargame Code:
>>> from struct import *
>>>print unpack('I',in_data)
]]>
/hvaonline/posts/list/23615.html#154288 /hvaonline/posts/list/23615.html#154288 GMT
Re: PullThePlug wargame

mrro wrote:
@rickb: dữ liệu bồ nhận về là ở dạng binary, bồ phải *chế biến* dữ liệu đó để nó trở thành unsigned int trước khi sử dụng nó. xem thêm module struct của python. -m 
Hi anh mrro, Không biết em viết vậy có đúng chưa nhỉ ? :) Code:
import socket
import struct

sock = socket.socket()
sock.connect(('vortex.labs.pulltheplug.org', 5842))

len_int = 4
in_data = sock.recv(len_int)
result = struct.unpack('<I',in_data)
print result
Output của nó có dạng : (530959421L,) Thấy hơi kỳ kỳ :D Thân,]]>
/hvaonline/posts/list/23615.html#154292 /hvaonline/posts/list/23615.html#154292 GMT
Re: PullThePlug wargame dive into python để hiểu thêm về mấy kiểu dữ liệu cơ bản của python. -m]]> /hvaonline/posts/list/23615.html#154295 /hvaonline/posts/list/23615.html#154295 GMT Re: PullThePlug wargame Code:
import socket
import struct
from struct import *
sock = socket.socket()
sock.connect(('vortex.labs.pulltheplug.org', 5842))
len_int = 4
i = 0
sum = 0
while (i != 4):
 num = unpack('<I',sock.recv(len_int))
 print num[0]
 sum += num[0]
 i += 1

print sum
sock.send(pack('<I',sum))
print sock.recv(1024)
sock.close()
Code:
wargame$ python test1.py 
83808278
183050462
24982680
1273023711
1564865131
Username: vortex1 Password: **********
]]>
/hvaonline/posts/list/23615.html#154495 /hvaonline/posts/list/23615.html#154495 GMT
Re: PullThePlug wargame http://www.overthewire.org/wargames/drifter/level3), nó có mấy cái struct như: Code:
struct packet {
	unsigned char ops;
	unsigned short int id;
	unsigned short int flags;
	unsigned int assoc;
} __attribute__((__packed__));
typedef struct packet packet;

struct data_assoc {
	unsigned short int len;
	unsigned char buf[0];
} __attribute__((__packed__));
typedef struct data_assoc data_assoc;
drifter3 nó nhận một cái udp packet từ network vào, phần data của packet phải tuân thủ theo đúng hai cái structure này, thì nó mới chịu xử lý và trả về một udp packet. thường có 2 cách để nhập dữ liệu và xử lý kết quả cho mấy chương trình như thế này: 1. nhập và xử lý bằng tay. kiểu như chương trình yêu cầu một packet có ops = 1, id = 1, flags = 0, assoc = 0, thì mình phải nhập vào một chuỗi byte (little-edian) như \x01\x01\x00\x00\x00\x00\x00\x00\x00 rồi đợi chương trình trả kết quả về, và lại unpack kết quả bằng tay tiếp để xem mấy cái member của struct nó có kết quả là gì. 2. rõ ràng làm cách 1 rất chậm và dễ xảy ra lỗi. bất lợi lớn nhất của cách 1 là không thể làm tự động được. ngược lại cách thứ 2 mà tớ sắp nói rất tiện lợi, và hoàn toàn có thể tự động hóa được luôn. ý tưởng chủ đạo (mà tớ chôm khi đọc source code của bọn nước ngoài :p) là sẽ biến mấy cái struct của C thành class của python, rồi dùng struct.unpack và struct.pack để nhập và xuất dữ liệu. chẳng hạn như đối với cái struct packet ở trên, tớ sẽ viết thành cái class Python như sau: Code:
class Packet(object):
    def __init__(self, ops=None, id=None, flags=None, assoc=None, bytes=None):
        self.ops = ops
        self.id = id
        self.flags = flags
        self.assoc = assoc
        if bytes:
            self.fromBytes(bytes)

    def fromBytes(self, bytes):
        # little-endian
        (self.ops, self.id, self.flags, self.assoc) = struct.unpack("<BHHI", bytes)

    def toBytes(self):
        # little-endian
        return struct.pack("<BHHI", self.ops, self.id, self.flags, self.assoc)

    def __len__(self):
        return struct.calcsize("<BHHI")

    def __repr__(self):
        return "ops %d, id %d, flags %d, assoc %d " % (self.ops, self.id, self.flags, self.assoc)
với cái class này, tớ có thể tạo và gửi một packet dễ dàng với đoạn mã sau: Code:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        input = raw_input("ops, id, flags, assoc: ")
        [ops, id, flags, assoc] = input.split(",")
        header = Header(int(ops.strip()), int(id.strip()), int(flags.strip()), int(assoc.strip())) 
        p_out = Packet(header)
        sock.sendto(p_out.toBytes(), ADDR) # hit breakpoint
        data, addr = sock.recvfrom(PKTSIZE)
        p_in = Packet(bytes=data)        
        print repr(p_in)
        sock.close()
chẳng hạn như khi chạy, nó sẽ ra như thế này: Code:
drifter3@games $ ./level3.py
out = ops, id, flags, assoc: 0,0,0,0
in = ops 0, id 0, flags 1, assoc 3696333875
rất rõ ràng và trong sáng phải không? điều tớ thích nhất ở phương pháp thứ 2 này là tớ có thể tự động hóa được hoàn toàn việc nhập liệu, debug và kiểm tra kết quả. chẳng hạn như tớ có thể viết script, cài breakpoint trong chương trình, quăng dữ liệu vào và quan sát kết quả cũng như biết rõ những dòng lệnh nào được thực hiện ứng với loại dữ liệu đầu vào nào (nghe giống như fuzzing nhỉ? ;)). Cái này gọi là code coverage, có một tool khá hay làm việc này là Paimei, nhưng nó không chạy trên Linux :-p). nói đi nói lại thì tớ rất thích cái module struct của python :-p (tớ thích nhất là em ctypes, tớ sẽ không thể sống nổi nếu thiếu em này lolz). --m]]>
/hvaonline/posts/list/23615.html#154823 /hvaonline/posts/list/23615.html#154823 GMT
Re: PullThePlug wargame /hvaonline/posts/list/23615.html#155159 /hvaonline/posts/list/23615.html#155159 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#171839 /hvaonline/posts/list/23615.html#171839 GMT Re: PullThePlug wargame

lavecoi wrote:
cái vortex lvl 0 sau khi connect to port 5842 on vortex.labs.pulltheplug.org , mình down được một file rồi làm sao mở nó ra vậy mấy anh. 
Trời download được những một file hả bạn. Nếu mình nhớ không nhầm thì chỉ có 16 bytes thôi mà. ;) ]]>
/hvaonline/posts/list/23615.html#171877 /hvaonline/posts/list/23615.html#171877 GMT
Re: PullThePlug wargame

StarGhost wrote:

lavecoi wrote:
cái vortex lvl 0 sau khi connect to port 5842 on vortex.labs.pulltheplug.org , mình down được một file rồi làm sao mở nó ra vậy mấy anh. 
Trời download được những một file hả bạn. Nếu mình nhớ không nhầm thì chỉ có 16 bytes thôi mà. ;)  
Thực tình thì chỉ có 4bytes, nhưng cũng là một file vậy, mình mở nó bằng notepad++ thì thấy được 4 kí tự kiểu ai cập, hjc. Ko biết làm sao nữa.]]>
/hvaonline/posts/list/23615.html#171898 /hvaonline/posts/list/23615.html#171898 GMT
Re: PullThePlug wargame

lavecoi wrote:

StarGhost wrote:

lavecoi wrote:
cái vortex lvl 0 sau khi connect to port 5842 on vortex.labs.pulltheplug.org , mình down được một file rồi làm sao mở nó ra vậy mấy anh. 
Trời download được những một file hả bạn. Nếu mình nhớ không nhầm thì chỉ có 16 bytes thôi mà. ;)  
Thực tình thì chỉ có 4bytes, nhưng cũng là một file vậy, mình mở nó bằng notepad++ thì thấy được 4 kí tự kiểu ai cập, hjc. Ko biết làm sao nữa. 
Rồi, mình cá là bạn dùng software nào đấy để download phải không? Vậy thì bạn nên xem lại các posts trong topic này.]]>
/hvaonline/posts/list/23615.html#171912 /hvaonline/posts/list/23615.html#171912 GMT
Re: PullThePlug wargame

StarGhost wrote:
Rồi, mình cá là bạn dùng software nào đấy để download phải không? Vậy thì bạn nên xem lại các posts trong topic này. 
mình chỉ dùng firefox thôi chớ có soft nào đâu, mà bạn làm xong cái lvl 0 chưa, hướng dẫn mình đi.]]>
/hvaonline/posts/list/23615.html#171948 /hvaonline/posts/list/23615.html#171948 GMT
Re: PullThePlug wargame /hvaonline/posts/list/23615.html#174790 /hvaonline/posts/list/23615.html#174790 GMT Re: PullThePlug wargame

hoahongtim wrote:
Bác nào cho mình hỏi tí, nếu chạy liên tục vài lần thì nhận được thông báo như sau, tràn bộ đệm interger là sao nhĩ ? Mặc dù vẫn lấy được user và password. D:\www\exploit\wargame\level0.py:15: DeprecationWarning: struct integer overflow masking is deprecated sock.send(pack('<I',sum)) 
@hoahongtim: Cái này là tràn số nguyên (interger overflow) chứ ko phải tràn bộ đệm số nguyên (có bộ đệm đâu mà tràn :D) _tham khảo lại topic của bạn choc: Giải pháp: thay Code:
sock.send(pack('<I',sum))
bằng Code:
sock.send(pack('<q',sum))
hoặc chắc cú hơn nữa Code:
sock.send(pack('<Q',sum))
Lý do thì do anh cộng dồn 4 số unsigned int nhưng vẫn pack nó dạng unsigned int (của python, ko phải C) gởi đi thì có thể bị tràn sang bit cao trái nên thằng python warning vậy thôi :) PS: Cũng tại Cognac code ẩu wá :D ]]>
/hvaonline/posts/list/23615.html#174831 /hvaonline/posts/list/23615.html#174831 GMT
Re: PullThePlug wargame /hvaonline/posts/list/23615.html#174871 /hvaonline/posts/list/23615.html#174871 GMT Re: PullThePlug wargame /hvaonline/posts/list/23615.html#174910 /hvaonline/posts/list/23615.html#174910 GMT Re: PullThePlug wargame

gamma95 wrote:
Nếu StartGhost đã pass qua 5 level thì mình bắt đầu từ level6 vậy. Topic này sẽ liên tiếp cập nhật :D. @choc_: tham gia viết challenge cho HVA đi đồng chí :D 
Hớ, gamma không đi từ lvl 0 thì sao nhảy lên được lvl 6 nhỉ, tài quá. Mình chơi cái này mất 1 tuần mới lên được lvl 10, sau đó thấy mất thời gian quá nên bỏ dở chừng, với lại mình cũng không giỏi lắm nên đành để đến lúc nào thực sự rảnh mới chơi tiếp.]]>
/hvaonline/posts/list/23615.html#174912 /hvaonline/posts/list/23615.html#174912 GMT
Re: PullThePlug wargame /hvaonline/posts/list/23615.html#174916 /hvaonline/posts/list/23615.html#174916 GMT Re: PullThePlug wargame

gamma95 wrote:
@Startghost: mấy cái level này độc lập với nhau mà ??? 
À nếu mình nhớ không nhầm thì để execute được binary của lvl sau trên server vortex thì cần login với credentials của lvl trước. Hoặc giả luật mới đổi thì mình không rõ lắm.]]>
/hvaonline/posts/list/23615.html#174923 /hvaonline/posts/list/23615.html#174923 GMT
PullThePlug wargame Code:
#include<stdio.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdlib.h>
#include<netdb.h>
#include<string.h>

#define PORTNO 24000
#define MAXLEN 10000

int main()
{
	char buffer[MAXLEN+1];
	int mysocket,len,i;
	struct sockaddr_in mydest;
	mysocket = socket(PF_INET,SOCK_STREAM,0);
	mydest.sin_family = AF_INET;
	mydest.sin_port = htons(PORTNO);
	mydest.sin_addr.s_addr = inet_addr("69.55.233.89");
	connect(mysocket,(struct sockaddr*)&mydest,sizeof(struct sockaddr));
	len = recv(mysocket,buffer,MAXLEN,0);
        for(i=0;i<len;i++)
	         printf("%d\n",buffer[i]);
	close(buffer);
	return EXIT_SUCCESS;
}
mình chỉ nhận được 127 (1 byte). Mong mọi người hướng dẫn.>]]>
/hvaonline/posts/list/23615.html#234689 /hvaonline/posts/list/23615.html#234689 GMT
PullThePlug wargame http://www.overthewire.org/wargames/vortex/vortex0.shtml bằng Python: Code:
import sys
from struct import *
from socket import *
mysocket = socket(AF_INET, SOCK_STREAM)
mysocket.connect(("vortex.labs.overthewire.org", 5842))
buffer_ = ''
while len(buffer_) < 16:
	buffer_ = buffer_ + mysocket.recv(4)

print len(buffer_)
print buffer_
intlist = unpack("IIII", buffer_)
print intlist
result = sum(intlist)
print result
mysocket.send(pack("Q", result))
print mysocket.recv(10000)
Mình mạn phép bỏ kết quả của bạn bolzano_1989 - Ky0]]>
/hvaonline/posts/list/23615.html#253512 /hvaonline/posts/list/23615.html#253512 GMT
PullThePlug wargame /hvaonline/posts/list/23615.html#253572 /hvaonline/posts/list/23615.html#253572 GMT PullThePlug wargame

cr4zyb0y wrote:
có một luật ngầm của giới chơi wargame loại này là không bao giờ viết ra lời giải, hoặc để thông tin mật khẩu ra như bạn  
Chào Tiến, cảm ơn góp ý của bạn, mình thấy vui là chính thôi, biết và nhớ mấy cái luật ngầm kia làm gì chứ :) . ]]>
/hvaonline/posts/list/23615.html#253575 /hvaonline/posts/list/23615.html#253575 GMT
PullThePlug wargame /hvaonline/posts/list/23615.html#253588 /hvaonline/posts/list/23615.html#253588 GMT PullThePlug wargame /hvaonline/posts/list/23615.html#271989 /hvaonline/posts/list/23615.html#271989 GMT PullThePlug wargame /hvaonline/posts/list/23615.html#272023 /hvaonline/posts/list/23615.html#272023 GMT