[Python 2] input() 취약점에 대하여 포스팅 썸네일 이미지

Coding_Algorithm/Python

[Python 2] input() 취약점에 대하여

0. 조사하게 된 계기 CTF문제를 풀다가 엄청난걸 알아냈습니다 python2에 한해서 input함수는 eval(raw_input(prompt))로 실행된다는 사실이요. 일단 eval함수 자체가 보안측면에서 봤을 때는 위험한 함수죠. (명령어를 실행시킬 수 있는 함수인지라) 그래서 조금 더 찾아봤는데 생각보다 뭐가 많더라구요! 그래서 정리할 겸 찾아봤습니다. 1. input함수 자체에 대하여 일단 input함수 자체에 대해서 조금 탐구를 해봅시다. python2에서 이 함수의 가장 큰 특징은 "알아서 형변환"을 해준다는 점입니다. 직접 확인해봅시다 s1 = input("input()>> ") print(type(s1)) s2 = input("input()>> ") print(type(s2)) s3 = i..

2021.05.17 게시됨

[DawgCTF 2021] :pwn: MDL Considered Harmful Write-Up 포스팅 썸네일 이미지

CTF

[DawgCTF 2021] :pwn: MDL Considered Harmful Write-Up

MDL Considered Harmful - 225pts Description Tag pwn, Discord bot, real-world, LFI, CVE-2016-3714 Problem Analysis 이 문제는 Discord Bot을 통해서 exploit을 하는 문제였습니다. 이 봇은 이런식으로 코드를 작성하면, meme을 만들어주는 봇입니다. 이 봇에대한 정보를 조금 알아보면, ImageMagick이라는 caption command를 통해서 제작을 한다고 하네요. 이거 이외에는 코드에 대한 힌트가 전혀 없기 때문에, 이에 대한 조사를 조금 해보았습니다. https://imagetragick.com/ ImageTragick What's with the stupid (logo|website|twitte..

2021.05.15 게시됨

[DawgCTF 2021] :pwn: No Step On Snek Write-Up 포스팅 썸네일 이미지

CTF

[DawgCTF 2021] :pwn: No Step On Snek Write-Up

No Step On Snek - 75pts Description Tag pwnable, python, RCE Problem Analysis 접속을 하면 이런 창이 나타나는데, 설명에 쓰여져있는 키를 눌러도 아무것도 실행이 되지 않습니다. 그래서 이상한 값을 집어넣는 경우에는 이런게 발생합니다. 보아하니, make_move(maze)라는 명령어가 실행이 되고, 이때 maze라는 것은 저희의 입력인 것을 알 수 있네요. 이 점을 이용해서 code injection을 실행시켜주면 좋지 않을까 생각합니다. Exploit 그래서 확인을 우선 해 봅시다! __builtins__.__dict__['__import__']("os").system("ls") 잘 실행이 되네요. 그래서 바로 flag.txt를 열어보면 __..

2021.05.14 게시됨

[Python] Built-in 객체 사용하기, 응용하기 (Python RCE) 포스팅 썸네일 이미지

SYSTEM HACKING/PWNABLE&REVERSING

[Python] Built-in 객체 사용하기, 응용하기 (Python RCE)

Built-in 객체 사용하기, 응용하기 (for CTF) Python built-in functions (Python RCE) 요즘 python으로 포너블 문제가 많이 나오던데, 왠만하면 이거 관련 문제들이여서 한번 정리하려고 합니당 1. __builtin__ 객체 소개 일단 'built-in'함수라는건 누구나 알고 있다고 생각합니다. 그 python에서 기본적으로 제공하는 그 함수들 맞아유! 더 중요하게 봐야할 건 built-in 객체입니다. 예를 들어, builtins.open 은 내장 함수 open() 의 완전한 이름입니다. 이렇게 모든 내장 식별자를 연결하는 액세스를 제공합니다. 어려워 보일 수 있는데 사실 우리가 평소에 사용하던 것들입니다. 혹시나 더 궁금하신 분들은 여기로 #1. Using ..

2021.05.14 게시됨

[DawgCTF 2021] Write-Up :Misc: 포스팅 썸네일 이미지

CTF

[DawgCTF 2021] Write-Up :Misc:

DawgCTF에 참가했습니다! 풀었던 문제 및 복습한 문제들 작성할게용 1. DawgCTF Discord - 5 pts (Solved) Tag : Misc, Discord 2. Toliet Humor 5 - 50pts 진짜 화났던 문제....😤 Tag: Misc, Emoji 이걸 푸느라 애쓴 내가 싫다..(한 30분 붙잡고있다가 결국못품) flag는 DawgCTF{5️⃣💩} 였습니다.... 개인적으로 이런 문제는 내지 말았으면 해요ㅎ... 그래도 제작자 말로는 meme이라고 하니 내가 트렌드에 따라가지 못하는걸로... +) 2021.08.06 추가 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 이거 특정 unicode값에 대해서 url 처리를 비정상적으로 해주는 오류가 있다고 하네요. 자료는 찾을 수 없는데, pwnable.kr에..

