반응형

역시 Javascript 문제입니다.

 

문제 들어가보니 그냥 달랑 로그인 버튼밖에 없네요. 일단 소스보기를 해봅니다.

 

이 곳에도 login.js 파일을 참조하고 있습니다. 해당 파일을 열어봅니다.

 

username이 TheUsername이고, password가 ThePassword일 때, 로그인 인증이 가능한데

 

위에서 TheUsername과 ThePassword를 TheSplit 배열에서 가져오고 있습니다.

 

근데 또 TheSplit 배열은 TheLists 리스트를 문자열로 자른거네요. 그러니까 GOD이 아이디, HIDDEN이 패스워드가 되는 거죠.

 

어차피 패스워드를 인증값으로 받고 있어서 로그인 해보지는 않았습니닿ㅎㅎ

 

반응형

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

[root-me] CRLF  (0) 2019.07.18
[root-me] Javascript - Obfuscation1  (0) 2019.04.15
[root-me] Javascript - Source  (0) 2019.04.15
[root-me] Javascript - Authentication  (0) 2019.04.15
[root-me] HTML - disabled buttons  (0) 2019.04.15
반응형

Javascript 소스 문제입니다.

 

문제에 들어가니 패스워드 입력 창밖에 나오지 않네요.

 

문제도 그렇고... 우선 소스 보기를 해봅니다.

그냥...패스워드가 나와있군여. 저걸로 인증하면 패스!

반응형

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

[root-me] Javascript - Obfuscation1  (0) 2019.04.15
[root-me] Javascript - Authentication2  (0) 2019.04.15
[root-me] Javascript - Authentication  (0) 2019.04.15
[root-me] HTML - disabled buttons  (0) 2019.04.15
[root-me] Path Truncation  (0) 2019.02.26
반응형

자바 스크립트 문제이다.

 

문제에 들어가보니, 로그인 폼이 있어서 그냥 아무 값이나 넣어서 로그인 시도를 해보았다.

 

음... 당연히 로그인이 안되네요..ㅎ

 

우클릭해서 소스보기를 해보았습니다!! 그랬더니 소스 상에 login.js 파일을 참조한다고 나오는군요.

 

login.js 파일 분석을 해봅니다. id가 4dm1n이고 password가 sh.org일 경우 정상적으로 로그인이 된다는 로직입니다.

 

로그인을 시도해보면,

 

패스워드가 Flag 값이라는 소리군요. 대충.. 사실 이 과정 필요없이 바로 login.js에서 패스워드 확인 후 Flag 인증을 해도 아무 상관 없습니다!ㅎㅎ 

반응형

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

[root-me] Javascript - Authentication2  (0) 2019.04.15
[root-me] Javascript - Source  (0) 2019.04.15
[root-me] HTML - disabled buttons  (0) 2019.04.15
[root-me] Path Truncation  (0) 2019.02.26
[root-me] SQL Injection - GBK  (0) 2019.02.21
반응형

아직 웹 서버 문제도 못 풀었지만, 클라이언트 문제라도 빨리 풀어버리고 싶어서... 시작해보았다.

 

첫번째 문제는 HTML 문제이다.

 

문제에 들어가보면 비활성화된 입력 폼과 버튼이 있는 화면이 뜨는데, 아마 이걸 활성화해서 보내면 되는 거겠지?

 

웹 프록시 도구에서 전송된 응답 값에서 입력 폼과 버튼 부분을 찾아, 그 곳에 "disabled" 속성이 있길래 이걸 그냥 삭제해보았다.

 

그랬더니, 정상적으로 입력 창과 버튼이 활성화 되었다. 그냥 임의의 값을 써서 보내보니,

 

Flag 값이 나왔다!

 

반응형

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

[root-me] Javascript - Source  (0) 2019.04.15
[root-me] Javascript - Authentication  (0) 2019.04.15
[root-me] Path Truncation  (0) 2019.02.26
[root-me] SQL Injection - GBK  (0) 2019.02.21
[root-me] Server-side Template Injection  (0) 2019.02.08
반응형


Path Truncation 문제를 풀어보겠습니다. 관리자 페이지에 접근하라는 문제인 것 같습니다.



우선, 문제에 들어가면 [Home] 버튼과 [Administration] 버튼이 보입니다.


관리자 페이지에 접근을 해야 되므로 [Administration] 버튼을 눌러보겠습니다.



