From 818086c96f3a3c8c8c2562b7814e67ead6a81a1b Mon Sep 17 00:00:00 2001 From: myitinos Date: Fri, 7 Sep 2018 15:32:14 +0800 Subject: [PATCH] first commit --- blackmarket | Bin 0 -> 12756 bytes blackmarket.c | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++ test.sh | 2 + 3 files changed, 262 insertions(+) create mode 100644 blackmarket create mode 100644 blackmarket.c create mode 100644 test.sh diff --git a/blackmarket b/blackmarket new file mode 100644 index 0000000000000000000000000000000000000000..ebef628f8adf424f1f04fa3208247701c7a9d697 GIT binary patch literal 12756 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 literal 0 HcmV?d00001 diff --git a/blackmarket.c b/blackmarket.c new file mode 100644 index 0000000..b421779 --- /dev/null +++ b/blackmarket.c @@ -0,0 +1,260 @@ +//gcc -m32 -fno-stack-protector -z execstack -no-pie blackmarket.c -o blackmarket +#include +#include +#include +#include +#include +#include +#include "blackmarket.h" + +#define BUFSIZE 0x1ff + +int diamond; + +void not_used(){ + system("/bin/sh"); +} + +Node *Node_create(){ + Node *node = malloc(sizeof(Node)); + + assert(node != NULL); + + node->data = ""; + node->next = NULL; +} + +List *List_create(){ + List *list = malloc(sizeof(List)); + assert(list != NULL); + + Node *node = Node_create(); + list->first = node; + return list; +} + +void List_append(List *list, char *str){ + assert(list != NULL); + assert(str != NULL); + + Node *node = list->first; + while(node->next != NULL){ + node = node->next; + } + node->data = str; + node->next = Node_create(); +} + +int List_find(List *list, char *str){ + assert(list != NULL); + assert(str != NULL); + + int index = 0; + Node *node = list->first; + while(node->next != NULL){ + int cmp = strcmp(str, node->data); + if(cmp == 0){ + return index; + } + node = node->next; + index++; + } + return -1; +} + +int List_length(List *list){ + assert(list != NULL); + + Node *node = list->first; + int length = 0; + while(node->next != NULL){ + length++; + node = node->next; + } + return length; +} + +void Node_destroy(Node *node){ + assert(node != NULL); + free(node); +} + +void List_remove(List *list, int index){ + assert(list != NULL); + if(index < 0){ + exit(0); + }else{ + assert(index < List_length(list)); + + if(index == 0){ + Node *node = list->first; + list->first = list->first->next; + Node_destroy(node); + }else{ + Node *before = list->first; + for(int i=1; inext; + index--; + } + Node *node = before->next; + before->next = before->next->next; + Node_destroy(node); + } + } +} + +void List_print(List *list){ + if(list != NULL){ + printf("["); + Node *node = list->first; + if(node->next == NULL){ + printf("NULL"); + } + while(node->next != NULL){ + printf("%s", node->data); + node = node->next; + if (node->next != NULL){ + printf(", "); + } + } + printf("]\n"); + } +} + +int sell_item(char *item){ + int current_wallet = 0; + + if(strcmp(item, "potatoes") == 0){ + printf("You've earn 50 wallet!\n"); + current_wallet = 50; + return current_wallet; + }else if(strcmp(item, "grape") == 0){ + printf("You've earn 100 wallet!\n"); + current_wallet = 100; + return current_wallet; + }else if(strcmp(item, "apel") == 0){ + printf("You've earn 60 wallet!\n"); + current_wallet = 60; + return current_wallet; + } +} + +void message(){ + printf("You don't have enough wallet!\n"); +} + +void success_msg(char *item){ + printf("%s added to the list!\n", item); +} + +void menu(){ + + printf("+-----------------------+\n"); + printf("MASSIVE BLACKMARKET STORE\n"); + printf("+-----------------------+\n"); + printf("1. buy flag (200 Diamond)\n"); + printf("2. buy potatoes (50 Wallet)\n"); + printf("3. buy grape (100 Wallet)\n"); + printf("4. buy apel (60 Wallet)\n"); + printf("5. show items\n"); + printf("6. sell items\n"); + printf("7. check wallet\n"); + printf("8. check diamond\n"); + printf("9. get free diamond!\n"); + printf("10. exit\n"); +} + +int main(){ + + List *l = List_create(); + char buffer[BUFSIZE+1], ans[2]; + int wallet = 300, temp, try = 0; + + LOOP:while(1){ + menu(); + printf(">>"); + fflush(stdout); + scanf("%s", &ans); + if(strcmp(ans, "1") == 0){ + if(diamond < 200){ + printf("Not enough diamond to buy flag!\nnothing to add.\n"); + goto LOOP; + }else if(diamond >= 200){ + diamond = diamond - 200; + List_append(l, "flag"); + success_msg("flag"); + goto LOOP; + } + }else if(strcmp(ans, "2") == 0){ + if(wallet < 50){ + message(); + goto LOOP; + } + success_msg("potatoes"); + wallet = wallet - 50; + List_append(l, "potatoes"); + goto LOOP; + }else if(strcmp(ans, "3") == 0){ + if(wallet < 100){ + message(); + goto LOOP; + } + success_msg("grape"); + wallet = wallet - 100; + List_append(l, "grape"); + goto LOOP; + }else if(strcmp(ans, "4") == 0){ + if(wallet < 60){ + message(); + goto LOOP; + } + success_msg("apel"); + wallet = wallet - 60; + List_append(l, "apel"); + goto LOOP; + }else if(strcmp(ans, "5") == 0){ + printf("\nYour Items :\n"); + List_print(l); + goto LOOP; + }else if(strcmp(ans, "6") == 0){ + getchar(); + printf("What items you want to sell ?\n"); + fflush(stdout); + fgets(buffer, sizeof(buffer), stdin); + printf("You sell : "); + printf(buffer); + strtok(buffer, "\n"); + int check = List_find(l, buffer); + if(check == (-1)){ + printf("Not Found!\n"); + exit(1); + }else{ + List_remove(l, List_find(l, buffer)); + wallet = wallet + sell_item(buffer); + } + }else if(strcmp(ans, "7") == 0){ + printf("\nYour Wallet : %d\n", wallet); + goto LOOP; + }else if(strcmp(ans, "8") == 0){ + printf("\nYour diamond : %d\n", diamond); + goto LOOP; + }else if(strcmp(ans, "9") == 0){ + try += 1; + srand(time(NULL)); + int r = rand() % 10; + if(try <= 4){ + printf("You get %d diamond\n", r); + diamond = diamond + r; + goto LOOP; + } + printf("No diamond for you!\n"); + goto LOOP; + }else if(strcmp(ans, "10") == 0){ + printf("Thankyou for visiting!"); + exit(0); + }else{ + fprintf(stderr, "Bad Request!\n"); + exit(0); + } + } +} diff --git a/test.sh b/test.sh new file mode 100644 index 0000000..b8c13ce --- /dev/null +++ b/test.sh @@ -0,0 +1,2 @@ +#!/bin/bash +socat TCP-LISTEN:2324,reuseaddr,fork EXEC:"./blackmarket"