보안공부/웹해킹입문-lv.0

SQL injection - 로컬환경

mint* 2021. 10. 31. 21:59
728x90

출처: 웹해킹 입문(이상한)

 

SQL이란 관계형데이터베이스 관리 시스템에서 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어라고한다.

 

공격자는 SQL을 주입하여 원하는 데이터를 얻을 수 있다.

우선 책대로 해볼것이다. - 로컬 환경

mySQL의 지원 도구인 HeidiSQL을 사용하여 SQL을 실행한다.

https://jhhwang4195.tistory.com/112

 

heidiSQL이란?

HeidiSQL : mysql, mssql, mariadb를 통합적으로 관리할 수 있는 오픈소스 소프트웨어 HeidiSQL is a useful and reliable tool designed for web developers using the popular MySQL server, Microsoft SQL data..

jhhwang4195.tistory.com

heidiSQL을 쓰면 sql들을 통합적으로 관리할 수 있다고한다. 터미널에서 관리 안해도 된다고한다.

보기쉽도록 gui가 잘 되나보다

헤이디(?)를 열어서 sql에 접속하자

wordpress 데이터베이스에서 wp_users 테이블에 테스트용 사용자 계정 만들기

우선 쿼리문을 입력해보자. 입력하고 F9 누르면 실행된다

wp_users에서 모든 데이터 가져오기

결과를 보면 python 유저를 가져온다.

james 계정을 추가해보자

INSERT INTO wp_users(id, user_login, user_pass, user_nicename, user_email, user_registered, user_status, display_name) VALUES(3, 'james', '1234', 'james', 'ccc@ccc.com', NOW(), 0, 'james');

wp_users의 행에 특성들을 넣고 값은 나중에 똑같은 순서로 넣는다.

추가된 것을 볼 수 있다.

 

문자중에서는 작은 따옴표 ' 와 - 하이픈 기호(주석)이 취약점이다.

' 취약점 

테스트를 위해 php.ini의 magic_quotes_gpc 옵션을 비활성화한다.

magic_quotes_gpc = Off

책에서 설명을 보면 변수값에 ; " \ NULL등이 있으면 자동으로 \역슬래시를 붙인다고한다.

 

id와 패스워드를 받아 sql을 실행하여 검증할 PHP 페이지 만들기

config.php: DB와 연결, wp_users 테이블 불러오기

login.php: ID, PW 입력받아 check.php로 넘기기

check.php: 넘겨받은 ID,PW를 검증하여 사용자의 로그인 ID, PW, 이메일 반환

 

계속 흰 페이지가 떠서 DB와 연결이 안되었다. 이럴때는 아파치와 mySQL의 작동을 멈추라고했다.

어떻게 그것들이 작동 중인지 확인할까?

검색 - 컴퓨터관리- 서비스에서 APM_Apache와 APM_mySQL을 작동 중지 하면 된다.

그러면 localhost 쳐도 아무것도 안나온다

다시 켜서 sql injection을 해보면

 

값이 뜬다.

주석처리
로그인, 비번, 이메일 정보를 가져오는데, 로그인은 ~~, 비번은 ~~인 사람!

정상적으로 하면 그냥 되었을텐데 ' OR '1'='1로 하니까 그 뒤가 참이되어서 결과가 다 만족된다.

 

sql을 배우면 좋을것같다.

 

주석은 #도 가능하다. --은 뒤에 공백을 꼭 하나 써야한다.(안그러면 안먹힌다.)

--뒤에 공백을 안쓰면,

--은 주석 역할을 못한다. 공백 쓰기 !!!

 

실제 웹 해킹은 쿼리문으로만 수행할 수 없으므로 sqlmap인 sql 인젝션 자동화 도구를 쓴다.

 

728x90