본문 바로가기
2. Information Security/3. War Game

웹해킹 8번 (webhacking old 8)

by H232C 2019. 10. 20.

1. 공격 유형 : 파라메터 변조, SQL INJECTION

2. 취약점 환경 : Client Header값인 User_Agent 변조를 통해 SQL INJECTION 수행

3. Write Up

 

Challenge 8 첫화면
Challenge 8 View Source

ㅇ 코드 분석

- $agent에 trim(앞뒤 공백 제거)을 적용한 HTTP_USER_AGENT 값 선언
- $ip에 Client IP인 $_SERVER($REMOVE_ADDR) 값 선언
- $ip에 from 문자열 존재시 htmlspecialchars 함수가 적용된 $agent 문자열 표현
- $count_ck에 chall8 테이블 row수를 저장함 (count 함수 이용)
- $count_ck 값이 70 이상일 경우 chall8 테이블 삭제
- chall8 테이블에서 addslashes함수를 적용하여 $_SERVER['HTTP_USER_AGENT'] 호출 후 id값을 $ck에 저장
- $ck[0]이 admin일 경우 Solve(8) 수행
- $ck값이 없는 경우 "insert into chall8 (agent, ip, id) values('{$agent}','{$ip}','guest')") or die("query error"); 수행
 * 여기서 $agent는 상위의 getenv("HTTP_USER_AGNET")로 필터링되는 값이 from외 없음!
   $ip는 상위의 $_SERVER($REMOVE_ADDR) 값이나 해당 환경에서 무의미함
- 결국 insert문의 $agent 변수에 SQL INJECTION을 수행해야 함

ㅇ 공격 수행

1번에 공격 구문이 insert된 내용 확인

 

- 일반 구문 : '$agent', '{$ip}', 'guest');
- 공격 구문 : '$agent','10.10.10.10','admin') #', '{$ip}', 'guest');
- admin을 최초로 불러들이기 위해 70번 쿼리수행 후 초기화된 상태로 공격구문 삽입

Solve(8)

※ htmlspecialchar, htmlentities, addslashes, mysql_real_escape_string 설명 : https://h232ch.tistory.com/9

 

댓글