반응형

Blind SQL Injection문제입니다. 

로그인 화면이 나오네요. 가장 기본적인 test/test, admin/admin 등으로 계정 유추를 시도해보겠습니다.

위 사진과 같은 에러가 출력됩니다. ID가 맞아도 위와 같은 에러가 출력되기 때문에 어떤 계정이 존재하고 있는지 알 수가 없습니다...

저는 다음과 같은 순서로 문제 풀이를 진행하였습니다.


1. 'or 1=1--/1 << 가장 기본적인 sql injection 구문 삽입 시도

가장  첫번째 컬럼에 user1 계정이 있다는 것을 알 수 있었습니다.


2. user1'order by 1--/1 << order by 구문으로 컬럼 갯수 확인

order by 3-- 구문을 삽입하였을 때 에러가 출력되므로 컬럼은 2개인 것을 알 수 있습니다. 


3. user1'union select 1, sql from sqlite_master-- << union select 구문을 이용하여 sql 필드 조회를 시도하였지만,


injection 구문 탐지로 인해 union select 구문을 사용할 수 없습니다.

에러 구문을 이용한 Blind SQL injection 공격을 이용해야 한다는 사실이 명확해졌군요.


4. user1'and+(select+length(password)+from+users)=11-- << user1 계정의 패스워드 길이 및

   user1'and+substr((select+password+from+users limit 0,1),1,1)='D'-- << 정보 파악 


user1의 패스워드 길이가 11자인 것을 알아낸 후 Burpsuite의 Intruder 기능을 이용해 앞에서 부터 한 글자씩 대입을 시도해보았더니 user1의 패스워드가 출력되었습니다.

저는 DsD6z756f$!가 답이라고 생각했으나 아니었죠... 관리자의 패스워드를 구하는 문제였더라고요ㅜㅜ



5. user1'and+substr((select+password+from+users limit 1,1),1,1)='A'-- << 두번째 필드, 즉 admin의 패스워드 추출


admin의 패스워드 8자리가 추출되었습니다!!!





반응형

'Study > Wargame' 카테고리의 다른 글

[root-me] LFI - Double Encoding  (1) 2019.01.17
[root-me] PHP filters  (0) 2019.01.16
root-me>>SQL injection - numeric  (0) 2018.05.01
root-me >> Command injection  (0) 2018.04.24
root-me >> HTTP Header  (0) 2018.02.23
반응형

SQL Injection문제입니다.  관리자의 패스워드를 알아야하는 문제군요.



스크린 샷을 찍지는 않았지만, 문제를 들어가보면 메뉴가 3개가 나와있습니다. 그 중 첫번째 메뉴를 클릭하면 URL상에 파라미터가 action=news&news_id=1 이 전송됩니다.

문제 이름이 numeric인 만큼 news_id 파라미터가 매우 의심이 가는데요, 


1. ?action=news&news_id=2-1 << 시도해보았습니다.

결과 ; 에러 출력 없이 첫번째 메뉴가 정상적으로 열람되는 것을 보아 정수형 SQL Injection이 가능하다는 판단을 내릴 수 있습니다.


2.  ?action=news&news_id=1' << 이번에는 SQL Injection의 기본 형태인 싱글쿼터(')를 삽입해보았습니다.

에러 메시지로 SQLite3 데이터 베이스를 사용하고 있다는 것을 알 수 있습니다. 또한, '가 \로 치환되어 인식이 안된다는 것도 알 수 있군요..


3. 필드 갯수 구하기 ?action=news&news_id=1 order by 1-- 

                          ?action=news&news_id=1 order by 2--

                                ?action=news&news_id=1 order by 3-- 
                                ?action=news&news_id=1 order by 4-- << 에러 출력

order by 구문을 이용하여 필드의 갯수가 3개 인 것을 알 수 있었습니다. (order by 4--를 시도하면 에러가 출력되기 때문입니다.)



※ order by 구문과 동일한 역할을 하는 것이 union all select 구문입니다.

?antion=news&news_id=1 union all select null;

?antion=news&news_id=1 union all select null, null;

?antion=news&news_id=1 union all select null, null, null;

?antion=news&news_id=1 union all select null, null, null, null; << 에러 출력

