본문 바로가기

Wargame, CTF/LOS_eagle

(22)
LOS _Dark_eyes query : {$query}"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_dark_eyes where id='admin' and pw='{$_GET[pw]}'"; $result = @mysql_fetch_array(mysql_query($query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("dark_eyes"); highlight_file(__FILE__);?>소스코드 if, case, when, sleep, benchmark가 필터링 되어있어조건문과 Time based blind injection이 불가능함error가 발생해도 error내용을 ..
LOS _Iron_golem 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
LOS _Dragon query : {$query}"; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("dragon"); highlight_file(__FILE__); ?>소스코드 딱히 문제 풀이에 방해될만한 필터링은 존재하지 않음하지만 쿼리문, id='guest'의 뒤가 #으로 한줄 주석으로 처리되어 있음 한줄 주석이란게 중요한데%0a는 줄바꿈으로 개행문자임그래서 한줄 주석인 #을 우회 가능query -> select id from prob_dragon where id='guest'# and pw='''and pw=''는 주..
LOS _Xavis query : {$query}"; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) echo "Hello {$result[id]}"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_xavis where id='admin' and pw='{$_GET[pw]}'"; $result = @mysql_fetch_array(mysql_query($query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("xavis"); highlight_file(__FILE__); ?>Xavis..
LOS _nightmare 필터링 _ / . / () / # / - 그래고 pw는 6자 이하로 쿼리문을 건드려야함 쿼리문으로 나오는 id가 있다면 클리어 묵시적 형변환 이용 빈 문자열은 0과 같다 and 앞에서 쿼리문을 완성 시키고 and부터는 쿼리작동이 되면 안되기때문에 ;와 NULL값을 주어 쿼리문을 끝낸다 pw=')=0;%00 클리어
LOS _succubus 필터링 목록 ' 클리어 조건 쿼리문으로 나오는 id가 있으면 클리어 '를 안 쓰고 데이터 베이스에 있을 id정보를 추출해야한다 주석처리는 가능 일단 이렇게 했는데 역시 안나옴 id의 뒤에 있는 '를 이스케이프처리해서 id값으로 저렇게 들어가게 하고 or 1=1#을 삽입면 되지 않을까 id=\&pw=or%201=1%23를 넣어서 id값은 "' and pw="가 들어가게되고 or 1=1이 되어 id가 'and pw= 이거나 TRUE 데이터 베이스에서 모든 정보를 추출
LOS _zombie_assassin 클리어 조건 query로 출력되는 id가 존재하면 클리어 필터링 목록 id와 pw에서 \ | prob | _ | . | () 그리고 ereg함수로 '(싱글쿼터)를 필터링하는데 ereg는 NULL을 만나면 문자열이 끝난 걸로 인식해서 그 뒤로는 검사하지 않는다 보면 %00으로 ereg필터링을 우회하여 싱글 쿼터가 삽인 된 모습이다 이 걸이 용해서 id에서 닫아주고 or id like '%'--%20을 해주면 id가 뭐가 됐든 가져오겠단 걸로 해서 입력해준다 클리어
LOS _assassin 클리어 조건 쿼리문을 완성시켜 나오는 id가 admin이면 클리어 필터링 목록 '(싱글쿼터) 처음에 '_'를 써서 하는 건줄 알고 guest는 8자리비번인걸보고 admin자리수 만큼 '_'를 하면 나올줄알았는데 파이썬으로 200개를 해도 안나왔다 like일때 %를 사용하면 와일드카드로 쓸수있다 like '0%'->0으로 시작하는거 like '%0'->0으로 끝나는거 like '%0%'->0이 들어가는거 아마 geust와 admin의 비밀번호 자리가 같은데 guest의 row가 먼저있어서 guest가 나오는 거같다 어느순간까지 비밀번호가 같고 그 이후는 달라질 수 있을 것 같아 노가다로 한자리씩 늘려가며 해봤다 클리어