List soal PWN untuk KSL Seleksi
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

82 行
1.8 KiB

6年前
6年前
6年前
  1. //gcc -g -no-pie -fno-stack-protector -fno-pic -fno-builtin -mpreferred-stack-boundary=2 -m32 ingin_melompat.c -o ingin_melompat
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <unistd.h>
  6. int wallet = 18;
  7. char burung[8];
  8. void secret_message(){
  9. system("/bin/sh");
  10. }
  11. void init(){
  12. setvbuf(stdin, NULL, _IONBF, 0);
  13. setvbuf(stdout, NULL, _IONBF, 0);
  14. setvbuf(stderr, NULL, _IONBF, 0);
  15. }
  16. void buy_flag(){
  17. if(wallet < 999999999999) printf("kamu terlalu lemah dude :)\n");
  18. else secret_message();
  19. }
  20. void jual_burung(){
  21. char buffer[64];
  22. printf("burung apa yang kamu mau jual ?\n");
  23. read(0,buffer,128);
  24. }
  25. void menu(){
  26. printf("+--------------------------------+\n");
  27. printf("------------PASAR BURUNG----------\n");
  28. printf("+--------------------------------+\n");
  29. printf("1. beli flag (999999 ruby)\n");
  30. printf("2. beli garuda (10 ruby)\n");
  31. printf("3. lihat burung yang udah di beli\n");
  32. printf("4. jual burung\n");
  33. printf("5. check wallet\n");
  34. printf("6. exit\n");
  35. }
  36. int main()
  37. {
  38. while(1){
  39. char pilihan;
  40. init();
  41. menu();
  42. printf(">>");
  43. fflush(stdout);
  44. scanf("%s",&pilihan);
  45. switch(pilihan){
  46. case '1' :
  47. buy_flag();
  48. break;
  49. case '2' :
  50. if(wallet > 10){
  51. printf("burung berhasil di beli\n");
  52. wallet = wallet - 10;
  53. strcpy(burung,"garuda");
  54. } else printf("uang gak cukup!\n");
  55. break;
  56. case '3' :
  57. if(strlen(burung) == 0) printf("belum ada yang kamu beli!\n");
  58. else printf("burung yg dah di beli : %s\n",burung);
  59. break;
  60. case '4' :
  61. jual_burung();
  62. break;
  63. case '5' :
  64. printf("isi wallet : %d ruby\n",wallet);
  65. break;
  66. case '6' :
  67. printf("makasih udah berkunjung :)\n");
  68. exit(0);
  69. break;
  70. default :
  71. fprintf(stderr,"bad request!\n");
  72. exit(0);
  73. }
  74. }
  75. }