2017. 9. 13. 18:04ㆍWebHacking/Lord of SQL injection
[ 풀이 요령 ]
1> ord 함수
no를 입력받는 부분에 싱글쿼터가 없어서 따로 싱글쿼터를 사용할 필요가 없으며 문자가 아닌 숫자형태로 비교하면 된다
ord(): 문자열의 1byte를 10진수의 아스키코드값으로 변환시킨다
ord('abcd') => a의 아스키코드값 97
2> ' = ' 대체하기
' = ' 이 막혀있어서 not 과 <>을 이용하여 ' = ' 을 대체한다
3> 스페이스바 대체하기
아스키코드표에 있는 0x09 ( Tab ) 이나 0x0a ( New line ) ... 등등 대체할 수 있는 여러가지 값들이 있음
[ 비밀번호 추측 과정 ]
1> 비밀번호 길이 확인
2> 각 패스워드 자리수 별 확인
left( 문자열 , 개수 ): 문자열의 좌측에서부터 개수만큼 문자 반환
right( 문자열 , 개수 ): 문자열의 우측에서부터 개수만큼 문자 반환
mid( 문자열 , 위치 , 개수 ): 문자열의 지정위치에서부터 개수만큼 문자 반환
left와 right함수를 같이 사용하거나 mid함수를 이용해서 각 자리수의 문자들을 가져올 수 있다
가져온 문자들을 ord()함수를 이용해 10진수 아스키코드로 변환하고 >,<로 참 거짓을 확인하여 추측한다
ex) 아이디가 admin and 비밀번호의 첫번째 글자의 10진수값은 49
?no=1%0anot(ord(id)<>97)%0aand%0a(not%0aord(mid(pw,1,1))<>49) |
=> > , < 를 활용하여 수의 범위를 좁혀가며 8개의 자리수 모두 확인한다
3> 실행결과
4> 비밀번호 자동화 파이썬 프로그래밍
5> 실행결과
'WebHacking > Lord of SQL injection' 카테고리의 다른 글
Lord Of SQL Injection [ 14. Giant ] (0) | 2017.09.13 |
---|---|
Lord Of SQL Injection [ 13. BugBear ] (0) | 2017.09.13 |
Lord Of SQL Injection [ 11. Golem ] (0) | 2017.09.13 |
Lord Of SQL Injection [ 10.Skeleton ] (0) | 2017.09.12 |
Lord Of SQL Injection [ 7.Orge ] (0) | 2017.09.12 |