null 인자를 하나씩 추가하여 필드 갯수 파악이 가능합니다.


4. sql query 문을 이용한 스키마 정보 파악 ?action=news&news_id=1 union select 1, sql, 3 from sqlite_master--

에러 메시지를 통해 sqlite3 데이터베이스를 사용하고 있다는 것을 파악했고, 찾아보니 sqlite의 데이터베이스의 스키마를 sqlite_master 테이블에 저장하고 있다고 하네요.

union select 구문은 컬럼 갯수를 맞춰야 하므로 1, sql, 3 으로 설정해서 sql 필드 정보를 알아보았습니다.

※ sql 필드에는 데이터베이스 생성 시 사용된 스키마 정보 중 테이블을 생성하는 CREATE TABLE 구문이 저장되어 있습니다.

결과를 보니 저희에게 필요한 테이블은 users 테이블이고, username과 password 컬럼을 출력해주면 되겠군요!!


5. username, password 출력 ?action=news&news_id=1 union select username, password, 3 from users--

마지막 작업 입니다.

users 테이블에서 username과 password(year라는 컬럼이 하나 더 있으므로 3 추가) 해주면

결과가 출력되었습니다!!~~


admin의 패스워드가 flag 값입니다. 


반응형

'Study > Wargame' 카테고리의 다른 글

[root-me] PHP filters  (0) 2019.01.16
root-me >> SQL injection - blind  (0) 2018.06.08
root-me >> Command injection  (0) 2018.04.24
root-me >> HTTP Header  (0) 2018.02.23
root-me >> SQL injection - authentication  (0) 2018.02.22
반응형

너무 바빠서 오랜만에 포스트 하네요. 오늘은 Command Injection 입니다.

Start the challenge 버튼을 눌러 문제를 풀어봅시다.


루프백 아이피가 써있어서 제출을 눌러봤더니, 아무 동작을 하지 않습니다.

흠..일단 프록시 툴을 이용해봅시다.


제 PC에서만 그런건지? ip 인자 값이 널 값으로 전송되어 우선 루프백 아이피를 입력해서 전송해봅니다..


프록시 툴을 이용하니 정상적으로 결과값이 출력되네요~~


그렇다면 이번에는 Command Injection을 시도해봅니다.

; 기호가 리눅스 상에서는 명령어 2개를 연속으로 실행하는 아이이기 때문에 [아이피; 명령어] 를 삽입해봅니다.


오!! 해당 디렉토리에 있는 index.php 파일이 출력됬네요~ 

index.php 파일을 열면 뭐가 나올 것 같군요!@


[루프백 아이피; cat index.php] << 해당 명령어를 삽입하여 전송해보니!!


응답값으로 flag가 출력됬네요ㅎㅎ


반응형

'Study > Wargame' 카테고리의 다른 글

root-me >> SQL injection - blind  (0) 2018.06.08
root-me>>SQL injection - numeric  (0) 2018.05.01
root-me >> HTTP Header  (0) 2018.02.23
root-me >> SQL injection - authentication  (0) 2018.02.22
root-me >> Improper redirect  (0) 2018.02.22
반응형

HTTP 응답 값에서 관리자 페이지로 접근하는 정보를 찾는 문제입니다.


문제에 접속해보니 내용은 HTTP 응답 값만이 아니다?? 라는 이해할 수 없는 말이 적혀 있네요.


HTTP 헤더를 봐야하는 문제이니 프록시 툴로 인터셉트하여 살펴보겠습니다.

위는 Request, 요청하는 부분의 헤더 값이구요,


이것은 응답 값의 데이터입니다. 사실 여기에서 막혀서 몇일 고민했답니다.ㅎㅎ

Header-RootMe-Admin: none << 이 부분이 매우 의심스럽지 않나요?


none을 admin으로 바꾼다던가 등의 시행 착오 끝에 전체를 복사하여 Request의 헤더부분에 붙여보았습니다.


Admin 페이지에 접근됬네요!! 억울하게 쉬운 문제였습니다.ㅜㅜ


반응형

'Study > Wargame' 카테고리의 다른 글

