출처: 웹해킹 입문(이상한)
SQL이란 관계형데이터베이스 관리 시스템에서 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어라고한다.
공격자는 SQL을 주입하여 원하는 데이터를 얻을 수 있다.
우선 책대로 해볼것이다. - 로컬 환경
mySQL의 지원 도구인 HeidiSQL을 사용하여 SQL을 실행한다.
https://jhhwang4195.tistory.com/112
heidiSQL을 쓰면 sql들을 통합적으로 관리할 수 있다고한다. 터미널에서 관리 안해도 된다고한다.
보기쉽도록 gui가 잘 되나보다
헤이디(?)를 열어서 sql에 접속하자
wordpress 데이터베이스에서 wp_users 테이블에 테스트용 사용자 계정 만들기
우선 쿼리문을 입력해보자. 입력하고 F9 누르면 실행된다
결과를 보면 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 인젝션 자동화 도구를 쓴다.
'보안공부 > 웹해킹입문-lv.0' 카테고리의 다른 글
0110 ~23p / Open Redirect Vulnerabilities and HTTP Parameter Pollution (0) | 2022.01.17 |
---|---|
사이트 취약점(계속 업데이트) (0) | 2021.11.08 |
칼리리눅스로 서버(다른 vm) 접속하기(intnet) (0) | 2021.10.27 |
virtualbox 공유폴더 설정 (0) | 2021.10.27 |
내부 네트워크 intnet 설정 (0) | 2021.10.26 |