Protostarnet3

This level is at /opt/protostar/bin/net3<h3 Droid Sans', sans-serif; font-weight: normal; line-height: 40px; color: rgb(255, 255, 255); text-rendering: optimizelegibility; font-size: 31.5px; background-color: rgb(18, 20, 23);">Source code

#include "../common/common.c"

#define NAME "net3"
#define UID 996
#define GID 996
#define PORT 2996

/*
* Extract a null terminated string from the buffer
*/

int get_string(char **result, unsigned char *buffer, u_int16_t len)
{
unsigned char byte;

byte = *buffer;

if(byte > len) errx(1, "badly formed packet");
*result = malloc(byte);
strcpy(*result, buffer + 1);

return byte + 1;
}

/*
* Check to see if we can log into the host
*/

int login(unsigned char *buffer, u_int16_t len)
{
char *resource, *username, *password;
int deduct;
int success;

if(len < 3) errx(1, "invalid login packet length");

resource = username = password = NULL;

deduct = get_string(&resource, buffer, len);
deduct += get_string(&username, buffer+deduct, len-deduct);
deduct += get_string(&password, buffer+deduct, len-deduct);

success = 0;
success |= strcmp(resource, "net3");
success |= strcmp(username, "awesomesauce");
success |= strcmp(password, "password");

free(resource);
free(username);
free(password);

return ! success;
}

void send_string(int fd, unsigned char byte, char *string)
{
struct iovec v[3];
u_int16_t len;
int expected;

len = ntohs(1 + strlen(string));

v[0].iov_base = &len;
v[0].iov_len = sizeof(len);

v[1].iov_base = &byte;
v[1].iov_len = 1;

v[2].iov_base = string;
v[2].iov_len = strlen(string);

expected = sizeof(len) + 1 + strlen(string);

if(writev(fd, v, 3) != expected) errx(1, "failed to write correct amount of bytes");

}

void run(int fd)
{
u_int16_t len;
unsigned char *buffer;
int loggedin;

while(1) {
nread(fd, &len, sizeof(len));
len = ntohs(len);
buffer = malloc(len);

if(! buffer) errx(1, "malloc failure for %d bytes", len);

nread(fd, buffer, len);

switch(buffer[0]) {
case 23:
loggedin = login(buffer + 1, len - 1);
send_string(fd, 33, loggedin ? "successful" : "failed");
break;

default:
send_string(fd, 58, "what you talkin about willis?");
break;
}
}
}

int main(int argc, char **argv, char **envp)
{
int fd;
char *username;

/* Run the process as a daemon */
background_process(NAME, UID, GID);

/* Wait for socket activity and return */
fd = serve_forever(PORT);

/* Set the client socket to STDIN, STDOUT, and STDERR */
set_io(fd);

/* Don't do this :> */
srandom(time(NULL));

run(fd);
}

乍一看,好長(zhǎng)的代碼~~~但是還是得看~~~:-)
程序先讀一個(gè)長(zhǎng)度,這個(gè)長(zhǎng)度就是待會(huì)客戶(hù)端即將發(fā)過(guò)來(lái)的字符串的長(zhǎng)度,第二次讀時(shí)獲取一個(gè)字符串,首先先判斷第一個(gè)字符的值是否為23,是則繼續(xù)
然后分析get_string()函數(shù),先讀第一個(gè)字符,也是長(zhǎng)度的意思,然后取出該長(zhǎng)度的字符保存在那指針里面,如果三次取出的字符分別是net3,awesomesauce,password的話(huà)即可success。
以下是代碼:

#!/usr/bin/env python


from socket import *
from struct import *
from optparse import OptionParser
import select

def main(hostname,port):
s = socket(AF_INET,SOCK_STREAM)
s.connect((hostname,port))

send_str = ("\x17"
"\x05net3\x00"
"\x0dawesomesauce\x00"
"\x09password\x00")

send_len = len(send_str)
s.send(pack(">H", send_len))
s.send(send_str)

print s.recv(1024)

s.close()


if __name__=="__main__":
parse = OptionParser("usage: %prog [options]")
parse.add_option("-H",dest="hostname",default="127.0.0.1",type="string",help="The ip of the target")
parse.add_option("-P",dest="port",default=2996,type="int",help="The port of the host")

(options,args)=parse.parse_args()

main(options.hostname,options.port)

運(yùn)行結(jié)果:
Protostar net3


名稱(chēng)欄目:Protostarnet3
標(biāo)題路徑:http://m.kartarina.com/article20/gechco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司定制網(wǎng)站小程序開(kāi)發(fā)外貿(mào)建站品牌網(wǎng)站設(shè)計(jì)品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
主站蜘蛛池模板: 日韩人妻无码精品久久久不卡| 免费A级毛片无码久久版 | 无码日韩人妻AV一区二区三区| 无码av人妻一区二区三区四区| 无码人妻一区二区三区免费 | 日韩精品无码区免费专区 | 精品久久久久久久无码| 亚洲色偷拍区另类无码专区| 久久亚洲精品中文字幕无码| 无码任你躁久久久久久| 无码A级毛片免费视频内谢| 无码人妻aⅴ一区二区三区| 亚洲国产成人精品无码一区二区| 一本大道无码日韩精品影视_| 久久久无码精品亚洲日韩按摩 | 久久AV无码精品人妻出轨| 亚洲中文字幕不卡无码| 亚洲精品无码激情AV| 亚洲精品无码成人| 熟妇人妻中文字幕无码老熟妇| 无码专区国产无套粉嫩白浆内射| 无码国产精品一区二区免费| 国99精品无码一区二区三区| 国产成人无码a区在线视频| 精品无码国产一区二区三区51安| 亚洲AV区无码字幕中文色| 日韩精品无码一区二区视频| 无翼乌工口肉肉无遮挡无码18| 中文午夜人妻无码看片| 精品无码无人网站免费视频| 无码超乳爆乳中文字幕久久| 久久午夜无码鲁丝片直播午夜精品 | 亚洲日韩精品无码专区| 精品一区二区三区无码免费视频| 一本加勒比HEZYO无码资源网| 久久久无码精品亚洲日韩软件| 人妻av无码专区| 超清无码熟妇人妻AV在线电影| 亚洲国产综合无码一区二区二三区| 亚洲AV无码XXX麻豆艾秋| 无码人妻精品一二三区免费|