root-me>>SQL injection - numeric  (0) 2018.05.01
root-me >> Command injection  (0) 2018.04.24
root-me >> SQL injection - authentication  (0) 2018.02.22
root-me >> Improper redirect  (0) 2018.02.22
root-me >> Driectory traversal  (0) 2018.02.21
반응형

SQL injection 문제입니다. 관리자의 패스워드를 알아내라고 하네요.


문제에 접속하니 로그인 창이 뜨네요. 관리자의 패스워드를 알아내야 하므로 id에 admin, password는 가장 기본적인 sql 쿼리인 'or1=1-- 을 넣어주었습니다.


그랬더니 에러문이 출력되었습니다. or 1=1을 띄어주어야 하나 봅니다.


이번엔 id에 admin, password에 'or 1=1-- 을 넣어주었습니다. 그랬더니 admin의 패스워드가 아닌 user1의 패스워드가 출력되네요.

여기에선 sql injection 취약점이 존재한다는 사실을 알 수 있었습니다.


그래서 id 부분에 sql 쿼리문을 넣어보았습니다. 처음에는 admin'or 1=1-- 로 시도 하였더니 안되더라구요.

그래서 admin'or '1'='1 을 넣어보았습니다.


!!! admin의 패스워드가 출력되었어요! 하지만 마스킹 처리가 되어있네요. 당황하지 마시고 F12 개발자도구를 열어봅니다...


소스코드 상에는 패스워드가 평문으로 출력되어 있네요. 해당 값이 flag 값입니다.

서버 단에서 마스킹 처리를 한 후에 클라이언트 단으로 넘어와야 하는데,, 이 부분도 취약점으로 볼 수 있겠네요.

어쨌든 클리어!



반응형

'Study > Wargame' 카테고리의 다른 글

root-me >> Command injection  (0) 2018.04.24
root-me >> HTTP Header  (0) 2018.02.23
root-me >> Improper redirect  (0) 2018.02.22
root-me >> Driectory traversal  (0) 2018.02.21
root-me >> Install files  (0) 2018.02.21
반응형

Improper redirect 문제입니다. index 페이지에 접근하라고 하네요. 일단 문제 접속해봅시다.


문제를 열어보면 index.php가 아닌 login.php로 바로 리다이렉트되는 구조네요.


index.php에 접근해야하니 URL 상에 login.php?redirect 대신 index.php로 바꿔 전송해보았습니다.

하지만, login.php 화면으로 바로 리다이렉트 되네요.


때문에 저는 프록시 툴을 사용하였습니다. index.php로의 접근을 Burp Suite 툴을 이용해 조작하였죠.

그랬더니 브라우저 상에서는 보여지지 않았던 flag값을 볼 수 있었네요.

생각보다 어렵지 않은 문제였습니다.


반응형

'Study > Wargame' 카테고리의 다른 글

root-me >> HTTP Header  (0) 2018.02.23
root-me >> SQL injection - authentication  (0) 2018.02.22
root-me >> Driectory traversal  (0) 2018.02.21
root-me >> Install files  (0) 2018.02.21
root-me >> Local File Inclusion  (0) 2018.02.21
반응형

Directory traversal 문제입니다. hidden section을 찾으라네요. traversal은 순회라는 뜻이라네요...


파일 업로드 문제에서 보았던 포토 갤러리가 보이구요, 여러 디렉토리가 보입니다.

또한, URL 상에 galerie 파라미터로 디렉토리 이름을 받고 있습니다.

처음에는 유추문제인줄 알고 admin, hidden 심지어 파일 업로드 문제에서 본 upload 폴더 까지 대입 시도를 해보았는데요,

실패하였습니다.


하지만, directory indexing에서 사용했던 디렉토리 리스팅 취약점을 이용해보았습니다.

galerie 파라미터 부분에 값을 지웠더니 숨겨진 디렉토리까지 모두 보여지네요!!!

디렉토리 명 끝 부분이 안보입니다. 조금 확대해서 보세요


해당 디렉토리에 접근하였더니 password.txt파일이 있는 것을 확인하였습니다. 

저는 바로 우클릭하여 이미지 주소 복사한 후 다른 창에서 열었습니다.

열면 바로 보이네요. 생각보다 쉬운 문제였습니다ㅠㅠ 왜 삽질한거죠..

반응형

'Study > Wargame' 카테고리의 다른 글