[Administration] 버튼을 누르면 admin.html URL로 이동되는 것을 알 수 있습니다.


하지만, 403 Forbidden 에러가 뜨는군요. 권한체크를 하는 것 같습니다.



다시 메인 페이지로 돌아가서 이번에는 [Home] 버튼을 눌러보았습니다.


URL 파라미터가 index.php?page=home 형식으로 전송되는 것을 알 수 있습니다. LFI 공격이 가능할 것 같아 보입니다.


그래서, Path Truncation에 대해 찾아보았습니다.


Path Truncation은 LFI 공격 기법 중의 하나로 php limits을 우회하는 방법입니다.

PHP 5.3 하위의 버전에서 나타나느 취약점으로, 파일을 열기 전 파라미터 값의 4096 byte 이상의 길이는 잘려 그 이후의 값들은 버려지게 됩니다.

따라서, 후행 슬래시로 4096 byte 이상의 길이를 삽입하면 하드코딩된 파일 확장명을 우회할 수 있습니다.

GET vulnerable.php?filename=../../../etc/passwd/././././././././/././././././././././[ and so on ] HTTP/1.1


출처 : https://medium.com/bugbountywriteup/cvv-1-local-file-inclusion-ebc48e0e479a



그래서, page=home/../admin.html/./././././././././.././././.././././.././././.././././.././././.././././.././././.././././.(4096 byte 이상...)를 삽입 시도하였습니다.



하지만 별다른 반응이 없어 보였습니다. 이유를 찾다가 아래 문장을 발견하였습니다.


if the truncation can't work just add "x/../" after the file name so it will be like this : "x/../index.php"


출처 : https://hackingparadisesn.blogspot.com/2015/05/introduction-to-local-file-inclusion.html



그래서 home 대신 x(타 임의의 문자 가능)를 삽입 후 ../admin.html에 접근 시도하였더니!!



FLAG 값을 획득할 수 있었습니다.

반응형

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

[root-me] Javascript - Authentication  (0) 2019.04.15
[root-me] HTML - disabled buttons  (0) 2019.04.15
[root-me] SQL Injection - GBK  (0) 2019.02.21
[root-me] Server-side Template Injection  (0) 2019.02.08
[root-me] SQL injection - string  (0) 2019.02.07
반응형


SQL Injection 문제를 풀어보도록 하겠습니다. 관리자 권한을 획득하면 되는 문제인데요, GBK를 이용하라고 하네요.


그래서 일단 GBK를 찾아보았습니다.


GBK는 중국어 간체를 위한 문자 세트로, 2006년 mysql-real-escape-string을 우회하는 방법으로 소개되었습니다.

\xBF' (=URL 인코딩 시 %bf%27) 문자열을 사용하여 싱글쿼터를 우회하는 방식으로 사용됩니다.


출처 : https://pentesterlab.com/exercises/web_for_pentester_II/course



문제로 들어가보면 로그인 창과 위에 멤버 리스트를 보여주는 버튼이 하나 있어서 눌러보았습니다.



멤버 리스트를 보니 "admin"이라는 유저가 존재한다는 것을 명확히 알 수 있었습니다.



SQL Injection 공격을 시도해보았습니다.


많은 시행착오를 겪었는데요, 공격 쿼리나 공격 방법은 상단에 써진 출처를 참고하였습니다.


Query : %bf%27 or 1=1--

          %bf' or 1=1--

          %bf%27 or %bf%271%bf%27=%bf%271

          %bf%27 and 1=1-- 


등... 많은 쿼리로 테스트를 해보았는데, FLAG가 나오지 않았어요.. 구글링해도 문제가 잘못되었다는 둥 Burp로 안된다는 둥...



하지만! 문제를 해결했습니당!!!


login=admin%bf%27 or 1=1-- &password=1 << 주석과 &사이에 공백을 주고, Follow Redirection 버튼을 클릭해야 합니다.


왜 공백을 주어야 하는지는 잘 모르겠습니다만,,, 그래야 follow redirection 버튼이 나오더라고요ㅠ(알려주시면 감사하겠습니다^^)



follow redirection 버튼을 클릭하면 FLAG 값이 노출되는 곳으로 리다이렉트되어 플래그를 획득할 수 있습니다.

반응형

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

[root-me] HTML - disabled buttons  (0) 2019.04.15
[root-me] Path Truncation  (0) 2019.02.26
[root-me] Server-side Template Injection  (0) 2019.02.08
[root-me] SQL injection - string  (0) 2019.02.07
[root-me] LFI - Double Encoding  (1) 2019.01.17
반응형

