#Main

 

 

#쿠키분석

 - Cookie의 값이 무언가 암호화된 냄새가 난다.

 

 

#base64로 디코딩

 - id는 2고 type은 guest인 계정같은 것이 나왔다.

 - 단순하게 생각했을 때, 1이 admin일 가능성이 있다.

 

 

# id:1 type:admin으로 수정 후 인코딩해서 쿠키에 삽입

 - 뭔가 패스워드도 필요해 보인다.

 - PassAdmin의 값은 'j0n9hyun'인데, 암호화되어 있지도 않고 단서도 없다.

 

 

#느슨한 비교

 - 혹시나 해서 다른문제처럼 느슨한 비교가 사용되지 않을 까 해서 값을 배열형태로 만들어 주니

   해결되었다.

 

참고문제 : https://lionto.tistory.com/34?category=989289

'HackCTF > Web' 카테고리의 다른 글

HackCTF lol - [300]  (0) 2021.08.30
HackCTF 가위바위보 - [200]  (0) 2021.08.30
HackCTF Home - [200]  (0) 2021.08.30
HackCTF Input Check - [150]  (0) 2021.08.29
HackCTF Time - [150]  (0) 2021.08.28

g#Main

 - 메인페이지에는 특이한 것이 없다. 가위바위보 재밋음

 

 

#설정 페이지

 - 이름변경과 파일업로드가 있다. 

 - 이름변경에서 XSS를 시도했지만 불가능하다고 판단하고 RFI를 생각해서 쉘을 업로드 해야겠다.

 

 

#파일 업로드

 - php 파일 업로드 시, 이미지파일이 아니라고 출력하는데, 확장자를 PNG로 바꿔도 동일한 메시지가 출력.

   -> 파일 시그니처를 검사하는 것 같다.

 

파일시그니처 : 파일마다 갖고 있는 고유한 형식, 포맷이다.

 

 

#JPG 시그니처 삽입 후 간단한 웹 쉘 업로드(PNG시그니처로하니 문제가있는지 쉘이 안따졌다)

 - 강조된 부분처럼 JPEG의 시그니처를 삽입해주고 뒤에는 쉘코드를 넣으면 된다.

 

 

#쉘 업로드

 - 잘 업로드 되었다. 이제 이 쉘을 실행시켜야 하는데 이 페이지에서는 방법이 없으므로,

   프로필 사진이 업로드되는 경로를 찾아야 한다.

 

 - 이미지를 갖고오는 경로도 찾았다.

 

#404

 - 쉘을 업로드한 채로 해당 경로에서 실행을 유도했으나, 404에러가 발생하였다.

 - 이름을 바꿀 때 마다 이미지도 같이 바뀌었는데, 이와 관련이 있는 것 같다.

 

 

#이름을 shell.php로 바꾸고 다시 연결

 - system command가 작동한 것 같다.

 

 

#end

 

'HackCTF > Web' 카테고리의 다른 글

HackCTF lol - [300]  (0) 2021.08.30
HackCTF Cookie - [300]  (0) 2021.08.30
HackCTF Home - [200]  (0) 2021.08.30
HackCTF Input Check - [150]  (0) 2021.08.29
HackCTF Time - [150]  (0) 2021.08.28

#Main

 - 머리말 : header를 보라는 것 같다.

 

 

#Request & Response 분석

 - 특별한건 보이지 않는다.

 

 

#구글링

 - 알고있는 정보로 구글링을 해본 결과, 'X-Forwarded-For' 이라는 XFF헤더가 나오는데, 

   해당 헤더는 클라이언트의 원 IP주소를 보기 위해 사용되는 헤더이다.

 

 형식 -> X-Forwarded-For: <client>, <proxy1>, <proxy2>

 출저 : https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/X-Forwarded-For

 

 

#Request 수정

 

 

#end

'HackCTF > Web' 카테고리의 다른 글

HackCTF Cookie - [300]  (0) 2021.08.30
HackCTF 가위바위보 - [200]  (0) 2021.08.30
HackCTF Input Check - [150]  (0) 2021.08.29
HackCTF Time - [150]  (0) 2021.08.28
HackCTF 마법봉 - [100]  (0) 2021.08.28

#Main

 

#flag 전송

 - flag라는 문자열에 필터가 걸린 것 같다.

 - GET 방식으로 전송하는 것을 알 수 있다.

 

 

#index

 - index를 보니 힌트가 있고, 입력값 검사는 배열이라고 한다.

 

 

#php - strcmp 취약점

 

 strcmp함수

 strcmp('A', 'B') : -1

 strcmp('A', 'A') : 0

 strcmp('C', '=B') : 1

  -> strcmp 함수는 문자열 비교함수인데,

      배열은 null, 즉 0이고 php 5.3~ php 7.34버전에선 느슨한 비교(==)에서 

      [String(flag) (비교) null(Array) = 0 ] : true이므로 성립하게 된다.

 

 

#배열로 flag값 넣기

 

'HackCTF > Web' 카테고리의 다른 글

HackCTF 가위바위보 - [200]  (0) 2021.08.30
HackCTF Home - [200]  (0) 2021.08.30
HackCTF Time - [150]  (0) 2021.08.28
HackCTF 마법봉 - [100]  (0) 2021.08.28
HackCTF Login - [100]  (0) 2021.08.26

#Main

 - 두번째 조건문에 60*60*24*30*2보단 커야한다고 한다.

 -> 5184000

 

 - 모든 조건을 충족하면 해당 숫자만큼 기다린 후 flag를 출력하는데, 5184000초를 기다릴리는 없으므로

   is_numeric 함수의 취약점을 찾아본다.

 

 