root-me >> SQL injection - authentication  (0) 2018.02.22
root-me >> Improper redirect  (0) 2018.02.22
root-me >> Install files  (0) 2018.02.21
root-me >> Local File Inclusion  (0) 2018.02.21
root-me >> File upload - null byte  (0) 2018.02.21
반응형

Install files 문제입니다. 파일을 설치하라는 문제인가요? 참 난감했습니다. 일단 접속해봅시다.


아무것도 없습니다. 

그렇지만 가장 기본이 되는 소스보기를 클릭해봅시다.


ch6 하위에 phpbb 디렉토리가 있다?? 일단 따라가보죠.


root-me 로고만 나오고 여기도 아무 내용이 없습니다. 한참을 고민하다보니 문제 접속 페이지에서 You Know phpBB? 라는 문구가 눈에 띄네요.

일단 검색하였습니다.


phpbb란 전자 게시판 프로그램이었습니다. php 언어로 작성되었고, MySQL, PostgreSQL 데이터베이스를 사용한다고 하네요.


여기서 고민이 시작되었습니다.

문제가 Install files니까 phpBB 프로그램을 설치하라는 건가?

우선은 phpbb 설치법을 검색하였습니다.


그러던 중 /phpbb 폴더 아래에 있는 install 폴더를 깨끗하게 삭제하라는 말이 보였습니다. 

참고 : [http://www.phpbbkorea.com/viewtopic.php?t=2295]

오 매우 찝찝한 부분이군요!!


타다~~ install 관련 파일이 나왔어요!!


이게 phpbb 취약점이라고 하네요


flag 값은 install.php를 열면 나온답니다^^




반응형

'Study > Wargame' 카테고리의 다른 글

root-me >> Improper redirect  (0) 2018.02.22
root-me >> Driectory traversal  (0) 2018.02.21
root-me >> Local File Inclusion  (0) 2018.02.21
root-me >> File upload - null byte  (0) 2018.02.21
root-me >> HTTP cookies  (0) 2018.02.21
반응형

File Inclusion 문제입니다. 처음엔 file inclusion이라해서 감이 안왔는데 검색을 좀 해보니 파일 다운로드와 비슷한 유형이더라구요.

해당 취약점을 이용하여 admin section에 접근하면 되는군요.

그럼 시작하겠습니다.


문제에 접속해보면 여러 카테고리 밑에 파일들이 존재해 있었습니다.

URL을 자세히 보시면 files가 카테고리고 f가 파일 이름이겠네요.


저는 우선 files= 파라미터만 남기고 뒷 부분을 지워보았는데요, 카테고리가 쭉 나열되더라구요.


그래서 상위폴더로 이동하는 특수문자 "../"을 넣어봤더니 admin 디렉토리가 나왔네요.


admin 디렉토리 하위에는 index.php 파일이 있구요, 이 소스파일안에서 flag 값을 찾을 수 있었습니다!!!

반응형

'Study > Wargame' 카테고리의 다른 글

root-me >> Driectory traversal  (0) 2018.02.21
root-me >> Install files  (0) 2018.02.21
root-me >> File upload - null byte  (0) 2018.02.21
root-me >> HTTP cookies  (0) 2018.02.21
root-me >> File upload - MIME type  (0) 2018.02.21
반응형

널 바이트를 이용하여 php code를 업로드하는 문제네요. 


역시 upload를 할 수 있는 카테고리가 존재하구요

이미지만 허용한다고 쓰여져 있네요.


저는 바로 널바이트를 추가해서 php code를 업로드 해보았습니다. 

이전 파일업로드 문제와 다르게 악성 스크립트를 업로드할 필요가 없더라고요.

그냥 위와 같이 임의의 php code만 작성하여 업로드하시고 열면 패스워드 찾을 수 있습니다~


반응형

'Study > Wargame' 카테고리의 다른 글

root-me >> Install files  (0) 2018.02.21
root-me >> Local File Inclusion  (0) 2018.02.21
root-me >> HTTP cookies  (0) 2018.02.21
root-me >> File upload - MIME type  (0) 2018.02.21
root-me >> File upload - double extensions  (0) 2018.02.21

+ Recent posts

반응형
반응형