728x90
반응형

Hacking 87

OverTheWire [Leviathan Level 4]

Leviathan Level 4 입니다. 숨겨진 디렉터리 .trash 가 있네요. .trash 디렉터리 안에, bin 이라는 SetUID가 설정된 파일이 있습니다. 이 파일을 이용해서 다음 레벨 password를 획득할 수 있을 것 같습니다. 인자 없이 실행해 보았습니다. 2진수가 나오는데요. .....솔직히 이거 보자마자 감이 와서 리버싱 할 필요도 없이 바로 풀었습니다. 2진수를 아스키코드로 변환했더니 그게 바로 다음 레벨 password였습니다. 하지만 이렇게 끝내면 배우는 게 없으니 간단하게라도 분석을 해보겠습니다. main함수 입니다. 일단 시작하자마자 fopen 함수를 통해 leviathan5의 password 파일을 열고 있습니다. 이후, 아래쪽 fgets 함수로 password값을 꺼내왔습..

OverTheWire [Leviathan Level 3]

Leviathan Level 3 입니다. 저번 레벨과 비슷하게, SetUID가 설정된 실행파일이 있습니다. 소유자는 leviathan4 이니, 이 파일을 잘 이용하면 다음 레벨의 권한을 얻을 수 있을 것 같습니다. 인자 없이 실행시켜 보았습니다. 패스워드를 요구하길래 1234를 입력해 보았습니다만, 틀린 패스워드라고 나오네요. 리버싱을 통해 패스워드가 무엇인지 알아내야 할 것 같습니다. 저는 radare2 이용하겠습니다. radare2로 level3 파일을 실행해주고, aaaa 명령어로 프로그램을 분석했습니다. 이후 afl 명령어로 함수목록을 불러왔습니다. 그런데 main 함수가 보이지 않네요.. 어떤 함수를 먼저 살펴볼까 하다가, main은 아니지만 dbg.main 함수를 찾았습니다. 일단 이 함수부터..

TryHackMe [RootMe]

이번 문제는 TryHackMe 사이트에서 풀어볼 수 있는 RootMe 입니다. RootMe는 처음에 침투 대상의 IP주소만 제공하고, 정보 수집, 웹 공격, 시스템 루트권한 획득까지 침투과정을 한번에 연습해볼 수 있는 문제입니다. 저의 공격 대상 IP는 10.10.171.198 입니다. nmap을 이용해서 가동중인 서비스 및 포트, os 정보를 확인하도록 하겠습니다. (공격대상 서버가 켜진 직후엔 서버가 닫혀있다며 스캔이 안될 수 있습니다. 3분정도 기다린 후 하면 될겁니다.) 스캔에는 약 1분정도가 소요되었습니다. 22번, 80번 포트가 열려있고, 리눅스 시스템이라는 것을 알 수 있습니다. 80번 포트를 서비스 중이라는 것은 웹 서비스를 제공중 이라는 건데요, 직접 접속해 봅시다. ip주소를 URL창에..

OverTheWire [Natas Level 25]

Natas Level 25 입니다. 어떤 발표문, 선언문? 같은 내용이 있고, 언어를 선택하여 볼 수 있습니다. 독일어, 영어가 가능하네요. 여기서 URL창을 보면 파라미터명이 "lang" 이라는 걸 알 수 있습니다. 소스코드 입니다. 가장 위 setLanguage 함수에서, lang 파라미터를 통해 언어를 선택받고 있습니다. language 디렉터리 밑에서, lang파라미터를 통해 전달받은 파일을 출력하는 것 같은데요. 여기서 safeinclude 함수를 통해 구체적인 필터링을 실시하고 있습니다. strstr 함수를 통해서, "../" 문자열이 있다면 str_replace 함수를 통해 지워버립니다. "natas_webpass" 문자열이 있다면 아예 파일을 불러오지 않습니다. 이렇게 두가지 필터링을 거친..

Hacking/[Web]Natas 2023.05.22

Chm0d

시스템 문제입니다. 먼저, 문제가 담긴 시스템에 ssh를 이용하여 접속해 줍시다. 계정은 user 비밀번호는 password123 입니다. 홈 디렉터리엔 별게 없어서, / 디렉터리를 조회해 봤는데 flag.txt 파일이 있습니다. flag가 저장된 파일로 생각되는데요. 저 파일을 읽으면 될 것 같지만 권한이 아무것도 없는 상태입니다. --------- 상태로써, 읽을 수가 없습니다. 하지만 다행히도 소유자와 소유그룹이 user입니다. chmod 명령어로 권한을 변경시키면 될 것 같습니다. chmod 명령어로 읽기권한을 추가하려 했는데, 권한문제가 뜹니다. 분명 내 소유의 파일인데, chmod를 사용할 수 없다고 하네요? 그래서 /bin/chmod 파일을 확인해본 결과, 아무런 권한이 없습니다. 그렇습니다..

Best Schools

