Google CTF 2020
보호되어 있는 글입니다.
2020.09.08
no image
csictf 2020
cascade http://chall.csivit.com:30203/ 문제에 들어가보면 "/static/stype.css"가 있다. 해당 위치로 이동해보면 css 속성들과 그 사이에 주석으로 flag가 존재한다. csictf{w3lc0me_t0_csictf} oreo http://chall.csivit.com:30243/ 문제에 접속한 뒤 쿠키를 확인해보면 flavour이라는 쿠키가 추가된다. 값을 base64로 디코딩해보면 strawberry라고 뜬다. 하지만 chocolate 오레오를 먹고 싶어하니 쿠키 값을 초콜릿으로 바꿔야 한다. 쿠키 값을 초콜릿으로 변경하면 flag가 출력된다. csictf{1ick_twi5t_dunk} warm up http://chall.csivit.com:30272/ 문제..
2020.07.23
Google CTF 2019
보호되어 있는 글입니다.
2020.06.29
no image
xss game level 3
location.hash를 사용하면 url “https://xss-game.appspot.com/level3/frame#1”에서 #1을 가져오게 된다. 따라서 location.hash.substr(1)은 1을 가져오는 함수이다. 또한 그렇게 가져온 값이 num에 들어간다. 그 값으로 “”; 문장이 완성되게 된다. 문제를 해결하기 위해서는 존재하지 않는 이미지를 띄우고 onerror 처리를 해야한다. 따라서 num의 값으로 src의 ‘를 닫고, onerror 코드를 추가하면 된다. 따라서 #2.jpg’ onerror=’alert()’/>// 라 입력을 하면 num에 2.jpg’ onerror=’alert()’/>//가 들어가게 된다. html 변수에 //./jpg’/>;가 추가된다. 이렇게 입력할 경우 i..
2020.06.29
no image
xss game level 2
힌트를 보면 tag는 작동하지 않으니 JavaScript attribute ‘onerror’를 사용하라고 알려줬다. onerror는 이미지 태그와 함께 쓰이고, 이미지를 불러오는데 에러가 발생하면 실행되는 명령이다. ‘’라 글을 작성하면 “hello”라는 이미지를 찾고 이미지를 열 수 없으면 alert() 명령을 실행하게 된다. hello라는 이미지는 존재하지 않으므로 문제가 해결된다.
2020.06.29
no image
xss game level 1
아무 글자도 입력하지 않고 search를 누르면 주소창에 ‘https://xss-game.appspot.com/level1/fra me?query=Enter+query+here…’라고 뜬다. query의 뒤에 ‘’를 붙였더니 문제가 풀렸다.
2020.06.29
no image
webhacking.kr challenge 59
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ admin을 입력하야 하는데 admin이 필터링 되어있다. 따라서 reverse 함수를 이용하여 nimda로 아이디를 설정해야 한다.
2020.06.29
no image
webhacking.kr challenge 58
※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다. ※ ls를 검색하면 파일 리스트를 볼 수 있고, flag를 검색하면 ‘permission denied… admin only!’라고 뜬다. 콘솔창에 다음과 같이 입력하면 admin으로 flag를 검색하고, FLAG를 출력한다. 또 다른 방법으로는 burp suite를 활용해서 guest를 admin으로 바꿔줘도 FLAG가 출력된다.
2020.06.29

Google CTF 2020

2020. 9. 8. 13:26

This is a protected article. Please enter the password.

csictf 2020

assb
|2020. 7. 23. 12:06

cascade

http://chall.csivit.com:30203/

 

 문제에 들어가보면 "/static/stype.css"가 있다. 

 

 해당 위치로 이동해보면 css 속성들과 그 사이에 주석으로 flag가 존재한다. 

 

 csictf{w3lc0me_t0_csictf}

 

 

oreo