#is_numeric() 취약점

 - 헥스값은 대입 시 첫번째 조건에서 걸리므로, 상위 버전을 찾아보았는데

   '1337e0' is numeric이라는 문구가 보인다. 즉, 10의 거듭제곱을 사용가능하다.

 

 참고자료 : https://www.php.net/manual/en/function.is-numeric.php

 

#source code

 - 먼저 5184000을 e를 사용해 바꿔준다.

   5184000/(10*6) = 5.184이므로, 5.184e6이다.

 

   소스코드를 보면, 위의 if문에서 검사를 하고,(5.184e6 = 5.184000)

   마지막 else문에서 (int)로 강제 형변환을 한다.(5.184e6 = 5)

   즉, 5초를 기다리면 플래그가 출력될 것이다.

 

#end

'HackCTF > Web' 카테고리의 다른 글

HackCTF Home - [200]  (0) 2021.08.30
HackCTF Input Check - [150]  (0) 2021.08.29
HackCTF 마법봉 - [100]  (0) 2021.08.28
HackCTF Login - [100]  (0) 2021.08.26
HackCTF ReadFile - [100]  (0) 2021.08.25

#Main

 

 

#Source Code

 - 코드 구조를 보니, 입력값을 sha1로 암호화한것과 "240610708"을 md5로 암호화한 것이 같아야 한다.

 - "=="가 미심쩍다.

 

 

#"=="취약점(Magic Hashes)

 - "=="비교는 '느슨하게 같다'라는 의미를 가진다.("==="가 보안상 뛰어남)

 -> 해당 비교에서 '0e'로 시작할 경우, 거듭제곱의 의미를 가지므로, 0e1234와 0e5678은 true가 된다.

     0e1234 : 0*10^1234 = 0 

     0e5678 : 0*10^5678 = 0

 

참고사이트 : https://www.whitehatsec.com/blog/magic-hashes/

 

 

#소스보기에서 주어진 값 "240610708"을 md5로 인코딩

 - '0e'로 시작한다.

 

 

#사이트에서 sha1 magic hashes 확인

 - '10932435112'의 해쉬값이 '0e'로 시작한다.

 

 

#end

 

'HackCTF > Web' 카테고리의 다른 글

HackCTF Input Check - [150]  (0) 2021.08.29
HackCTF Time - [150]  (0) 2021.08.28
HackCTF Login - [100]  (0) 2021.08.26
HackCTF ReadFile - [100]  (0) 2021.08.25
HackCTF Guess me - [100]  (0) 2021.08.21

#Main

 

 

#View Source

 - 아이디와 패스워드를 GET 방식으로 받아오는 것을 확인할 수 있다.

 - 특수기호(', '") 등의 필터링이 없다.

 - 쿼리를 살펴보니 id='$id' and pw='$pw'로 쿼리가 작용하는 것을 확인할 수 있다.

 

 

#select * from jhyeonuser where binary id='admin'# ' and pw='$pw'";

     형식으로 입력하면 id에서 admin만 받아들이고 뒷 쿼리는 주석처리 되므로

     admin으로 로그인할 수 있을 것 같다.

 

 

#end

'HackCTF > Web' 카테고리의 다른 글

HackCTF Time - [150]  (0) 2021.08.28
HackCTF 마법봉 - [100]  (0) 2021.08.28
HackCTF ReadFile - [100]  (0) 2021.08.25
HackCTF Guess me - [100]  (0) 2021.08.21
HackCTF 보물 - [100]  (0) 2021.08.21

#Main

 

 

#입력값 대입

 - flag만 입력하니 메인페이지로 돌아왔다.

 -> flag를 필터링하는 것을 알 수 있다.

 

 

#flaflagg.php를 입력하면 fla[flag]g.php에서 안의 flag가 필터링되므로 flag.php로 들어갈 것 같다.

 

'HackCTF > Web' 카테고리의 다른 글

HackCTF 마법봉 - [100]  (0) 2021.08.28
HackCTF Login - [100]  (0) 2021.08.26
HackCTF Guess me - [100]  (0) 2021.08.21
HackCTF 보물 - [100]  (0) 2021.08.21
HackCTF BUTTON - [50]  (0) 2021.08.21

#Main

 

 

#값 제출해보기

 - URL에서 변수값이 들어간다. secretcode는 filename의 내용을 읽어와서 저장하므로,

  경로상에 없을법한 값을 filename에 넣어주면 ""처리가 될 것 같다.

 

 

#end

 게싱문제가 아니었다..

'HackCTF > Web' 카테고리의 다른 글

HackCTF Login - [100]  (0) 2021.08.26
HackCTF ReadFile - [100]  (0) 2021.08.25
HackCTF 보물 - [100]  (0) 2021.08.21
HackCTF BUTTON - [50]  (0) 2021.08.21
HackCTF Hidden - [50]  (0) 2021.08.21

#Main

 

#page 1~3 클릭

 - 뭔가 이상한 값이 나오고 URL에서 숫자가 변함을 알 수 있었다.

 페이지 숫자 중엔 비밀이 있다고 하는데 불안감이 밀려온다..

 

 

#파이썬 스크립트 작성(1부터 1씩 올라가며 응답값에 플래그 존재하는지 검사)

 - 성공적으로 플래그를 뽑아내었다.

'HackCTF > Web' 카테고리의 다른 글

HackCTF ReadFile - [100]  (0) 2021.08.25
HackCTF Guess me - [100]  (0) 2021.08.21
HackCTF BUTTON - [50]  (0) 2021.08.21
HackCTF Hidden - [50]  (0) 2021.08.21
HackCTF / - [50]  (0) 2021.08.21

+ Recent posts