Server-side Template Injection 문제입니다. 처음에 접했을 때는 생소한 공격방법이라 당황했었는데요,

구글 검색 시 많은 정보가 나오더라고요.. (공부 안한거 들통ㅠ)


이 문제를 풀 때 개념을 https://www.netsparker.com/blog/web-security/server-side-template-injection/ 이 곳에서 파악했구요,

상세 공격 방법들은 https://portswigger.net/blog/server-side-template-injection 이 곳을 참고했습니다.

요약하면, Server Side Template는 동적 HTML을 생성할 수 있다는 큰 장점때문에 사용되고 있는데, 템플릿 문자열 내에 사용자가 입력을 제어하는 부분을 이용하여 사용자가 템플릿 표현식을 실행할 수 있을 경우 원격 코드 실행까지 이어질 수 있다는 것입니다.

 

문제를 풀어보도록 하겠습니다.


문제에 들어가보면, 닉네임을 입력하라는 입력창과 check 버튼이 있습니다.

임의의 문자열을 삽입한 후 버튼을 클릭하면 아랫 줄에 echo 명령어처럼 사용자가 입력한 값을 그대로 뿌려줍니다.


이번에는 공격 가능성이 존재하는지 알아보도록 하겠습니다.


${7*7} 을 입력할 경우, 공격이 불가능한 경우라면 "${7*7}" 전문이 나오는 것이 정상이지만, 문제에서는 계산이 되어 나옵니다.

때문에, 원하는 명령어를 실행할 경우 서버에서 실행되어 결과 값을 얻을 수 있을 것 같습니다..


우선, 간단한 명령어부터 실행해보도록 하겠습니다.


<#assign ex="freemarker.template.utility.Execute"?new()> ${ ex("실행할 명령어") } << 명령 코드를 입력하면 위와 같이 명령어 결과 값을 확인할 수 있습니다. (공격코드는 상위 링크에서 확인하였습니다.)


whoami 명령어 역시 정상 동작하여 결과를 확인 할 수 있었습니다.


이번에는 문제에서 요구한 파일을 읽어보겠습니다. 간단한 cat 명령어로 flag를 획득할 수 있습니다.

반응형

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

[root-me] Path Truncation  (0) 2019.02.26
[root-me] SQL Injection - GBK  (0) 2019.02.21
[root-me] SQL injection - string  (0) 2019.02.07
[root-me] LFI - Double Encoding  (1) 2019.01.17
[root-me] PHP filters  (0) 2019.01.16
반응형

SQL injection string형 문제를 풀어보았습니다. 역시 관리자의 패스워드를 알아내야 합니다.


문제에 들어가시면 홈/검색/로그인 탭이 있습니다.

이 메뉴들 중에서 SQL Injection이 가능한 포인트를 찾는 것이 관건이었습니다.

news_id 파라미터, 로그인 메뉴의 login, password 파라미터 등 여러 곳에서 SQL Injection을 시도해보았으나,

유일하게 SQL Injection이 가능한 포인트는 검색 메뉴의 recherche 파라미터 였습니다.


검색어에 a를 삽입하면 정상 값으로 5개의 결과 값을 출력하였고요,

a'를 삽입하니 syntax Error가 출력되어서 a%'를 삽입 해보았습니다.


no such column 이라는 에러가 떠서 저는 이곳이 SQL Injection에 취약한 포인트라 판단하였습니다.


이번에는 필드 갯수를 구하기 위해 order by 구문을 삽입했는데요, 아래 구문을 순차적으로 삽입하여 필드 갯수 가 2개인 것을 파악하였습니다.

a%' order by 1--

a%' order by 2--

a%' order by 3-- << 에러 출력 


sql 쿼리문을 삽입하여 스키마 정보를 파악해보았습니다.

a%' union select 1, sql from sqlite_master-- 구문을 삽입하여 news 테이블과, users 테이블이 존재하고 있음을 알 수 있습니다.


마지막으로, 관리자 패스워드가 존재할 것 같은 users 테이블에서 username과 password 값을 출력하면 됩니다.

a%' union select username, password from users-- 해당 구문을 삽입하면, 관리자의 패스워드를 획득할 수 있습니다.

반응형

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

