https://github.com/w181496/Web-CTF-Cheatsheet#php-tag

 

GitHub - w181496/Web-CTF-Cheatsheet: Web CTF CheatSheet 🐈

Web CTF CheatSheet 🐈. Contribute to w181496/Web-CTF-Cheatsheet development by creating an account on GitHub.

github.com

 

'CTF > WEB' 카테고리의 다른 글

Curl 사용방법  (0) 2021.12.08
웹해킹 할때 유용한 크롬 확장 프로그램 모음  (0) 2021.12.08
HackCTF_가위바위보  (0) 2021.12.06
HackCTF_Home  (0) 2021.12.06
HackCTF_Input Check  (0) 2021.12.06

웹해킹을 배우는 중 curl 이 굉장히 중요하고 유용한 명령어 임을 알게됨 떄문에 사용법을 적어두려고 함

내용 추가 할 예정

 

curl 옵션

-X: 메소드 설정 (GET, POST, PUT, PATCH, DELETE)

-H: 헤더 추가 

└ -H "User-Agent: [바꿀내용] " [대소문자 구분 철저하게 해야함] 

-i: 헤더출력

-d: data (HTTP, POST, DATA)

└ POST == DATA (둘 중 하나를 쓰려면 나머지 한개도 같이 사용해야 한다.)

-v: 동작하면서 자세한 옵션을 출력

 

'CTF > WEB' 카테고리의 다른 글

CTF에서 사용되는 Payload  (0) 2021.12.08
웹해킹 할때 유용한 크롬 확장 프로그램 모음  (0) 2021.12.08
HackCTF_가위바위보  (0) 2021.12.06
HackCTF_Home  (0) 2021.12.06
HackCTF_Input Check  (0) 2021.12.06

메인화면 

가위바위보 시작하게 되면 

 

가위 바위 보 중 선택

가위바위보 중 하나를 선택하게 되고 랜덤으로 나오는 상대와 대결을 하게 된다 

가위바위보 이김

 

하지만 여기서 이겨도 플래그를 주진 않는다. 

 

프로필 사진 변경폼

그러던 중 내가 고른 이미지 파일을 업로드 가능한 폼이 보인다. 

이미지 파일 업로드 => 파일 업로드 => 파일 업로드 취약점이 생각난다.

위와 같이 변경이 된다. 그러면 여기에다 php 한 줄 웹쉘 파일을 올리면 플래그를 얻을 수 있지 않을까?? 

 

<? php system($_GET['cmd']);?> 라는 php 한 줄 웹쉘 코드를 입력한 뒤 webshell.php 파일을 올려보자 

 

웹쉘을 업로드 하려고했더니 이미지 파일만 업로드가 가능하다고 한다. 

그러면 파일을 이미지파일 인것처럼 보이지만 안에는 php 코드가 들어가 있는 파일을 올려보자 

HxD를 켜서 JPG 파일 시그니처만 복사해서 새로운 파일에 덮어 씌운뒤 

나머지 뒤쪽에는 웹쉘 코드를 넣어보자 

 

파일 시그니처

http://forensic-proof.com/archives/300

 

파일 시그니처 모음 (Common File Signatures) | FORENSIC-PROOF

 

forensic-proof.com

 

JPG 파일 시그니처는  FF D8 FF E0 xx xx 4A 46 이다. 

새로운 파일 앞에 JPG 파일 시그니처를 붙인 뒤 

웹쉘 코드를 뒤에 붙여놓고 show.php 라는 이름으로 저장한 뒤 

해당 파일을 업로드 해보자 

파일이 정상적으로 업로드가 되었다.  다음으로 해당 업로드된 파일의 경로를 알아야 하는데 

소스코드를 보자

이미지 저장 경로를 파악했으니 해당 경로로 이동하면

무언가 일어났다고 말하고 아무런 동작도 이뤄지지 않는다. 

여기서 막혀서 다시 구글링을 해보니 