http://chall.csivit.com:30243/

 

 문제에 접속한 뒤 쿠키를 확인해보면 flavour이라는 쿠키가 추가된다.

 

 값을 base64로 디코딩해보면 strawberry라고 뜬다. 하지만 chocolate 오레오를 먹고 싶어하니 쿠키 값을 초콜릿으로 바꿔야 한다. 

 

 쿠키 값을 초콜릿으로 변경하면 flag가 출력된다. 

 

 csictf{1ick_twi5t_dunk}

 

 

warm up

http://chall.csivit.com:30272/

 

 문제에 접속하면 소스 코드가 출력된다. 이때 sha1(10932435112)에 대해서 구글링해보면 이 값은 매직 해시인 것을 알 수 있다.

 PHP에서는 1e2를 1*10^2로 인식한다. 따라서 0e~로 시작하게 된다면 뒤에 무슨 값이 오든 결과값은 0이 될 것이다. 매직 해시란 '0e'로 시작하는 문자열 뒤의 값들이 전부 숫자인 경우를 의미한다. 이는 PHP 상에서 flaot 형태로 인식되고, 값을 계산해보면 모두 0이 된다. 

 

github.com/spaze/hashes/blob/master/sha1.md

 

 위의 주소를 참고하여 문제를 해결했다. 매직해시들이 정리되어 있다. 

 

 매직해시 중 하나를 get 방식으로 전달하면 flag가 출력된다. 

 

 csictf{typ3_juggl1ng_1n_php}

 

 

secure portal

http://chall.csivit.com:30281

 

 이 문제는 패스워드를 알아내서 입력해야 한다. 소스코드를 확인해보면 난독화된 자바스크립트 코드가 존재한다. 

 

var _0x575c=['\x32\x2d\x34','\x73\x75\x62\x73\x74\x72\x69\x6e\x67','\x34\x2d\x37','\x67\x65\x74\x49\x74\x65\x6d','\x64\x65\x6c\x65\x74\x65\x49\x74\x65\x6d','\x31\x32\x2d\x31\x34','\x30\x2d\x32','\x73\x65\x74\x49\x74\x65\x6d','\x39\x2d\x31\x32','\x5e\x37\x4d','\x75\x70\x64\x61\x74\x65\x49\x74\x65\x6d','\x62\x62\x3d','\x37\x2d\x39','\x31\x34\x2d\x31\x36','\x6c\x6f\x63\x61\x6c\x53\x74\x6f\x72\x61\x67\x65',];(function(_0x4f0aae,_0x575cf8){var _0x51eea2=function(_0x180eeb){while(--_0x180eeb){_0x4f0aae['push'](_0x4f0aae['shift']());}};_0x51eea2(++_0x575cf8);}(_0x575c,0x78));var _0x51ee=function(_0x4f0aae,_0x575cf8){_0x4f0aae=_0x4f0aae-0x0;var _0x51eea2=_0x575c[_0x4f0aae];return _0x51eea2;};function CheckPassword(_0x47df21){var _0x4bbdc3=[_0x51ee('0xe'),_0x51ee('0x3'),_0x51ee('0x7'),_0x51ee('0x4'),_0x51ee('0xa')];window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]]('9-12','BE*');window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x2'),_0x51ee('0xb'));window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x6'),'5W');window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]]('16',_0x51ee('0x9'));window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x5'),'pg');window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]]('7-9','+n');window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0xd'),'4t');window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x0'),'$F');if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x8'))===_0x47df21[_0x51ee('0x1')](0x9,0xc)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x2'))===_0x47df21['substring'](0x4,0x7)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x6'))===_0x47df21[_0x51ee('0x1')](0x0,0x2)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]]('16')===_0x47df21[_0x51ee('0x1')](0x10)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x5'))===_0x47df21[_0x51ee('0x1')](0xc,0xe)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0xc'))===_0x47df21[_0x51ee('0x1')](0x7,0x9)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0xd'))===_0x47df21[_0x51ee('0x1')](0xe,0x10)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x0'))===_0x47df21[_0x51ee('0x1')](0x2,0x4))return!![];}}}}}}}return![];}

 