웹 관련 문제입니다. 3번 항목인 Flag CyberSecurity School의 클릭수를 가장 높게 만들어, 플래그를 획득해야 합니다. I'm at this school 버튼을 누르면 클릭 수가 올라갑니다. 다만, 연속해서 누를 경우 너무 빠르다는 메시지와 함께 클릭수가 올라가지 않습니다. 간격은 수십초 정도는 되는 것 같습니다. 따라서 이 문제는, 클릭에 대한 속도제한을 우회하는 문제입니다. 저는 Burp Suite를 이용하겠습니다. I'm at this school 버튼에 대한 Request 패킷입니다. 1행에 보면 페이지명이 graphql 인 것과, 아래쪽에 query라는 이름으로 데이터가 전송되고 있는 것을 보니, 이것은 graphql에 대한 쿼리문이라고 유추할 수 있습니다. (graphql은 ..

ICS & Security Basics - Data Encoding

데이터 인코딩 기본 문제입니다. 0x4a를 10진수로 변환해야 합니다. 0x는 16진수를 의미합니다. 16진수 4a를 10진수로 변환하면 됩니다. 저는 윈도우 계산기 사용하겠습니다. 답 : 74 두번째 문제입니다. 아스키코드표를 참고하여 해당하는 값이 무엇인지 알아내면 됩니다. 16진수 68 65 78 20 66 6c 61 67 에 해당하는 값을 찾아봅시다. 여기서 찾으면 됩니다. 68 65 78 20 66 6c 61 67 -> hex flag 0x20 자리에 있는 SP는 공백을 의미합니다. ( 공백도 문자열입니다 ) 답 : hex flag 세번째 문제입니다. 2진수 10110100을 16진수로 변환합시다. 이번에도 계산기 사용하겠습니다. 답 : 0xB4 네번째 문제입니다. base64 인코딩이 사용되었..

ICS & Security Basics - Cryptography

Cryptography(암호화) 기본 문제입니다. 첫번째 문제, 카이사르 암호(시저 암호)가 사용된 문제입니다. 키는 13 이라고 하네요. 따라서 알파벳 순서상 13개 뒤에 있는 알파벳으로 대체된다고 보시면 됩니다. 예를 들어, 키가 3이라면 A -> D E -> H Z -> C 이렇게 키만큼 뒤로 밀리는 것입니다. 구글링하면 무료 해독 사이트들이 많으니 적당히 골라서 이용해 줍시다. 14번에 정답이 있네요. ( 1번은 입력한 문자열이고, 키가 1이면 2번, 키가 13이면 14번입니다 ) 답 : hidden flag in rome 두번째 문제입니다. MD5 해시값을 입력하면 될 것 같습니다. MD5는 해시 알고리즘의 일종입니다. 마찬가지로 적당한 사이트를 찾아 해시하시면 되겠습니다. 저는 DenCode ..

ICS & Security Basics - Forensics

인생 첫 CTF에 도전해 보았습니다. 예비군 때문에 시간도 없었고 대회 막바지에 살짝 겉만 핥아본 거긴 하지만, 처음으로 포렌식 문제를 풀어보며 배운 게 있었기에 글을 작성합니다. ( 물론 대회가 끝난 이후에 작성하는 것입니다 ) 사이트는 모두 영문으로 작성되어 있는데, 사진은 크롬으로 한글번역된 것이라 부자연스러울 수 있습니다. 확장자를 맞추는 문제입니다. 문제 파일명엔 확장자가 나와있지 않습니다. 문제 파일을 HxD 프로그램으로 열었습니다. 맨 앞에 있는 "FF D8 FF E0" 값이 보이시나요? 저건 "헤더 시그니처" 라고 하는건데, 확장자마다 값이 다릅니다. FF D8 FF E0 값은 "JPEG" 파일을 의미합니다. 이렇게 시그니처를 확인하면 파일명에 확장자가 나와있지 않더라도 확장자를 확인할 수..

OverTheWire [Natas Level 24]

Natas Level 24 입니다. 저번 레벨과 같이 Password 입력폼이 하나 있군요. 아무 값이나 넣어 봤지만 당연하게도 인증 실패로 Wrong! 문자열을 출력했습니다. 소스코드를 봐봅시다. 소스코드입니다. 이번에도 짧네요. 아주 좋습니다. 저번 레벨 코드보다 더 간단한데요? 그냥 맞는 패스워드를 입력하면 됩니다. 단, 조건문이 strcmp함수로 이루어져 있군요. strcmp 함수는 문자열을 비교하는 함수입니다. 문자열이 같을 경우 -> 0 다를 경우 -> 0이 아닌 정수 ( 상황에 따라서 음수, 양수 모두 출력함 ) 쉽게 말해서, 같으면 FALSE 다르면 TRUE 를 출력합니다. 또한, 대소문자를 구별합니다. 위 소스코드엔 !strcmp 이렇게 !(NOT) 연산이 들어가 있으니, 올바른 패스워드..

Hacking/[Web]Natas 2023.04.11
728x90
반응형