2019. 12. 5. 23:39ㆍ보안/webhacking.kr
admin.php에 꼭 들어가보라고 하신다. |
올바른 비밀번호를 찾아서 입력해야한다. (여러가지 값들을 넣어봤지만 오류 메세지가 저것뿐이다.>>여긴 공격포인트 아님) |
처음으로 돌아와서 소스코드를 보니 주석처리한 날짜가 의심스럽다. 1575006977이란 값이 아마 UNIX시간 값인것 같다.->FROM_UNIXTIME()함수를 쓰는 것으로 추정 time값을 바꾸면 주석부분도 달라질테니 이것저것 넣어보자. |
타임값 변조 시도
쿠키값 | 결과 |
0 | |
1 | |
2 | 2070-01-01 09:00:02 |
59 | 2070-01-01 09:00:59 |
61 | 2070-01-01 09:01:01 |
true | 2070-01-01 09:00:01 |
false | 2070-01-01 09:00:00 |
1=1 | 2070-01-01 09:00:01 |
20-2=17 | 2070-01-01 09:00:00 |
숫자->유닉스시간
참->2070-01-01 09:00:01
거짓->2070-01-01 09:00:00
쿼리결과의 참 거짓>>>Blind SQL Injection |
(오류메세지 반환은 Error-Based SQL Injection) Blind~는 Error~에 비해 시도를 많이 해봐야해서 자동화 툴을 쓰는게 좋다. 나는 실습해보려하는 거니까 직접 해봐야지.
|
순서 1) 참/거짓 반응 확인->위에서 얻었다. 2) 테이블 정보 획득 3) 특정 테이블의 컬럼 정보 획득(비밀번회 컬럼) 4) 테이블명 + 컬럼명으로 데이터 탈취(여기서는 비밀번호 탈취)
|
2) 테이블 정보획득(비밀번호가 있는 테이블 이름) |
을 하려면 information_schema.tables 의 table_name 칼럼을 blind injection하면 된다. 그리고 그 전에 내가 몇개의 테이블 이름을 노가다로 알아내야하는지 견적을 내기 위해 테이블의 수를 알아보자. -count()함수 사용->row의 수를 알 수 있다->information_schema.tables에서 row는 해당 DB의 테이블 수가 된다. -table_type이라는 칼럼에서 base table이란 값을 가지면 사용자가 생성한 테이블이란 의미이다. information_schema.tables에서 사용자가 생성한 테이블의 수가 2개라면 true, 아니라면 false. ==>후보군으로 2개의 테이블이 있다. |
각 테이블의 이름의 길이 획득하기 ~.tables에서 사용자가 생성한 테이블 중 첫 번째 레코드의 table_name 칼럼의 길이가 13개라면~==>13자 ~.tables에서 사용자가 생성한 테이블 중 두 번째 레코드의 table_name 칼럼의 길이가 3개라면~==>3자 |
a | |
d | |
... | min_area_pw |
l | |
o | |
... | g |
admin_area_pw 테이블의 칼럼을 알아보면 될 것같다.
3) 특정 테이블의 컬럼 정보 획득(비밀번회 컬럼) |
2)와 같이 admin_area_pw테이블의 칼럼의 갯수를 알아보고->각 칼럼의 이름 길이를 알아본다. >>칼럼갯수 1개 >>칼럼이름 길이: 2 >>칼럼 이름: pw |
4) 테이블명 + 컬럼명으로 데이터 탈취(여기서는 비밀번호 탈취) |
. . . . 3=d 4=o 5=s 6=_ 7=t 8=o 9=_ 10=b 11=e 12=i 13=s 14=t 15=l 16=a 17=b |
'보안 > webhacking.kr' 카테고리의 다른 글
webhacking.kr old 5번 (0) | 2020.01.13 |
---|