분류 전체보기
-
<Lord of SQL Injection> ouroborosWargame/Lord of SQL Injection 2021. 12. 3. 13:08
ouroboros GET 방식으로 전달받은 pw에서 prob, _, ., rol, up, join, @를 필터링한다. 이 pw를 사용한 쿼리의 결과를 배열로 가져온 뒤, pw에 값이 참이면 pw를 출력한다. 그리고 결과 배열의 pw와 전달받은 pw가 갑과 타입 모두 같아야 문제가 풀린다. 먼저, ?pw=' or 1=1%23을 입력하면 아무것도 출력하지 않는다. 이를 통해 prob_ouroboros 테이블이 비어있음을 짐작할 수 있다. union을 사용해 ?pw=' union select 1%23을 입력하면 Pw : 1을 출력한다. ?pw=' union select 1%23을 입력했는데 $result['pw']는 1이 되었다. $_GET['pw']에 해당하는 부분인 'union select 1%23 구문을..
-
<Webhacking.kr> old-20Wargame/Webhacking.kr 2021. 12. 2. 13:12
old-20 닉네임과 코멘트 그리고 captcha를 입력하게 되어있다. time limit가 2초인 것으로 보아 2초안에 제출하라는 것 같다. 페이지 소스 코드를 살펴보면 time limit : 2 second nickname comment captcha ck() 함수를 살펴보면 모든 입력 칸이 비어있으면 안된다. 그리고 captcha는 captcha_의 값과 같아야만 한다. 위 행동을 2초안에 직접 입력하기는 굉장히 힘들다. 그래서 python의 selenium을 이용해 문제를 해결했다. import requests from selenium import webdriver # 사용중인 크롬의 버전과 같은 버전의 chromedriver를 받아 python 코드의 위치와 같게했음 driver = webdri..
-
<Lord of SQL Injection> phantomWargame/Lord of SQL Injection 2021. 12. 2. 11:47
phantom email을 찾는 문제인 듯 하다. GET 방식으로 전달받은 joinmail에서 duplicate를 필터링한다. insert into prob_phantom values(0,'{$_SERVER[REMOTE_ADDR]}','{$_GET[joinmail]}'); 위 구문을 이용해서 테이블에 레코드를 추가할 수 있다. joinmail에 1을 넣어보면 별도의 필터가 없으므로 insert into prob_phantom values(0, 자기 IP, '1'), (0, 자기 IP, '2')로 여러 개의 레코드를 삽입할 수 있다. 이를 이용해서 insert into prob_phantom values (0, 자기 IP, '1'), (0, 자기 IP, (select email from prob_phant..
-
<Linux 마스터 2급> 오답노트Linux 마스터 2급 2021. 12. 2. 01:36
■다음 중 /etc/fstab에 대한 설명으로 틀린 것은? ① 첫 번째 필드는 장치명, 볼륨 라벨, UUID 모두 사용이 가능 ② 특정 파티션을 부팅 시에 자동으로 마운트되지 않도록 설정 가능 ③ dump 명령을 통한 백업 시 사용 주기를 매일 수행, 이틀에 한 번 수행, 주 1회 수행으로 설정 가능 ④ 파일 시스템 관련 정보 파일로 mount, umount, fsck 등의 명령어가 수행될 때 이 파일의 정보를 참조 => fstab의 5번째 필드는 dump명령을 통한 백업 시 레벨 덤프 사용 주기를 결정하는 부분으로 0이면 dump를 사용하지 않고 1이면 매일 수행, 2이면 이틀에 한 번 수행한다. ■다음은 root 사용자가 kaituser의 셸을 변경하는 과정이다. ()안에 들어갈 내용으로 알맞은 것은..
-
<Linux 마스터 2급> 임베디드 시스템(Embedded System)Linux 마스터 2급 2021. 12. 1. 23:14
■모바일 · 스마트폰의 OS(Operating System)란 스마트폰을 구성하고 있는 하드웨어 부품인 메모리, LCD, CPU 등의 기계적인 부품들을 효율적으로 관리 및 구동하게 하며, 사용자와의 편리한 의사소통을 위해 만들어진 소프트웨어 플랫폼 · 스마트폰, 태블릿 컴퓨터, PDA의 운영체제 · 안드로이드와 iOS가 있음 리눅스 기반의 공개형 운영체제 OS명 특징 마에모 (Maemo) · 노키아가 개발 · 리눅스 기반 · 인텔의 모블린과 합병하여 미고(MeeGo)라는 프로젝트로 변경 모블린 (Moblin) · 인텔과 리눅스 재단이 리눅스 기반으로 개발한 오픈 소스 운영체제 · 모바일 리눅스의 약어 · 노키아의 마에모와 합병하여 미고(MeeGo)라는 프로젝트 진행 미고 (MeeGo) · 인텔의 모블린과..
-
<Webhacking.kr> old-19Wargame/Webhacking.kr 2021. 12. 1. 13:47
old-19 id 입력 창이 있고 기본 값으로 admin이 들어있다. 제출을 누르면 admin이 아니라고 한다. 1을 제출하면 0을 제출하면 URL에 ?id=0이 붙어있지만 입력 창은 변하지 않는다. 로그아웃 버튼을 눌려도 로그아웃이 되지 않는다. 'EditThisCookie'를 통해 userid의 쿠키를 지우면 로그아웃이 된다. 이것으로 보아 쿠키가 관련있는 것 같다. 1을 제출했을 때의 쿠키 값은 "YzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWI%3D"라는 문자열을 가진다. %3D가 있는 것으로 보아 URL Encoding 되어있는 것 같다. URL Decoding하면 "YzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWI="가 나온다. "YzR..
-
<Lord of SQL Injection> frankensteinWargame/Lord of SQL Injection 2021. 12. 1. 11:55
frankenstein GET 방식으로 전달받은 pw에서 prob, _, ., (, ), union을 필터링한다. 에러메시지를 출력하는 걸로 보아 Error Based SQL Injection 기법을 수행할 수 있다. 첫 번째 쿼리에서는 id가 frankenstein이고 두 번째 쿼리의 id는 admin이다. 따라서, id='admin'을 넣어 줘야 한다. 괄호를 필터링하기 때문에 앞에서 풀었던 것 처럼 if 문을 사용할 수 없다. 따라서 case when 조건 then 결과1 else 결과2 end 문을 사용할 수 있다. substr()이나 length()도 사용할 수 없기 때문에 like와 %를 사용할 수 있다. 조건이 성립할 경우를 구분하기 위해 에러를 출력하게 한다. MySQL에서 처리할 수 있는..
-
<Webhacking.kr> old-18Wargame/Webhacking.kr 2021. 11. 30. 19:11
old-18 SQL Injection 문제인 듯 하다. view-source를 통해 페이지 소스 코드를 살펴보면 전달받은 no에서 공백, /, (, ), |, &, select, from, 0x를 필터링한다. id가 admin이면 문제가 풀린다. admin의 no가 2라고 힌트가 주어져 있다. 즉, select id from chall18 where id='guest' and no=0 or no=2의 형태로 만들면 된다. 빨간 부분은 테이블에 없기 때문에 select id from chall18 where no=2의 형태가 된다. 위의 쿼리를 수행하면 id가 admin이 된다. 공백을 필터링하기 때문에 %09로 우회했다. 입력 창에 %09를 입력하면 %2509로 바뀌어 입력되고 GET 방식이므로 URL ..