웹쉘 파일 이름과 똑같은 이름을 사용해야 한다고 한다. 

이름을 show.php로 바꿔준 뒤 해당경로로 다시 이동해보자 

정상적으로 업로드가 된 것을 확인할 수 있고 여기서 웹쉘을 사용해보면 

다른 사람들이 문제풀때 올린 웹쉘이 많이 보인다. 상대 경로를 이용해서 위로 올라가 보자 

 

cd../; ls 입력하였더니 flag.txt가 보인다. 

해당 파일을 cat../flag.txt으로 열면 

플래그를 찾을 수 있다. 

이번문제는 꽤나 길었던 거 같다. 

'CTF > WEB' 카테고리의 다른 글

Curl 사용방법  (0) 2021.12.08
웹해킹 할때 유용한 크롬 확장 프로그램 모음  (0) 2021.12.08
HackCTF_Home  (0) 2021.12.06
HackCTF_Input Check  (0) 2021.12.06
HackCTF_Time  (0) 2021.12.04

이 문제에서 힌트는 "머리말" 

"머리말" -> "머리" -> "헤드" -> "헤더"라는 것을 유추할 수 있다. 

 

헤더를 확인해 봐도 뭐가 없다.... 

그렇다면 내 아이피가 아닌 다른 아이피로 바꾸면 문제가 해결되지 않을까 라는 생각을 하였고 

아이피를 헤더에서 변경할 수 있는 방법이 있나 싶어 구글링을 해봤다. 

 

 

위와 같이 검색을 해봤다. 

X-Forwarded-For(XFF)라는 녀석을 발견했고 이 녀석이 어떠한 동작을 하는지 알아보면 

X-Forwarded-For (XFF) 헤더는 HTTP 프락시나 로드 밸런서를 통해 웹 서버에 접속하는

클라이언트의 원 IP 주소를 식별하는 사실상의 표준 헤더라고

 

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

 

X-Forwarded-For - HTTP | MDN

X-Forwarded-For (XFF) 헤더는 HTTP 프록시나 로드 밸런서를 통해 웹 서버에 접속하는 클라이언트의 원 IP 주소를 식별하는 사실상의 표준 헤더다. 클라이언트와 서버 중간에서 트래픽이 프록시나 로드

developer.mozilla.org

http://blog.plura.io/?p=6597 

 

X-Forwarded-For(XFF) 란?

X-Forwarded-For(XFF) 란? XFF 는 HTTP Header 중 하나로 HTTP Server 에 요청한 Client 의 IP 를 식별하기 위한 표준입니다. 웹 서버나 WAS 앞에 L4 같은 Load balancers 나 Proxy server, caching server 등의 장비가 있을 경우

blog.plura.io

 

자세한 설명은 위 사이트를 참조 바란다. 

그럼 이녀석을 가지고 주소를 변경하면 되는데 여기서 나는 버프 슈트를 이용하겠다.

6번 라인에 XFF를 추가하여 아이피 루프백 주소를 넣어주고 넘기게 되면 

아이피가 127.0.0.1로 변경되는 동시에 플래그를 출력하게 된다. 

'CTF > WEB' 카테고리의 다른 글

웹해킹 할때 유용한 크롬 확장 프로그램 모음  (0) 2021.12.08
HackCTF_가위바위보  (0) 2021.12.06
HackCTF_Input Check  (0) 2021.12.06
HackCTF_Time  (0) 2021.12.04
HackCTF_마법봉  (0) 2021.12.04

체크박스가 있다 플래그를 원하면 저기 네모박스 안에다가 아무런 값이나 넣어보자.

test를 입력해봤더니 test=test로 나와있다. 

그렇다면 flag를 입력해보면 플래그가 나오지않을까? 라는 생각에 입력해보았다.

 

하지만 플래그로는 볼 수 없게 되어있다. 

그러면 소스코드를 보도록 하자

