WECHALL] Training

노션으로 옮김·2020년 5월 28일
2

wargame

목록 보기
55/59
post-thumbnail

Get Sourced

소스를 보면 가장 아래에 플래그가 있다.

Stegano

온라인 스테가노 그래피 사이트에서 디코딩시키면 답이 나오지 않는다.
bintext로 문자열을 확인하니 플래그가 있다.

Caesar Cipher

쉬프트 암호화다. 암호문을 디코딩 사이트에서 변환시키면 +5에서 플래그를 확인할 수 있다.

Robot

wechall의 robots.txt 에 접근하면 허용되지 않는 사이트 목록을 확인할 수 있다. T0PS3CR3T에 접근하면 인증된다.

User-agent: *
Disallow: /challenge/training/www/robots/T0PS3CR3T


User-agent: Yandex
Disallow: *

ASCII

st='84, 104, 101, 32, 115, 111, 108, 117, 116, 105, 111, 110, 32, 105, 115, 58, 32, 104, 108, 98, 100, 98, 102, 103, 105, 112, 99, 110, 111'
''.join([ chr(int(x)) for x in st.replace(' ', '').split(',')])
'The solution is: hlbdbfgipcno'

ENCODINGS 1

2진수 값이 있으며, JPK라는 변환도구를 제공한다.

10101001101000110100111100110100
00011101001100101111100011101000
10000011010011110011010000001101
11010110111000101101001111010001
00000110010111011101100011110111
11100100110010111001000100000110
00011110011110001111010011101001
01011100100000101100111011111110
10111100100100000111000011000011
11001111100111110111110111111100
10110010001000001101001111001101
00000110010111000011110011111100
11110011111010011000011110010111
0100110010111100100101110

제공해준 컨버터를 이용해 바이트 단위로 문자열로 변환시켜봤지만
올바르지 않은 값이 출력되었다.

파이썬으로 길이를 확인해보니 7로 나누어 떨어진다.

a=[encoded string]
''.join([chr(int(a[idx:idx+7],2)) for idx in range(0, len(a), 7)])
'This text is 7-bit encoded ascii. Your password is easystarter.'

Programming 1

When you visit this link you receive a message.
Submit the same message back to https://www.wechall.net/challenge/training/programming1/index.php?answer=the_message
Your timelimit is 1.337 seconds

import requests
cookie = {'WC' : '12660293-54119-cdQWfhBGF6nfbAd1'}

res = requests.get('https://www.wechall.net/challenge/training/programming1/index.php?action=request', cookies = cookie)

print 'key: ' + res.text

res = requests.get('https://www.wechall.net/challenge/training/programming1/index.php?answer='+res.text, cookies = cookie)

Regex

Your objective in this challenge is to learn the regex syntax.
Regular Expressions are a powerful tool in your way to master programming, so you should be able to solve this challenge, at least!
The solution to every task is always the shortest regular expression pattern possible.
Also note that you have to submit delimiters in the patterns too. Example pattern: /joe/i. The delimiter has to be /

/^$/

PHP LFI

LFI로 solution.php 파일을 찾아서 실행시킨다.

확장자 검사하는 부분의 소스를 제공해준다.

	return;
}

###############################
### Here is your exploit :) ###
###############################
$code = '$filename = \'pages/\'.(isset($_GET["file"])?$_GET["file"]:"welcome").\'.html\';';
$code_emulate_pnb = '$filename = Common::substrUntil($filename, "\\0");'; # Emulate Poison Null Byte for PHP>=5.3.4
$code2 = 'include $filename;';
### End of exploit ###

# Show the mission box
$url = 'index.php?file=';
$ex = array('welcome', 'news', 'forums');
$showsrc1 = 'index.php?show=source';
$showsrc2 = 'index.php?highlight=christmas';
foreach ($ex as $i => $e) { $ex[$i] = htmlspecialchars($url.$e); }
echo GWF_Box::box($chall->lang('info', array(GWF_Message::display('[PHP]'.$code.PHP_EOL.$code2.'[/PHP]'), '../solution.php', $showsrc1, $showsrc2, $ex[0], $ex[1], $ex[2])), $chall->lang('title'));

# Execute the code, using eval.
GWF_Debug::setDieOnError(false);
GWF_Debug::setMailOnError(false);
eval($code.$code_emulate_pnb); # eval the first line

echo '<div class="box">'.PHP_EOL;
echo '<div class="box_t">'.$chall->lang('example_title').' ('.htmlspecialchars($filename).')'.'</div>'.PHP_EOL;
echo '<div class="box_c">'.PHP_EOL;
if (lfiIsSafeDir($filename) === true) { eval($code2); } # Eval the second line, when safe.
else { echo GWF_HTML::error('LFI', $chall->lang('err_basedir'), false); }
echo '</div>'.PHP_EOL;
echo '</div>'.PHP_EOL;
GWF_Debug::setMailOnError(true);
GWF_Debug::setDieOnError(true);

확장자가 뒤에 추가되기 때문에 널 바이트로 잘라야 한다.

../../solution.php%00

0개의 댓글