[root-me] SQL Injection - GBK  (0) 2019.02.21
[root-me] Server-side Template Injection  (0) 2019.02.08
[root-me] LFI - Double Encoding  (1) 2019.01.17
[root-me] PHP filters  (0) 2019.01.16
root-me >> SQL injection - blind  (0) 2018.06.08
반응형

LFI Double encoding 문제를 풀어보도록 하겠습니다.


문제를 들어가보니 Home 탭 옆에 CV 탭과 Contact 탭이 존재합니다. 우선 CV 탭을 클릭해보겠습니다. 


CV 탭을 클릭하니 URL 상 page 파라미터가 나오네요. 여기에 LFI 취약점 테스트를 해보도록 하겠습니다.


상위 폴더로 이동 가능한 특수문자 "../"을 삽입하니 공격 구문이 탐지되었습니다ㅜ


이번에는 "../"을 URL 인코딩하여 삽입해 보았으나 역시 공격이 탐지되었습니다.


URL Double Encoding을 해보았습니다. "../"을 두번의 URL 인코딩 후 삽입하였더니! 필터링 없이 LFI 취약점이 발견되었습니다.


php 코드는 실행이 되어버리기 때문에 php wrapper를 사용합니다. 

[php://filter/convert.base64-encode/resource=cv] 문자열을 URL encoding으로 두번 인코딩한 후 삽입해보겠습니다.


그랬더니, 정상적으로 공격이 수행되어 cv의 소스코드가 base64로 인코딩된 코드가 노출되었습니다.

base64로 디코딩해보겠습니다.


BASE64로 디코딩 한 소스 내에서 conf.inc.php 파일이 존재하는 것을 파악할 수 있었습니다.

conf.inc.php 코드를 봐야겠군요.


php wrapper를 통해 [php://filter/convert.base64-encode/resource=conf] 문자열을 URL 인코딩으로 두번 한 후 삽입하겠습니다.


정상적으로 공격이 성공하여 BASE64로 인코딩된 소스코드가 노출되었습니다.


BASE64 디코더로 디코딩 해보니 FLAG 값이 나와있습니다.!! 


반응형

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

[root-me] Server-side Template Injection  (0) 2019.02.08
[root-me] SQL injection - string  (0) 2019.02.07
[root-me] PHP filters  (0) 2019.01.16
root-me >> SQL injection - blind  (0) 2018.06.08
root-me>>SQL injection - numeric  (0) 2018.05.01
반응형

오랜만에 root-me 문제를 풀어보았습니다.ㅠㅠ

PHP filter 문제이고, 어드민 패스워드를 찾으면 된다고 하네요.


우선, 문제를 들어가보면, home과 login 버튼이 활성화 되어있습니다. 클릭해봅니다..


[home] 버튼을 클릭하면 URL 상에 inc 파라미터로 해당 php파일이 들어가있습니다. 

LFI 문제가 아닌가 의심해봅니다.


상위폴더로 이동하는 특수문자 "../"을 삽입해보았더니 경고 문구가 뜨면서 LFI 가능성을 높여줍니다.


inc 파라미터에 php파일 경로를 쓰면, php 파일 소스를 볼 수 있는게 아니라 실행이 되어버립니다.

저는 방법을 찾다가 LFI-cheat-sheet에서 PHP Wrapper 방법을 찾았습니다. 자세한 정보는 아래의 링크를 참고하세요.


>> https://highon.coffee/blog/lfi-cheat-sheet/


따라서, inc 파라미터에 php wrapper를 이용해 [php://filter/convert.base64-encode/resource=파일경로]를 삽입하면 인코딩된 문자열이 보입니다.

디코딩ㄱㄱ


BASE64 디코더 >> http://www.convertstring.com/ko/EncodeDecode/Base64Decode


해당 문자열을 디코딩 하니까 ch12.php의 소스코드가 보입니다! 해당 소스에서 config.php라는 의심스러운 php 코드를 찾았고,


다시 php wrapper를 이용해 config.php경로를 삽입하니 인코딩된 문자열이 나오구요


디코딩해보니!! 어드민 패스워드를 찾을 수 있었습니다%^^%


반응형

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

[root-me] SQL injection - string  (0) 2019.02.07
[root-me] LFI - Double Encoding  (1) 2019.01.17
root-me >> SQL injection - blind  (0) 2018.06.08
root-me>>SQL injection - numeric  (0) 2018.05.01
root-me >> Command injection  (0) 2018.04.24

+ Recent posts

반응형
반응형