Input Command Check is Array Type

배열이라는 힌트를 얻을 수 있었다.

 

Strcmp PHP 취약점를 풀게

https://hackability.kr/entry/PHP-strcmp-%EC%B7%A8%EC%95%BD%EC%A0%90%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9D%B8%EC%A6%9D-%EC%9A%B0%ED%9A%8C

 

[PHP] strcmp 취약점을 이용한 인증 우회

최조 작성: 2014-02-01 최종 수정: 2015-01-20 안녕하세요. Hackability 입니다. 이번에 작성할 내용은 PHP 에서 strcmp 취약점을 이용한 인증 우회 기법 입니다. 아래와 같이 간단히 인증을 하는 login.php 가..

hackability.kr

해당 취약점을 이용하여 문제를 풀게되면 

 

text[]=flag 라고 입력을 하게 되면 플래그가 출력된다. 

 

'CTF > WEB' 카테고리의 다른 글

HackCTF_가위바위보  (0) 2021.12.06
HackCTF_Home  (0) 2021.12.06
HackCTF_Time  (0) 2021.12.04
HackCTF_마법봉  (0) 2021.12.04
php 연산자 취약점  (0) 2021.12.04

문제 소스코드

php로 코딩된 소스코드이다. 

is_numeric라는 함수와 sleep라는 함수가 보인다. 우선 저 함수가 어떠한 역할을 하는지부터 알아봐야겠다.

 

is_numeric 함수는 특정 데이터의 값이 숫자인지 아닌지를 확인하여 결과를 반환하는 함수라고 한다.

sleep 함수는 입력된 초만큼 PHP 코드의 실행을 지연시키는 역할을 하는 함수 라고 한다. 

 

다음으로 코드 로직을 분석해 보자.

 

1. 입력값은 숫자값만 받겠다.

2. 60x60x24x30x2 = 5,184,000 보다 작으면 시간이 너무 짧아서 불가능

3. 60x60x24x30x3 = 7,776,000 보다 크면 시간이 너무 길어서 불가능

 

그렇다는 건 5,184,000 <  6,000,000 <7,776,000 

중간에 있는 수를 입력하면 되지 않을까?라는 생각에 입력을 하여도 

sleep 함수때문에 9주 동안 컴퓨터를 켜놓고 있어야 한다. 

 

때문에 여기서 지수라는 녀석을 이용할 것이다.

지수 변환기는 이 사이트를 참조하면 된다. 

http://mwultong.blogspot.com/2008/01/exponential-scientific-notation-convert.html

 

지수 표기법 변환기, 과학적 숫자를 보통 숫자로 변환; Exponential Scientific Notation Convert

 

mwultong.blogspot.com

 

지수 표기법

https://seulcode.tistory.com/461

 

지수 표기법 (Exponential notaion) feat. vim: e+01, e-01

Exponential notation - 지수 표기법 feat. vim 지수 표기법은 많은 10의배수가 사용될 경우 모두 표시하기 어렵기 때문에 지수( e )를 사용하여 표기를 하는 방식이다. 가장 쉽게 vim에서 지수 표기를 해보

seulcode.tistory.com

 

위 내용을 토대로 6,000,000이라는 값을 지수 변환기를 이용하여 변환하게 되면 6e+6으로 변환되게 된다. 

지수값을 입력한 뒤 제출&nbsp;

입력을 하게 되면 

 

플래그 출력

플래그 값이 출력되며 문제를 해결할 수 있다. 

 

1. is_numeric 함수와 sleep 함수가 어떠한 동작을 하는 함수인지 알아야 함

2. 지수에 대한 개념

위 두가지만 알고 있으면 해당 문제는 풀 수 있다. 

 

'CTF > WEB' 카테고리의 다른 글

HackCTF_Home  (0) 2021.12.06
HackCTF_Input Check  (0) 2021.12.06
HackCTF_마법봉  (0) 2021.12.04
php 연산자 취약점  (0) 2021.12.04
HackCTF_Login  (0) 2021.12.04

 

 

