728x90
반응형

Hacking/[Web]Natas 26

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

OverTheWire [Natas Level 24]

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

Hacking/[Web]Natas 2023.04.11

OverTheWire [Natas Level 23]

Natas Level 23 입니다. 문제입니다. Password 입력 폼이 있네요. 아무거나 입력해봅시다. natas23을 입력해 보겠습니다. Wrong! 틀렸다고 하네요. 위 URL 창을 통해 입력 폼 이름은 passwd 라는 것을 알 수 있습니다. 소스코드를 확인해 봅시다. 오랜만에 굉장히 간단한 코드네요! 눈이 아주 편합니다. password 출력 조건도 굉장히 간단한데요. 딱 2가지입니다. 1. 입력값에 "iloveyou"문자열이 포함되어 있어야 한다. ( 띄어쓰기처럼 보이는데 아닙니다 ) 2. 입력값의 크기가 10보다 커야 한다. 그런데 좀 이상합니다. 입력값은 iloveyou 문자열이 포함되어 있는데 10보다 커야 한다니? 문자열과 숫자를 비교하고 있군요. 이게 가능한 건가요? 혹시 입력값의 ..

Hacking/[Web]Natas 2023.04.11

OverTheWire [Natas Level 22]

Natas Level 22 입니다. Level 22 메인 페이지 입니다. 보시다시피 텅 비어있습니다. 소스코드를 살펴봅시다. 소스코드입니다. 위, 아래로 크게 두 부분이 있는데요 첫번째는 GET방식으로 받은 요청에 "revelio" 가 존재하고 현재 세션이 admin이 "아닐 경우" header 함수에 의해 /(메인페이지) 위치로 리다이렉션 되는 함수입니다. 두번째는 GET방식으로 받은 요청에 "revelio" 가 존재할 경우 다음 레벨의 password를 출력합니다. 음.... 그러니까 GET방식으로 revelio 를 입력하면 되는 것 아닌가? 입력해 보겠습니다. URL에 그대로 입력해도 됩니다. (GET방식은 URL상에 그대로 모든 파라미터가 노출되는 방식입니다) revelio=1 입력했습니다. 그러..

Hacking/[Web]Natas 2023.04.05

OverTheWire [Natas Level 21]

Natas Level 21 입니다. 메인 페이지 입니다. 저번 레벨과 같이, natas22의 password를 얻고 싶다면 admin 계정으로 로그인 하라고 합니다. 특이하게도, natas21-experimenter 페이지와 환경을 공유한다고 합니다. experimenter 페이지입니다. 편의상 페이지2라고 하겠습니다. 해당 페이지엔 css관련 설정을 할 수 있는 폼이 있군요. 일단 각 페이지 소스코드를 살펴봅시다. password출력 조건문이 존재하는군요. password를 직접 획득할 수 있는 페이지는 이곳인 것 같습니다. 세션명 "admin" , value값은 1일 때 password를 출력합니다. 저번 레벨과 조건 자체는 같군요. 페이지2 소스코드입니다. css 값들을 입력받아 적용하는 코드인 것..

Hacking/[Web]Natas 2023.04.04

OverTheWire [Natas Level 20]

Natas Level 20 입니다. 현재 일반 유저로 로그인 되어 있으며, admin 계정으로 로그인하여 natas21의 password를 획득하라고 합니다. "admin" 입력하고 Change name 버튼을 눌러보니 아무런 변화도 없습니다. 소스코드를 살펴봅시다. 조금 길군요 일단 아래쪽을 보시면, session_set_save_handler 함수를 사용하는 것을 알 수 있습니다. 해당 함수에 의해 세션이 처리되고, 세션값이 세션 파일에 수동으로 저장됩니다. 위쪽 print_credentials() 함수는 password를 출력해주는 함수인데, 출력 조건은 세션명이 admin 이고, 해당 값이 1 이어야 합니다. 쉽게 말해서 key = admin , value = 1 이어야 한다는 것입니다. 이건 m..

Hacking/[Web]Natas 2023.04.04

