분류 전체보기

🌇│System_Study/📕│Dreamhack_Hacking

basic_exploitation_003

basic_exploitation_003 문제 풀이 또 x86..이네요 이거 이젠 익숙해지겠네 좋다 NX와 Partial RELRO.. 그러나 FSB로 풀어야하는 문제니까 C코드를 보시면 head_buf가 적절하게 ret부분에 get_shell()주소로 변경하면 될 거 같은데.. sprintf 는 길이를 따로 지정하지 않기 때문에 bof가 발생한다. BOF문제이지만.. 입력할 수 있는 글짜 수가 read로 0x80으로 제한 되어 있습니다 저희는 0x90을 넘겨야하는데.. Exploit 설계 ret 주소를 파악하고 %Nc로 ret에 get_shell()주소를 입력하면 끝나겠네요 Exploit stack_buf의 주소는 sprintf로 되니까 위와 같이 확인도 됩니다 heap_buf의 주소는 read에서 확..

🌇│System_Study/📕│Dreamhack_Hacking

hook

hook 문제 풀이 이번에도 hook overwirte의 문제로 이전 문제에서 봤던 형식과는 약간 다르네요 아무래도 one_gadget처럼은 못하는 듯 싶네요 PIE가 존재하지 않고 RELRO가 FULL.. 상당히 힘들겠네요 PIE가 적용 X인것을 봤을 때 code 영역에서 주소를 활용할 듯? 근데 one_gadget으로 해도 될 거 같긴한데 이름에 따라서 해봅시다 log의 타입의 포인터 하나와 size_t 타입의 변수 선언이 되어있습니다. 그리고 stdout.. 주소를 출력하는데 밑에 ptr이 더블포인터인점을 미루어보았을 땐.. 위에 봤던 더블포인터 ptr부분에서 배열으로 적용되므로 ptr[0]에 들어간 값을 참조하는 값에 ptr[1]을 대입한 모습인 것 같습니다 즉, **ptr = ptr[1]인 느낌..

🌇│System_Study/📕│Dreamhack_Hacking

fho

fho 문제 풀이 모든 보호 기법이 적용되어 있네요.. 와우 들어가기 전에 알아두면 좋은 용어 키워드 Hooking: 어떤 함수, 프로그램, 라이브러리를 실행하려 할 때 이를 가로채서 다른 코드가 실행되게 하는 기법. 디버깅, 모니터링, 트레이싱에 사용될 수 있으며, 공격자에 의해 키로깅이나 루트킷 제작에 사용될 수 있음. Hook Overwrite: 바이너리에 존재하는 훅을 덮어써서 특정 함수를 호출할 때, 악의적인 코드가 실행되게 하는 공격 기법. 메모리 관리와 관련된 malloc, free, realloc등의 함수가 라이브러리에 쓰기 가능한 훅 포인터를 가지고 있어서 공격에 사용될 수 있음. Full RELRO를 우회하는 데 사용될 수 있음. one_gadget: 실행하면 셸이 획득되는 코드 뭉치...

🌇│System_Study/📕│Dreamhack_Hacking

basic_rop_x86

basic_rop_x86 문제 풀이 NX와 Partial RELRO가 걸려있네요 그리고 코드를 접근해보면 Canary는 적용되어 있지 않네요 다행이예요 코드를 보시면 이전 내용이랑 유사한 방법이네요 read()함수에 bof가 발생하니까요 그럼 실제로 어떤 식으로 메모리를 할당되었는지도 확인해봅시다. 실제로는 0x44로 잡혀있네요 Exploit 설계 그럼 저희는 이전에 했던 거처럼 system()함수의 주소를 알아내어 최종적으로 system("/bin/sh") 호출! 그러기 위해 read()함수와 write()를 사용할 것입니다. 실제 주소를 leak하는 방식은 이전에 배웠으므로 생략하겠습니다. 그 다음으로 저희는 rop chain을 이용해 overwirte 해주고 이번엔 bss 영역을 활용하여 접근할거예..