(md5("240610708") == sha1($input)) 

 

240610708을 md5로 해쉬로 변환한 값과 

입력한 값을 sha1 해쉬로 변환한 값이 서로 같아야 플래그를 얻을 수 있다. 

 

여기서 우리가 알아야 할 내용은 

 

PHP 연산자 취약점

https://t1g3r.tistory.com/9

 

php 연산자 취약점

php에는 "=="을 이용한 느슨한 비교와 "==="를 이용한 엄격한 비교가 있다. 하지만 "==" 의 경우 타입에 따라 "같다" 라는 기준을 모호하게 적용하고 있기 때문에 취약점이 발생함 참고 블로그 https://h

t1g3r.tistory.com

 

Magic Hash

 

https://www.whitehatsec.com/blog/magic-hashes/

 

Magic Hashes

For more than the last decade, PHP programmers have been wrestling with the equals-equals (==) operator.

www.whitehatsec.com

https://ch4njun.tistory.com/66

 

[Concept] PHP Magic Hash 취약점

PHP에서 Magic Hash란 사실 취약점이라기보다 특수동작이다. A == B 를 비교하면 두개의 자료형이 달라도 데이터만 일치하다면 TRUE를 반환한다. ( 이를 방지하기 위해서는 A === B 를 사용하면 된다. )

ch4njun.tistory.com

위 두 가지(매직 해시, 느슨한 비교 연산자) 사전 지식을 가지고  문제를 풀면 됨

 

플래그 값이 나오게 된다. 

 

1매직해쉬, php 느슨한 비교 연산자 이 두 가지만 알고 있으면 쉽게 풀 수 있는 문제였다. 

'CTF > WEB' 카테고리의 다른 글

HackCTF_Input Check  (0) 2021.12.06
HackCTF_Time  (0) 2021.12.04
php 연산자 취약점  (0) 2021.12.04
HackCTF_Login  (0) 2021.12.04
HackCTF_ReadFile  (0) 2021.12.04

php에는  "=="을 이용한 느슨한 비교와 "==="를 이용한 엄격한 비교가 있다.

하지만 "=="의 경우 타입에 따라 "같다"라는 기준을 모호하게 적용하고 있기 때문에 취약점이 발생함

 

 

 

참고 블로그 https://hyunmini.tistory.com/90

 

php 의 연산자 취약점

php 에는 "==" 을 이용한 느슨한 비교와 "===" 를 이용한 엄격한 비교가 있다. "==" 의 경우 타입에 따라 "같다" 라는 기준을 모호하게 적용하고 있기 때문에 이로 인해 취약점이 발생하기도 한다. 자

hyunmini.tistory.com

 

'CTF > WEB' 카테고리의 다른 글

HackCTF_Time  (0) 2021.12.04
HackCTF_마법봉  (0) 2021.12.04
HackCTF_Login  (0) 2021.12.04
HackCTF_ReadFile  (0) 2021.12.04
HackCTF_Guess me  (0) 2021.12.04

접속하면 로그인 폼이 보인다.  view source를 눌러보자 

pw 변수는 sha256 hash로 변경이 된다. (pw는 sql 인젝션 불가능)

 

sql 구문을 보면 id 입력받는 곳에 아무런 필터링이 없기 때문에 이곳에 SQL 인젝션을 해보자

플래그 값이 나오게 된다. 

 

해당 문제 풀기 위한 사전 지식 

1. DB 쿼리문 작동 방법

2. php 코드

'CTF > WEB' 카테고리의 다른 글

HackCTF_마법봉  (0) 2021.12.04
php 연산자 취약점  (0) 2021.12.04
HackCTF_ReadFile  (0) 2021.12.04
HackCTF_Guess me  (0) 2021.12.04
HackCTF_보물  (0) 2021.12.04

+ Recent posts