이를 난독화 해제 사이트를 통하여 해제해보았다. 

 

var _0x575c = ['\x32\x2d\x34', '\x73\x75\x62\x73\x74\x72\x69\x6e\x67', '\x34\x2d\x37', '\x67\x65\x74\x49\x74\x65\x6d', '\x64\x65\x6c\x65\x74\x65\x49\x74\x65\x6d', '\x31\x32\x2d\x31\x34', '\x30\x2d\x32', '\x73\x65\x74\x49\x74\x65\x6d', '\x39\x2d\x31\x32', '\x5e\x37\x4d', '\x75\x70\x64\x61\x74\x65\x49\x74\x65\x6d', '\x62\x62\x3d', '\x37\x2d\x39', '\x31\x34\x2d\x31\x36', '\x6c\x6f\x63\x61\x6c\x53\x74\x6f\x72\x61\x67\x65', ];
(function (_0x4f0aae, _0x575cf8) {
	var _0x51eea2 = function (_0x180eeb) {
		while (--_0x180eeb) {
			_0x4f0aae['push'](_0x4f0aae['shift']());
		}
	};
	_0x51eea2(++_0x575cf8);
} (_0x575c, 0x78));
var _0x51ee = function (_0x4f0aae, _0x575cf8) {
	_0x4f0aae = _0x4f0aae - 0x0;
	var _0x51eea2 = _0x575c[_0x4f0aae];
	return _0x51eea2;
};
function CheckPassword(_0x47df21) {
	var _0x4bbdc3 = [_0x51ee('0xe'), _0x51ee('0x3'), _0x51ee('0x7'), _0x51ee('0x4'), _0x51ee('0xa')];
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]]('9-12', 'BE*');
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x2'), _0x51ee('0xb'));
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x6'), '5W');
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]]('16', _0x51ee('0x9'));
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x5'), 'pg');
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]]('7-9', '+n');
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0xd'), '4t');
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x0'), '$F');
	if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x8')) === _0x47df21[_0x51ee('0x1')](0x9, 0xc)) {
		if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x2')) === _0x47df21['substring'](0x4, 0x7)) {
			if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x6')) === _0x47df21[_0x51ee('0x1')](0x0, 0x2)) {
				if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]]('16') === _0x47df21[_0x51ee('0x1')](0x10)) {
					if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x5')) === _0x47df21[_0x51ee('0x1')](0xc, 0xe)) {
						if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0xc')) === _0x47df21[_0x51ee('0x1')](0x7, 0x9)) {
							if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0xd')) === _0x47df21[_0x51ee('0x1')](0xe, 0x10)) {
								if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x0')) === _0x47df21[_0x51ee('0x1')](0x2, 0x4)) return !! [];
							}
						}
					}
				}
			}
		}
	}
	return ! [];
}

 

 스크립트 코드를 확인해보면 if 문을 반복하며 패스워드를 체크하고 있다. input 값으로 "1234567890abcdef"를 준 후, 비교하는 두 값을 출력하며 패스워드의 순서를 확인한 후 패스워드를 재구성 하였다.

 

12:"5W" 
34:"$F"
567:"bb="
89:"+n"
0ab:"BE*"
cd:"pg"
ef:"4t"
:"^7M"

 5W$Fbb=+nBE*pg4t^7M

 

 csictf{l3t_m3_c0nfus3_y0u}

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

Google CTF 2020  (0) 2020.09.08
Google CTF 2019  (0) 2020.06.29
xss game level 3  (0) 2020.06.29
xss game level 2  (0) 2020.06.29
xss game level 1  (0) 2020.06.29

Google CTF 2019

2020. 6. 29. 15:39

This is a protected article. Please enter the password.

xss game level 3

