본문 바로가기

분류 전체보기

(295)
Webhacking.kr : old-34 Write-Up 문제에 접속 하면 아래 그림 1과 같이 alert() 창이 발생한다. 해당 서버의 코드를 살펴보니, 보기 어렵게 구성된 여전히 이를 해석하기에는 힘들다. ( 하다가 안될 것 같아서.. 그만뒀다.. ) 처음 페이지에 접근 했을 때, alert()가 발생했는데, alert()가 발생한 위치로 가보도록 한다. if (location[b('0x19', 'iUmC')][b('0x1a', '6]r1')](0x1) == b('0x1b', 'RLUb')) location[b('0x1c', '4c%d')] = b('0x1d', 'llaF'); else alert(b('0x1e', '14cN')); 위와 같은 코드를 볼 수 있다. 해당 코드를 그대로 console 창에 입력 시, "debug me" ale..
LORD OF SQLINJECTION : assassin Write-Up if(preg_match('/\'/i', $_GET[pw])) exit("No Hack ~_~"); $query = "select id from prob_assassin where pw like '{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("assassin"); {$_GET[pw]} 가 like 구문과 ' ' 사이에 입력된다. 해당 문제는 wildcard를 이용해 풀어줘야 할 것 같다. ?pw=% ?pw=________ 위와 같이 wildcard '%' 사용 시..
LORD OF SQLINJECTION : giant Write-Up if(strlen($_GET[shit])>1) exit("No Hack ~_~"); if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe"); $query = "select 1234 from{$_GET[shit]}prob_giant where 1"; 위의 조건들을 보면, strlen() 에 의해 shit 에 대한 인자의 길이가 1자리를 넘어가서는 안된다. 또한 공백에 대한 필터링 패턴 ( |\n|\r|\t )이 적용되어 있다. select 1234 fromprob_giant where 1 위는 현재 쿼리인데, from 과 prob_giant 사이에 공백이 없어, 올바른 query가 수행되지 않는다. 공백을 통해 두 문자 사이를 떨어뜨려주도록 ..
LORD OF SQLINJECTION : bugbear Write-Up if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); if(preg_match('/\'|substr|ascii|=|or|and| |like|0x/i', $_GET[no])) exit("HeHe"); $query = "select id from prob_bugbear where id='guest' and pw='{$_GET[pw]}' and no={$_GET[no]}"; $_GET[pw] = addslashes($_GET[pw]); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve..
Webhacking.kr : old-60 Write-Up
LORD OF SQLINJECTION : darkknight Write-Up if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); if(preg_match('/\'|substr|ascii|=/i', $_GET[no])) exit("HeHe"); $query = "select id from prob_darkknight where id='guest' and pw='{$_GET[pw]}' and no={$_GET[no]}"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_darkknight where id='admin' and pw='{$_GET[..
Webhacking.kr : old-11 Write-Up 해당 문제는 아래의 정규 표현식에 맞춰, val 값을 request하면 해결할 수 있다. $pat 에 해당 하는 정규표현식 패턴은 아래와 같이 해석될 수 있다. [x-z] : range를 표현하며 x ~ z 사이의 문자를 의미한다. ( 하이픈(-)은 두 문자 사이의 범위(from - to)를 의미 ) x{n} : 반복을 표현하며 x 문자가 n번 반복됨을 의미한다. \t : tab 을 표현하며 탭 문자를 의미한다. . : 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두! 단, 줄바꿈X * : 직전 문자 0번 이상 반복 최종 정답은 아래와 같다. ?val=2abcde_.119.203.7.102.%09p%09a%09s%09s +plus ?val=2cabcc_.....119.203.7.1..
Webhacking.kr : old-07 Wrtie-Up