WebHacking/Lord of SQL injection(17)
-
Lord Of SQL Injection [ 5. Wolfman]
pre_match 함수에서 공백을 사용할 수 없도록 제한을 두었다 SQL문에서 공백을 대체할 수 있는 문자들이 무엇이 있는지 살펴보자 0x09: NULL ( 탭 ) 0x10: New Line ( 줄 바꿈 ) 0x11: Vertical Tab 0x12: New Page ( 프린터 용지 먹임 ,새 페이지 ) 0x13: Carrige Return ( 줄바꿈 ) 해당 문자들을 URL에서 % 기호를 이용해서 사용할 수 있고, 주석을 이용해서 문자열을 구분시킬 수 있다 URL: https://los.eagle-jump.org/wolfman_f14e72f8d97e3cb7b8fe02bef1590757.php?pw=9999'or%0did='admin'%0a%23
2017.09.08 -
Lord Of SQL injection [ 4.Orc ]
GET방식으로 pw를 입력받는다 add|ashes() 함수를 통해서 비밀번호를 변환하고 그 비밀번호에 일치하는 비밀번호를 테이블에서 찾아낸다처음 입력한 패스워드와 테이블의 패스워드를 비교하여 일치하면 문제가 풀린다=> 직접 패스워드를 알아내야 하는 블라인드 인젝션 문제이다 사용할 함수는 ascii() , length() , substring() = substr() 함수이다ascii() : 입력받은 인자를 아스키 코드 10진수로 변환한다 length( 문자열 ) : 문자열의 길이를 반환한다substring( 문자열 , 시작위치 , 길이 ) : 문자열의 시작위치에서 잘라낼 문자개수를 지정하여 반환한다=> substr( 'abcd' , 2 , 2 ) = bc [ 비밀번호 유추 과정 ]1> 패스워드의 길이를 확..
2017.09.08 -
Lord Of SQL injection [3.Goblin ]
preg_match함수를 사용하여 ' , " , ` 등등 문자열들을 사용할 수 없도록 막아놓았다 URL: https://los.eagle-jump.org/goblin_5559aacf2617d21ebb6efe907b7dded8.php?no=1 or id=admin => id 는 문자열변수이고 입력한 admin은 ' 가 없어서 문자열로 인식되지 않고 열이름이나 쿼리문으로 인식됩니다=> 따라서 해당 쿼리문은 오류가 발생되고 실행되지 않습니다=> 어떻게하면 ' 를 쓰지않고 문자열을 비교할 수 있을지 생각해봅시다 문자열을 숫자로 변환하여 비교하도록 합니다ord()함수 : 문자열을 아스키코드값(10진수)으로 변환한다 URL: https://los.eagle-jump.org/goblin_5559aacf2617d21e..
2017.09.08 -
Lord Of SQL injection [ 2.Cobolt ]
URL: https://los.eagle-jump.org/cobolt_ee003e254d2fe4fa6cc9505f89e44620.php?id=admin&pw=1234' or id='admin' %23 => SELECT id FROM prob_cobolt WHERE ( id='admin' and pw='hash값' ) or id='admin' #') => 뒤의 조건식 id=admin이 만족되어 쿼리문이 실행된다
2017.09.08 -
Lord Of SQL injection [ 1.Gremlin ]
URL: http://los.eagle-jump.org/gremlin_bbc5af7bed14aa50b84986f2de742f31.php?id=eunhwan&pw=1234' or ''='=> SELECT id FROM prob_gremlin WHERE ( id = eunhwan and pw='1234' ) or ''='' => 조건식은 항상 참이다연산자 우선순위 : and > or
2017.09.08