Challenge 38 시작!!
Log Injection 이라고 나와있다.
일단 admin 이라고 입력해보았다.
admin 이 아니라고 출력된다.
소스코드를 보자!!
주석으로 admin.php 가 있다는 것을 알려주고 있다. 접근해보자!
admin 을 로그로 남기라고 한다.
일단 다시 입력창으로 가서 여러 값들을 입력해보았다.
입력값들이 외부 ip :[입력값] 의 형식으로 log 로 남고 있었다.
admin 단독으로 입력하는 것은 필터링 되어 있었다.
때문에 admin 과 다른 값들을 조합하여 log 를 남기면 될 것 같다.
burf suite 를 이용하여 아래와 같이 줄바꿈이 허용되는지 확인해보았다.
줄바꿈이 가능하였다.
그럼 log 가 남는 것처럼 외부ip:[입력값] 과 같은 형식으로 입력해보자!!
아무 결과도 없다!
admin.php 에 들어가보니 log 가 초기화 되어있다.
새로고침 해보니 문제가 풀려있다!!
성공!!
이번 문제에서 사용된 방법은 CRLF Injection 이다.
CRLF는 Carrage Return(CR, ASCII 13, \r) Line Feed(LF, ASCII 10, \n) 을 나타낸다.
그리고 enter 키를 눌렀을 때 이 CRLF 가 동작하게 된다.
이번 문제는 Log Injection 이었다.
String id = request.getParameter("id");
if (로그인 성공 시)
else
log.write(외부ip + ":" + id);
위와 같이 로그를 남기고 있다고 할 때, id 부분에 CRLF 를 통해 id 파라미터 값을 조작하여 log 를 남길 수 있었다.
'WarGame > webhacking.kr' 카테고리의 다른 글
Challenge 40 (0) | 2020.03.14 |
---|---|
Challenge 39 (0) | 2020.03.11 |
Challenge 37 (0) | 2020.03.07 |
Challenge 36 (0) | 2020.03.06 |
Challenge 35 (0) | 2020.03.06 |