assb
|2020. 6. 29. 15:33

 location.hash를 사용하면 url “https://xss-game.appspot.com/level3/frame#1에서 #1을 가져오게 된다. 따라서 location.hash.substr(1) 1을 가져오는 함수이다.

 

 

 또한 그렇게 가져온 값이 num에 들어간다. 그 값으로 “<img src=’/static/level3/cloud” + num + “./jpg’/>”; 문장이 완성되게 된다. 문제를 해결하기 위해서는 존재하지 않는 이미지를 띄우고 onerror 처리를 해야한다. 따라서 num의 값으로 src를 닫고, onerror 코드를 추가하면 된다.

 

 

 따라서 #2.jpg’ onerror=’alert()’/>// 라 입력을 하면 num2.jpg’ onerror=’alert()’/>//가 들어가게 된다. html 변수에 <img src=’/static/level3/cloud2.jpg’ onerror=’alert()’/>//./jpg’/>;가 추가된다. 이렇게 입력할 경우 image2가 출력된다. onerror는 이미지가 존재하지 않을 경우 실행되므로 존재하지 않는 이미지(0또는 4부터)를 입력하면 문제가 풀린다.

 

 

 

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

csictf 2020  (0) 2020.07.23
Google CTF 2019  (0) 2020.06.29
xss game level 2  (0) 2020.06.29
xss game level 1  (0) 2020.06.29
webhacking.kr challenge 59  (0) 2020.06.29

xss game level 2

assb
|2020. 6. 29. 15:32

 힌트를 보면 <script> tag는 작동하지 않으니 JavaScript attribute ‘onerror’를 사용하라고 알려줬다. onerror는 이미지 태그와 함께 쓰이고, 이미지를 불러오는데 에러가 발생하면 실행되는 명령이다.

 

 

 ‘<img src=”hello” onerror=”alert()”>’라 글을 작성하면 “hello”라는 이미지를 찾고 이미지를 열 수 없으면 alert() 명령을 실행하게 된다. hello라는 이미지는 존재하지 않으므로 문제가 해결된다.

 

 

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

Google CTF 2019  (0) 2020.06.29
xss game level 3  (0) 2020.06.29
xss game level 1  (0) 2020.06.29
webhacking.kr challenge 59  (0) 2020.06.29
webhacking.kr challenge 58  (0) 2020.06.29

xss game level 1

assb
|2020. 6. 29. 15:31

 아무 글자도 입력하지 않고 search를 누르면 주소창에 https://xss-game.appspot.com/level1/fra

me?query=Enter+query+here…’라고 뜬다.

 

 

 query의 뒤에 ‘<script>alert()</script>’를 붙였더니 문제가 풀렸다.

 

 

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

xss game level 3  (0) 2020.06.29
xss game level 2  (0) 2020.06.29
webhacking.kr challenge 59  (0) 2020.06.29
webhacking.kr challenge 58  (0) 2020.06.29
webhacking.kr challenge 56  (0) 2020.06.29

※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다.  ※ 

 

 

 

 admin 입력하야 하는데 admin 필터링 되어있다. 따라서 reverse 함수를 이용하여 nimda로 아이디를 설정해야 한다.

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

xss game level 2  (0) 2020.06.29
xss game level 1  (0) 2020.06.29
webhacking.kr challenge 58  (0) 2020.06.29
webhacking.kr challenge 56  (0) 2020.06.29
webhacking.kr challenge 54  (0) 2020.06.29

※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다.  ※ 

 

 

 

 ls를 검색하면 파일 리스트를 볼 수 있고, flag를 검색하면 ‘permission denied… admin only!’라고 뜬다.

 

 

콘솔창에 다음과 같이 입력하면 admin으로 flag를 검색하고, FLAG를 출력한다.

 

 

 

 

 또 다른 방법으로는 burp suite를 활용해서 guestadmin으로 바꿔줘도 FLAG가 출력된다.

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

xss game level 1  (0) 2020.06.29
webhacking.kr challenge 59  (0) 2020.06.29
webhacking.kr challenge 56  (0) 2020.06.29
webhacking.kr challenge 54  (0) 2020.06.29
webhacking.kr challenge 53  (0) 2020.06.29