PHP LFI
../solution.php에 중요한게 많다는 설명이 있다. 그럼 이 페이지를 가져오면 된다.
http://www.wechall.net/challenge/training/php/lfi/up/index.php?file=../../solution.php%00
끝부분에 html이 붙는건 널바이트로 지워준다.
PHP 0817
solution.php를 include하면 된다고 하는데... ? 그냥 주소를 써주면 통과. 의도가 뭔지 모르겠다.
http://www.wechall.net/challenge/php0817/index.php?which=solution
Training: Register Globals
register global이 있다는 설정이다. 내부의 foreach ($_GET as $k => $v) { $$k = $v; }로 register global을 비슷하게 구현했다고 한다. 그러면 GET방식으로 어떤 변수를 전달하면 된다. register global설정은 내가 get이던 post던(여기서 get) 입력한 변수가 검증없이 그냥 들어가는 취약점이다. $_COOKIE는 원래 쿠키값을 가져오지만 우리가 ?COOKIE=A처럼 GET방식으로 전달해서 변경할수 있는 그 취약점이다.
소스를 잘 살펴보면
if (strtolower($login[0]) === 'admin') {
$chall->onChallengeSolved(GWF_Session::getUserID());
}
부분에서 $login[0]값이 admin이면 문제가 통과됨을 알수있다. register global이므로 get방식으로 전달해주면 된다.
http://www.wechall.net/challenge/training/php/globals/globals.php?login[0]=admin
PHP 0819
문자열로 변환한 1337을 넣어야되는데, '나 ", (등이 다 막혀있다. 처음에는 PHP의 이상한 형변환을 이용해볼까 하다가 끝의 비교가 ===인걸 발견했다. 어떤 이상한 형변환으로 변환시킨다고 해도 ===는 형까지 맞아야 하므로 안된다. 그래서 php string을 찾아보니
http://php.net/manual/kr/language.types.string.php#language.types.string.syntax.heredoc
에서 heredoc라는 방법이 있었다.
http://blackfrost.blog.me/40131505083 여기도 설명 잘되있다.
이걸 이용해서 넣으면 되는데, 계속 실패했다. 원인을 몰라서 이것저것 찾아보니, 한줄씩 꼭 내려가 있어야 한다고 한다. http://www.wechall.net/challenge/space/php0819/index.php?eval=%3C%3C%3Ca%0a1337%0aa%3b%0a처럼 입력하니 성공했다.
'webhacking > etc' 카테고리의 다른 글
php wrapper (추가예정) (0) | 2015.07.28 |
---|---|
chall.tasteless.eu Leetmore (0) | 2015.07.21 |
adm1nkyj님의 새 워게임 (0) | 2015.07.05 |
securitytraps.pl Let's start (0) | 2015.07.02 |
overthewire natas 12, 13, chall.tasteless.eu Get Me Down (0) | 2015.06.27 |