[natas] Level 2 -> Level 3
2021. 4. 1. 18:55
Study/Web Hacking
: level 2 → level 3 http://natas3.natas.labs.overthewire.org F12로 개발자도구를 열자. 주석에 더이상의 정보노출은 없다고 되어있다. 소스코드에서 알아낼 수 있는 건 없는 것 같다. 지난 레벨에서 썼던 files 디렉토리에 가봤는데 natas3에는 files 디렉토리가 없었다. 여기서 더 알아낼 수 있는 것들이 없는 것 같아서 구글에 조금 검색해보니 robots.txt 파일을 이용하는 것 같았다. robots.txt 파일은 작년에 포스팅하면서 정리한 적 있는데 짧게 설명하자면, 엔진봇의 웹페이지 수집 허용 범위를 정할 수 있는 파일이다. robots.txt 파일에서 disallow되어 있는 웹페이지는 엔진봇이 수집할 수 없다. 아마도 natas4의 pw를 ..
[XSS Challenge] Stage #2
2021. 3. 27. 01:39
Study/Web Hacking
Stage #2 입장! Stage #2의 과제는 alert(document.domain); 를 실행시키는 것이다. Stage #1에서 했던 것처럼 Search창에 를 입력해봤다. 지난 Stage에서처럼 사용자 입력이 화면에 나타나지는 않았다. Search 후 Search form코드쪽의 변화가 생겼는지 확인해봤자. form의 input 태그 value 속성에 사용자 입력이 그대로 노출되고 있는 것을 확인했다. 이때 입력을 닫는 태그로 시작하면 뒤에 오는 사용자 입력들이 value에 들어가지 않고, input 태그가 닫혀버린다. 따라서 닫는 태그 뒤로 script 태그를 삽입하면 script 태그가 실행 될 것이다. 그런데 value를 보면 "때문에 문자열이 열려 있다. > 앞에 "를 넣어서 이 문자열을 ..
[XSS Challenge] Stage #1
2021. 3. 27. 01:07
Study/Web Hacking
Stage #1 입장! 해당 Stage에서 해야하는 일은 alert(document.domain);을 실행시키는 것이다. Stage #1에 들어오면 사용자 입력을 받을 수 있는 Search창이 있다. XSS 공격은 사용자의 입력으로 실행된다. 따라서 사용자의 입력을 받을 수 있는 Search창의 보안 취약점을 찾기 위해 일단 아무 값이나 입력해봤다(hi 입력). 사용자의 입력이 Search창 아래에 출력됐다. 특별한 변경사항이 없는지 확인하기 위해 개발자도구를 실행했다. 개발자도구를 열어보면 Search form아래에 태그로 감싸진 사용자 입력이 생긴 것을 알 수 있다. 사용자 입력이 아무런 필터링 없이 소스코드에 그대로 노출되고 있다. 따라서 script코드를 삽입하면 alert(document.dom..
[LOS] gremlin
2021. 3. 27. 00:29
Study/Web Hacking
gremlin에 접속! gremlin에 접속하면 php코드를 바로 볼 수 있다. 코드를 살펴보면 GET방식으로 id와 pw 값을 입력 받아서 query에 포함시키고, 데이터베이스에 전달해서 return되는 값이 있으면 gremlin이 solve되는 것 같다. 그러면 id나 pw에 어떤 값을 넣어야 mysqli_fetch_array()에 대한 return값을 받을 수 있을지 생각해야 한다. where문을 항상 참이 되게 하면 prob_gremlin 테이블에서 id 컬럼의 데이터를 가져오기 때문에 반환 값을 받을 수 있을 것 같다. 그렇다면 where문을 항상 참이 되게 하려면 어떻게 해야할까. [variable] or 1 일 때 [variable]이 참이든 거짓이든 or 연산자와 1 때문에 항상 참이 될 ..
SQL Injection
2021. 3. 26. 17:18
Study/Web Hacking
www.hackerschool.org/Sub_Html/HS_Posting/?uid=42 www.hackerschool.org/Sub_Html/HS_Posting/?uid=43 해커스쿨 - SQL Injection 정리 - SQL query를 Injection해서 데이터베이스를 공격하는 기법 - 데이터베이스는 서버사이드 언어와 구분되는 하나의 프로그램이라서 SQL Injection은 다른 해킹기법과 조금 다름. - 데이터베이스 자체에서 SQL Injection 을 방어하는것은 어렵고 비효율적 개발자는 데이터베이스에 가해지는 공격을 서버사이드에서 방어해야 함. - 보통 싱글쿼터 (') 앞에 백슬래시를 붙이거나 magic_quotes_gpc = on 으로 설정하는 것으로 SQL Injection에 대한 방어를..
[natas] Level 0 ~ Level 1 -> Level 2
2021. 3. 26. 16:05
Study/Web Hacking
(크롬에서 진행 / 윈도우) : level 0 username: natas0 password: natas0 URL: http://natas0.natas.labs.overthewire.org level 0에 접속하면 "You can find the password for the next level on this page."라는 문구가 제일 먼저 보인다. 해당 페이지에서 level 1로 가는 password를 알아낼 수 있다. 소스코드를 자세히 보기 위해 F12를 눌러보자. F12를 누르면 개발자도구 창이 뜨는데, body태그 부분을 클릭해서 하위 코드들의 내용을 살펴봤다. 주석부분에 natas1로 가는 password가 있는 것을 확인했다. natas1 password: gtVrDuiDfck831PqWsL..
[lazenca] Protection Tech / RELRO & PIC & PIE
2021. 2. 22. 20:56
Study/System Hacking
- RELRO(RELocation Read-Only) = ELF 바이너리 / 프로세스의 데이터 섹션의 보안을 강화하는 일반적인 기술 Partial RELRO Full RELRO - 바이너리 파일 보호기법 적용 확인 방법 checksec.sh --file ./RELRO-Relro - Program header & Dynamic Section → RELRO 적용시 "Program Header"와 "Dynamic Section"의 변화 확인가능 ˙Partial RELRO Program Header'에 'RELRO' 영역(Read only)이 생성 해당 영역에 생성되는 Section: INIT_ARRAY, FINI_ARRAY → GOT영역을 덮어쓰기 가능 ˙Full RELRO Progra..
[dreamhack] Linux Exploitation & Mitigation Part 3 / SSP & RELRO & PIE
2021. 2. 21. 15:40
Study/System Hacking
- SSP(Stack Smashing Protector) SSP는 메모리 커럽션 취약점 중 스택 버퍼 오버플로우 취약점을 막기 위해 개발된 보호 기법으로 스택 버퍼와 스택 프레임 포인터 사이에 랜덤 값을 삽입하여 함수 종료 시점에서 랜덤 값 변조 여부를 검사함으로써 스택이 망가뜨려졌는지를 확인한다. SSP 보호 기법이 적용되어 있다면 함수에서 스택을 사용할 때 카나리가 생성되는데, 카나리는 스택 버퍼와 스택 프레임 포인터 사이에 랜덤으로 삽입된는 값으로 카나리 값의 변조 여부를 통해 BOF를 감지할 수 있다. 이렇게 랜덤으로 생성된 카나리 값은 모든 쓰레드에서 동일하게 사용할 수 있도록 전역변수로 사용되는 TLS 영역에 저장한다. 이렇게 TLS영역에 저장된 카나리를 마스터 카나리라고 하고, 스택 버퍼와 ..
[WEB]: XSS game 06
2021. 2. 17. 19:19
Study/Web Hacking
[Mission] [해결방법] 이번에 해결해야 할 문제 페이지다. 딱 봤을 때 페이지의 로고와 아래 문구외에는 별다른게 없어 보인다. 사용자의 입력이 들어갈 수 있는 부분은 URL창밖에는 없는 것 같다. 페이지의 동작을 확인하기 위해서 URL창에 이것 저것 입력해봤다. URL에서 #뒤에 입력된 부분이 페이지 아랫부분 문구에 출력되고 있었다. 더 정확히 파악하기 위해 코드를 확인해봤다. function includeGadget(url) { var scriptEl = document.createElement('script'); // This will totally prevent us from loading evil URLs! if (url.match(/^https?:\/\//)) { setInnerText(..