🌇│System_Study/📕│Dreamhack_Hacking

out_of_bound

out_of_bound 문제 풀이 배열의 정해진 인덱스를 넘는 Out of bound 문제로써 x86..으로 Canary와 NX가 존재하네요 name[16]와 command의 문자 배열을 담은 배열이 존재합니다. main이 중심이니까 확인해보시면 name을 입력 받는데 후에 idx를 입력 후 system에 command의 배열에 넣어주는 모습을 보니까 확실히 oob 문제인 듯하네요 결국 우리가 실행할 함수는 system("/bin/sh")이므로 command에는 "/bin/sh"가 없으므로 idx의 값을 활용해 command의 10을 넘어서 코드를 작동한다는 점입니다 Exploit 설계 name 변수가 설정 후 command의 변수가 설정되므로 name변수가 스택의 위치를 확인해봐요 스택은 쌓이기 때문에..

🌇│System_Study/📕│Dreamhack_Hacking

oneshot

out_of_bound 문제 풀이 이번에도 hook overwirte의 문제로 one gadget을 이용해 푸는 문제인데.. 문제는 아직 적용과 응용을 잘 못해서.. 걱정입니다 보시면 RELRO가 partial로 적용 canary는 기초라서 없는 듯 싶고 NX와 PIE가 적용된 모습 main만 보시면 될 듯 싶고, 처음 16 byte 크기의 msg의 배열 선언 저번처럼 stdout의 주소도 알려주는 모습이네요 이것을 활용해 libc_base와 hook 주소를 확인 가능합니다 그 이후 최대 46 바이트 받으므로 bof가 발생합니다 위에 선언한 check라는 변수의 값이 0보다 클 경우 프로그램이 종료되므로 check라는 값의 stack의 위치를 알아내어 0이 되도록 payload 설계가 핵심! mas에 입..

🌇│System_Study/📕│Dreamhack_Hacking

basic_exploitation_002

basic_exploitation_002 문제 풀이 또 x86..이네요 이거 이젠 익숙해지겠네 좋다 NX와 Partial RELRO.. 그러나 FSB로 풀어야하는 문제니까 C코드를 보시면 buf(0x80) 만큼 할당 read()에서 그만큼 입력받기에 BOF는 발생 X 그러나 printf(buf)로 FSB는 된다는 점과 get_shell() 함수를 이용하면 끝나는 점! FSB : Format String Bug 로 개발자의 실수로 빛어진 버그 Exploit 설계 FSB는 %p %x %n %hn %N$FSB 등이 핵심으로써 스택은 쌓이기 때문에 아마 더 높은 변수에 존재할 가능성이 있죠 그럼 10보다 큰 값을 적당히 넣는다면 언젠간 name의 변수에 닿고 name에 "/bin/sh"를 입력하여 그 값을 넣는..

🌆│Web_Study/📘│Dreamhack_Hacking

SQL Injection

1. Background: Relational DBMS 1. 데이터베이스 기본 개념과 DBMS - By L.M.S 1. 데이터베이스 필요성 더보기 💡KEYWORD - 데이터베이스 필요성 - 데이터베이스 정의와 특성 - 데이터와 데이터베이스 - DBMS, 데이터베이스 관리 시스템 데이터란? DATA : 현실 세계에 있는 모든 dystopia050119.tistory.com 관계형 데이터베이스란? 관계형 데이터베이스의 정의와 이를 비즈니스에 이용하는 방법을 알아봅니다. www.oracle.com [database] 관계형 DB와 비관계형 DB의 차이점 안녕하세요~ 오늘은 관계형 데이터베이스와 비관계형 데이터베이스에 대해 알아보겠습니다. 관계형 DB 일반적으로 우리가 배워왔던 Mysql, Oracle, Mss..

Jastes
'분류 전체보기' 카테고리의 글 목록 (10 Page)