Constructing Minimal DFA using Myhill-Nerode Theorem 포스팅 썸네일 이미지

수학

Constructing Minimal DFA using Myhill-Nerode Theorem

Myhill-Nerode Theorem 하나의 Language에 있어서 그에 적합한 DFA는 많지만, 최소화된 상태의 DFA는 하나뿐입니다. 따라서 DFA를 최소화시키기 위한 다양한 이론들이 있는데, 오늘은 Myhill-Nerode Theorem에 대해서 공부하고, 적용시켜보려고 합니다. 1. 기본적인 DFA minimizing method DFA가 필요 이상으로 늘어나는 이유는 줄일 수 있는 states를 과도하게 늘려서입니다. 따라서 같은 입력과 같은 출력을 내뱉는 states들에 대해 "indistinguishable"하다라고 표현합니다. 기호로는 다음과 같이 표현할 수 있습니다. Two states, s and t, are equivalent if for all possible stings w, ..

2021.04.15 게시됨

[Python] is에 대해서, 그리고 재미있는 문제 하나 포스팅 썸네일 이미지

Coding_Algorithm/Python

[Python] is에 대해서, 그리고 재미있는 문제 하나

1. 비교연산자 'is'에 대하여 is는 python에서 ==과 더불어 python에서 쓸 수 있는 비교문 중 하나입니다. 두 비교문의 차이는 다음과 같습니다. is는 변수가 같은 Object(객체)를 가리키면 True ==는 변수가 같은 Value(값)을 가지면 True is는 객체 자체를 본다면, ==는 값을 확인합니다. 이렇게만 하면 감이 안오기때문에 직접 예시로 봅시다. 우선 간단한 ==예시를 보여드리겠습니다. 너무나도 당연한 과정이죠? 그럼 같은 예시를 is를 가지고 해봅시다. is는 "값"이 같은지 보는게 아니라, "객체"가 같은지 확인해서 그렇습니다. 비록 같은 값이여도, 다른 객체(object)이기 때문에 False를 반환하는 것을 볼 수 있습니다. 이외는 직접 코드를 작성해주시면서 확인하..

2021.04.11 게시됨

[Python] 레퍼런스(reference)에 대해서 포스팅 썸네일 이미지

Coding_Algorithm/Python

[Python] 레퍼런스(reference)에 대해서

안녕하세요, 오늘은 레퍼런스에 대해서 이야기하려고 합니다. 공부하다가 흥미로운 점을 찾아서유 0. 레퍼런스란? 우선 레퍼런스가 뭔지부터 알아봅시다. C언어와 달리 Python에서는 "주소"라는 개념이 없습니다. 대신 레퍼런스라는 개념이 있고, 이 레퍼런스를 얻기 위해서는 id()함수를 사용합니다. 아래 정의를 봅시다. id(object) Return the “identity” of an object. This is an integer which is guaranteed to be unique and constant for this object during its lifetime. Two objects with non-overlapping lifetimes may have the same id() valu..

2021.04.10 게시됨

[HackCTF] :pwn: Unexploitable_1 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] :pwn: Unexploitable_1

shift+F12를 누르면 다음과 같이 모든 string을 볼 수 있는데, "fflush"안에 sh가 들어있죠? 그래서 이 부분을 이용해서 system을 실행해보려고 합니다. 0x4003BB가 fflush의 시작이니, sh만 불러오고 싶으면 0x4003BF겠죠? 혹시모르니 확인해봅시다. 굳굳 이대로 가봅시다 생각해보니깐 당연히 함수쪽 data에서도 긁어와도 되는건데 한번도 그렇게 해볼 생각이 없었네요..! 근데 평소에는 system주소까지 알아내야하니깐 binsh만 구하기 귀찮은 특수한 상황에만 쓸만하겠네요...

2021.04.03 게시됨

[Kernel] System Call에 대하여 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[Kernel] System Call에 대하여

System Call 오늘은 System Call에 대해서 정리해볼겁니다. 포너블하면서 겉핥기한정도가 끝인데, 제대로 배워보니 생각보다 복잡하네요. 각설하고, 바로 설명 시작해봅시다. 0. 인터럽트(Interrupt)란? 결론만 이야기하면, System Call도 결국 소프트웨어 인터럽트의 일종이라, 인터럽트에 대해서 알고 갈 필요가 있을 것 같습니다. 우선 OS는 기본적으로 User 모드와 Kernel 모드로 나뉘어져 있습니다. 안전을 위해서 각 모드에서 할 수 있는 일이 다릅니다. User Mode : I/O나 Protected Instruction을 포함해서 사용시 문제가 될 수 있는 주소 영역에 대해 접근 불가능 Kernel Mode : I/O devices를 포함해서 모든 주소 영역이 접근 가능..

2021.04.02 게시됨

20210402 포스팅 썸네일 이미지

잡소리

20210402

