2017. 9. 28. 21:37ㆍWebHacking/[OverTheWire]Natas
1> 첫 페이지 화면
2> 페이지 소스코드
Natas16번 문제와 같은 PHP Injection 문제입니다. 16번문제에서는 쿼리문 조건의 참 거짓에 따라서 화면 출력이 달랐습니다
하지만 이번 문제에서는 화면에 출력되는 것이 아무것도 없습니다
이 때 사용할 수 있는 방법은 sleep() 함수와 연산자 and 의 특징을 이용하는 것입니다
[ sleep() 함수 ]
sleep(5) : 5초동안 로딩한 후 동작을 수행한다
[ and 연산자 ]
쿼리문 WHERE 조건식 1 and 조건식2
=> 조건식 1이 참인 경우 : 조건식2의 참, 거짓을 확인한다
=> 조건식 1이 거짓인 경우 : 조건식2의 참,거짓을 확인하지 않고 쿼리문을 종료한다
3> and & sleep 활용법
* 입력값 : username=natas16" and length(password)=32 and sleep(5) #
* 쿼리문
SELECT * FROM users WHERE username="natas16" and length(password)=32 and sleep(5) #"
유저명이 natas16이고 비밀번호의 길이가 32가 맞는지 확인한다. 길이가 32가 맞다면 sleep(5) 함수가 실행된다
* 입력값 : username=natas16" and ascii(substr(password,1,1))>0 and sleep(5) #
* 쿼리문
SELECT * FROM users WHERE username="natas16" and ascii(substr(password,1,1))>0 and sleep(5) #"
유저명이 natas16이고 비밀번호의 첫 글자의 아스키 10진수 값을 비교한 후 sleep(5) 함수가 실행된다
4> 파이썬 자동화 프로그램 작성
시간모듈( time ) 과 time모듈을 사용한다
import time => time.time() 메서드 : 1970년 1월 1일 이후부터 축적된 초를 float단위로 반환
[ 파이썬 소스코드 ]
Natas서버로부터 응답을 받을 때 sleep()함수가 실행되어 5초동안 대기상태가 된다
따라서 그 5초를 검사할 수 있도록 코드를 만든 뒤 sleep()함수를 실행시킨 문자열을 화면에 출력하여 비밀번호를 확인한다
[ 파이썬 실행 결과 ]
[ 와이어샤크 캡쳐화면 ]
Natas18 : xvKIqDjy4OPv7wCRgDlmj0pFsCsDjhdP
'WebHacking > [OverTheWire]Natas' 카테고리의 다른 글
[ Natas 20 -> Natas 21 Session Hijacking ] (0) | 2017.10.07 |
---|---|
[ Natas 18 -> Natas19 Session Hijacking ] (0) | 2017.09.28 |
[ Natas 16 -> Natas17 `Command`,"$(Command)" ] (0) | 2017.09.28 |
[ Natas 15 -> Natas 16 PHP Injection ( 비밀번호 유추 ) ] (0) | 2017.09.28 |
[ Natas 14 -> Natas 15 PHP Injection ( 쿼리 조건문 변조 ) ] (0) | 2017.09.28 |