본문 바로가기

웹해킹/webhacking.kr

webhacking.kr old 08번 문제풀이(Writeup). PHP getenv() 함수 설명

반응형

webhacking.kr old 08번 문제풀이(Writeup)

 

 

old 08번 문제풀이 1

 

문제를 들어가면 위와 같이 출력된다. 이번에도 admin 계정으로 로그인이 필요해 보이는 문제이다. 코드를 확인해보자.

 

 

old 08번 문제풀이 2

문제풀이의 핵심은 HTTP_USER_AGENT 값이 admin이 되어야 한다. 따라서 마지막 if문에 mysqli_query에서 user-agent값을 변경해서 admin으로 로그인하는 것이 중요하다.

 

 

이 문제도 지금까지 문제와 마찬가지로 SQL Injection으로 풀어야 하는 문제이다.


PHP getenv() 함수 설명

getenv()는 내장함수로, 인자의 값에 따라 해당되는 환경변수 값을 알려주는 함수이다.

 

getenv 사용방법

getenv("http_host") 홈페이지 주소값을 얻을 때
getenv("http_referer") 전 페이지 주소값을 가져올 때
getenv("request_method") 데이터 전송방식(method)확인할 때
getenv("remote_addr") 웹사이트에 접속한 컴퓨터의 ip 주소 출력
getenv("document_root") 서버 디렉토리 경로
getenv("temp") temp폴더 경로
getenv("http_user_agent") 웹 사이트를 접속한 컴퓨터의 웹브라우저 정보
getenv("sever_software") 웹서버의 소프트웨어
getenv("server_port") 사용중인 포트



 

 

 


먼저 이 문제는 HTTP-USER-AGENT를 변경이 필요한 문제이므로 먼저 Burp Suite를 켜서 진행했다.

 

old 08번 문제풀이 3

먼저 User-Agent 값을 바꿔서 아무 값이나 넘기니 query error가 출력된다. query error 는 insert할 때 쿼리가 잘못되면 나오는 문장이다.

 

 

insert into chall(agent, ip, id) 중에 우리가 바꿀 수 있는 것은 agent 부분이다. 따라서 뒤를 생략한다고 했을 때

 

insert into chall8('agent', 'ip', 'admin')#, ip, id)

위 문장의 형태로 SQL Injection이 진행되면 된다. 따라서 아래와 같다.

 

 

insert into chall8('hacker', '123', 'admin')#, ip, id)

eold 08번 문제풀이 4

위와 같이 SQL Injection 문을 만들어서 입력했다.

 

 

old 08번 문제풀이 5

query error 없이 성공했다. 이제 hacker로 접속해보자.

 

 

old 08번 문제풀이 7

hacker로 User-Agent를 변경해서 입력하니 admin으로 접속이 되었다.

728x90