과제하기 싫어서 오랜만에 쓰는 아무말 -1- 예전에 써놓은 글들 읽는데 생각보다 재미있다ㅋㅋㅋㅋ 그때 당시 생각도 나고, 아 그랬었지...하면서 추억팔이도 하고있다. 물론 전체공개로 쓰고있어서 이게맞나 싶은 느낌도 들긴 하는데 아무도 관심을 주지 않아서 다행이다. 쪽팔리면 비공으로 돌리지 뭐ㅎㅅㅎ -2- 인생 전체에 대한 스트레스가 많아진거같다. 3학년밖에 안되긴했지만 벌써 사회에 나갈 준비를 해야만 할 것 같은 느낌..? 2학년때는 그냥 내가 하고 일에 대해서 관심만 가져도 되고, 성과는 그리 중요하지 않았다면 3학년때부터는 뭔가 의미있는 일을 해야만 할 것 같은 느낌..? 뭔가를 하고 있긴 한데 이게 의미가 있는가에 대한 고민이 많은 것 같다 물론 한 1~2년뒤에 이걸 다시 보면서 좋은때라고 할거지만..

2021.04.02 게시됨

[HackCTF] :pwn: uaf 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] :pwn: uaf

봅시다 1. 문제 분석 먼저 add_note입니다. 밑에가 짤리긴 했는데 저정도만 봐도됨. malloc은 총 2번 일어납니다. 크기가 8인 notelist에 한번, 그리고 요청하는 크기의 v0[1]에 한번 더 일어나네요. 다음은 del_note입니다. del_note에서는 해당 notelist[v1]과 v0를 free합니다. 순서정도는 기억해둡시다. (*(notelist[v1]+1)은 노트의 내용) 그리고 마지막으로 print_note 요청한 내용을 출력시켜줍니다. 눈여겨봐줄 부분은 notelist[v1]의 값을 주소로 가져와서 바로 실행시키는 것을 볼 수 있습니다. (이부분도 기억해줍시다.) 아참 magic함수도 있습니다. 당연히 이걸 출력시키는게 목적이겠죠? 2. 취약점 찾기 우선 Use After ..

2021.03.30 게시됨

[HackCTF] :pwn: pwning 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] :pwn: pwning

고고 main함수는 바로 vuln함수로 뛰어서 생략! 함수의 전체적인 흐름은 입력하고 싶은 바이트수만큼 입력을 받고, 요청한 만큼 출력을 시켜주는 것으로 보입니다. 근데 입력받는 함수가 평소에 자주쓰는 gets가 아니라 사용자 지정함수네요. 직접 봅시다 값을 입력받아서 하나씩 버퍼에 입력을 해주는 방식이네요. while루프를 빠져나가는 조건은 v4에 값이 할당이 안되었을 경우, \n이 입력된 경우, 그리고 크기가 음수인 경우네요. 근데 a2를 보면 unsigned int인 점을 볼 수 있습니다. 즉, 처음 get_n에서 &nptr에 음수를 입력하면, 두번째 get_n에 음수가 unsigned int로 바뀌면서 결론적으로 0x20보다 훨씬 더 큰 값을 넣을 수 있다는 점을 알 수 있습니다. 이걸가지고 그냥..

2021.03.27 게시됨

[HackCTF] :rev: babyMIPS 포스팅 썸네일 이미지

카테고리 없음

[HackCTF] :rev: babyMIPS

우선 이 문제에서 특이한 점은 MIPS로 이루어진 프로그램이라는 것입니다. 보통은 이렇게 인텔문법으로 되어있죠. MIPS인 덕분에 아이다에서는 대차게 빠꾸를 먹을 수 있습니다. 역시 믿는 구석은 기드라 뿐 undefined4 main(void) { char cVar1; size_t sVar2; int local_38; char cStack49; int local_30; uint local_2c; undefined4 local_28; char local_24 [28]; memset(local_24,0,0x1a); printf((char *)0xdf0); __isoc99_scanf(0xdfc,local_24); sVar2 = strlen(local_24); if (sVar2 == 0x19) { local_3..

2021.03.26 게시됨

WEB

[PHP] Magic Hash

오늘은 취약점...?이라고 하기에는 애매하지만, 아무튼 unintended한 동작으로 이루어지는 magic hash에 대해서 알아볼 것입니다. 봅시다. 1. Type juggling이란? 기본적으로 Type juggling이라는 개념을 알고 가야 합니다. Type casting이라고도 하죠. 말은 처음 들을수도 있지만 다들 코딩공부 하셨다면 다들 "형변환"에 대해서 들어보셨을겁니다. 직접 코딩할때도 수도없이 쓰고요. 다음 코드의 결과값을 예측해봅시다. #include int main(){ double a = 1.23; int b = int(a); print("%d", b); return 0; } 간단한 코드죠. 당연히 다음 값의 결과는 1이 나오겠죠? 기본적으로 다음과 같은 원리입니다. 더 본격적인 이야..

2021.03.26 게시됨