OverTheWire [Natas Level 19]

Natas Level 19 입니다. 저번 문제와 비슷하지만 약간 다릅니다. Level 19 문제입니다.이전 레벨과 거의 동일한 코드를 사용하지만, 세션ID가 순차적이지 않다고 합니다. 이전 레벨의 세션값은 1~640 중에 하나의 숫자였죠. 따라서 brute force 공격을 하기가 용이했습니다. 그러나 세션값이 순차적이지 않으면.. 코드를 짤 기준이 있어야 자동화 프로그램을 만드는데, 그게 어려워 집니다. 완전히 랜덤으로 생성되는 것일까요? 일단 현재 세션값을 확인해 봅시다. 개발자도구(F12) -> Application -> Cookies id password 아무렇게나 입력하고, 세션값을 확인해 보았습니다. 세션값은 "3235372d6868" 이군요... 정말 랜덤인 걸까요? 혹시 세션값 생성에 대한..

Hacking/[Web]Natas 2023.04.04

OverTheWire [Natas Level 18]

Natas Level 18 입니다. 어느새 총 34단계 중 절반을 넘어섰네요. 어렵지만 확실히 많이 배우고 있습니다. Level 18 메인 페이지 입니다. natas19의 password를 획득하기 위해선, admin 계정으로 로그인 하라고 합니다. SQL Injection 인가 싶어, 인증우회 구문을 입력해 봤습니다. " or 1=1 # 입력했습니다. 실패했습니다. 일반유저로 로그인 되었다고 합니다. 이후에도 admin" or 1=1 # 등으로 여러가지 시도해 봤지만 실패했습니다. SQL Injection 공격이 아닌걸까요? 소스코드입니다. 좀 기네요. 중요한 부분을 살펴봅시다. COOKIE에서 PHPSESSID 값을 확인하는 것 같은데요.. 아래쪽도 보시면 사용자 세션을 확인해서, admin 계정일 ..

Hacking/[Web]Natas 2023.03.29

OverTheWire [Natas Level 17]

Natas Level 17 입니다. 15레벨과 비슷한 Blind SQL Injection 문제입니다. 메인 페이지 입니다. Level 15와 같이, 입력값과 일치하는 계정이 존재하는지 확인하는 기능입니다. 소스코드 입니다. Level 15와 전체적으로 완전히 같으나, 딱 하나 다릅니다. 바로 최종적으로 유저가 존재하는지 아닌지 알려주는 출력구문이 주석처리 되어 있습니다. 쿼리 오류도 마찬가지입니다. 즉, 우리의 입력값에 대한 서버의 반응을 전혀 알 수 없다는 것입니다. 무엇을 입력하든, 이렇게 아무것도 알려주질 않습니다. 아무것도 알 수가 없는데, 어떻게 해야 할까요? 소스코드를 보시면, 출력문이 주석처리 되어있을 뿐이지 기능 자체는 완전히 같습니다. 그렇다는 것은, 우리가 입력한 쿼리는 여전히 정상작동..

Hacking/[Web]Natas 2023.03.29

OverTheWire [Natas Level 16]

Natas Level 16 입니다. command injection 기법을 이용한 문제입니다. 이번 문제입니다. 보안상의 이유로, 더 많은 문자를 필터링 하고 있다고 합니다. 해당 폼엔 사용자가 입력한 단어를 찾아주는 기능이 있습니다. 소스코드입니다. 예전에 나왔던 grep 문제에서, 필터링이 한층 업그레이드 되었군요. [ ; | & ` \ ' " ] 문자들을 필터링 하고 있고 ( 웬만한건 다 필터링 하는군요 ) grep 명령문에서, 입력값이 \"$key\" 형태로 더블쿼터로 묶여 있습니다. 이래선 개행문자를 이용한 우회도 먹히질 않죠. 우리가 무슨 입력값을 어떻게 넣든 간에, 반드시 grep dictionary.txt 의 인자로 들어가게 됩니다. 우리는 해당 명령문을 정상적으로 이용하면서 답을 찾아내야..

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