2021.05.11 게시됨

[C] pthread_mutex 이해하기 포스팅 썸네일 이미지

Coding_Algorithm/C_C++

[C] pthread_mutex 이해하기

thread에서 가장 중요한 이슈는 race condition입니다. 동일한 메모리에 접근할 때, 그 메모리에 대해서 일관성이 유지될수 있는가?에대한 문제죠. 이런걸 해결하기 위해서 대표적으로 사용할 수 있는 함수가 pthread_mutex입니다. 오늘은 그 함수를 어떻게 사용해야하는지에 대해서 보도록 하겠습니다. 01. 문제상황 이해 우선 문제가 있는 상황을 통해서 이해를 해봅시다. 다음은 간단한 thread를 통한 코드입니다 #include #include #include int mails = 0; void* routine(){ for (int i=0;i

2021.05.07 게시됨

Thread에 대하여 - C언어 기준으로 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

Thread에 대하여 - C언어 기준으로

Thread에 대하여 1. Introduction 우선 Thread를 이야기 할 때 항상 거론되는 Process에 대해서 간단히 이야기해봅시다. Process에 대해서는 앞서 글을 써놨으니 참고합시다. C언어에서 가장 대표적으로 프로세스를 생성할 때 쓰는 함수는 fork()입니다. 그러나 이 과정은 매우 비쌉니다.(자원의 측면에서) 우선 프로세스라는 것 자체가 자원을 공유하지 않고 각각의 code, data 등을 가지기 때문에 기존의 process의 것들을 다 복사를 해 주어야 합니다. 이걸 해결하기 위해 COW(Copy on Write)방법같은것도 고안되었지만, 만족스러운 수준까지 성능이 향상되지는 않았습니다. 그래봤자 page table이라던가 file descriptor table같은건 복사해주어야..

2021.05.06 게시됨

[OS] Scheduling Techniques Depending on Environment 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[OS] Scheduling Techniques Depending on Environment

Scheduling Techniques Multiple-Processor Scheduling 앞서서는 Scheduling 알고리즘 자체에 대해서 알아보았습니다. 근데 그 알고리즘들은 모두 single-processor라는 전제 하에 배웠는데, 오늘은 그 이외의 상황들에 있어서는 어떤 방식으로 스케줄링이 되어야 하는지에 대해서 알아보도록 하겠습니다. 1. Multiple-Processor Scheduling 우선 이 멀티프로세서 스케줄링의 경우에는 여러개의 비슷한(homogeneous) 프로세서들로 이루어져있습니다. 이러한 멀티프로세싱은 크게 두 가지로 나뉩니다. - Asymmetric Multiprocessing '비대칭'이라는 단어처럼 하나의 대장 프로세서가 있고, 그 친구가 스케줄링 및 자원분배를 담..

2021.04.28 게시됨

[OS] Scheduling Algorithm - 2 (RR, Priority Scheduling, Multilevel Queue) 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[OS] Scheduling Algorithm - 2 (RR, Priority Scheduling, Multilevel Queue)

Scheduling Algorithm - 2 RR, Priority Scheduling, Multilevel Queue 1편에 이어서 Scheduling Algorithm에 대해서 계속 알아봅시다. 1. RR (Round Robin) 기본적으로 FCFS(First-Come First-Served)에서 preemptive가 추가되었다고 보면 됩니다. Round Robin 알고리즘에서 가장 중요한 점은 모든 프로세스에 기본적으로 같은 시간을 준다는 것입니다. 실제로는 보통 0~100ms 정도의 시간을 준다고 하네요. 아무튼 미리 정해놓은 시간이 다 되면, CPU를 뺐기고, queue의 뒤로 가는 식으로 진행됩니다. 대신에, 이 time unit이 너무 크면 FCFS랑 같은 격이 되고, 너무 잦은 경우에는 너..

2021.04.27 게시됨

[OS] Scheduling Algorithm - 1 (FCFS, SJF) 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[OS] Scheduling Algorithm - 1 (FCFS, SJF)

Scheduling Algorithm - 1 FCFS, SJF 1. FCFS(First-Come, First-Served) Scheduling 가장 먼저 생각할 수 있는 알고리즘입니다. 따로 생각할 필요 없이, ready queue에 쌓이는 순서대로 바로 CPU에게 연결시켜주는 알고리즘입니다. 그냥 FIFO방식인 queue와 완벽하게 똑같습니다. 예시와 함께 봅시다. 다음과 같이 ready queue가 쌓여있다고 가정합시다. 순서는 P1, P2, P3의 순서로 쌓여있다고 가정합시다. 또한, I/O는 발생하지 않는다고 가정합니다. 그럼 이 ready queue에 대해서 실행시키는 과정을 그림으로 그려봅시다. 다음과 같이 볼 수 있겠죠? 앞서 배웠던 평가 척도를 적용시킵시다. Waiting time P1 =..

2021.04.27 게시됨