1. 공격 유형 : 파라메터 변조, SQL INJECTION
2. 취약점 환경 : Client Header값인 User_Agent 변조를 통해 SQL INJECTION 수행
3. Write Up
ㅇ 코드 분석
- $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을 수행해야 함
ㅇ 공격 수행
- 일반 구문 : '$agent', '{$ip}', 'guest');
- 공격 구문 : '$agent','10.10.10.10','admin') #', '{$ip}', 'guest');
- admin을 최초로 불러들이기 위해 70번 쿼리수행 후 초기화된 상태로 공격구문 삽입
※ htmlspecialchar, htmlentities, addslashes, mysql_real_escape_string 설명 : https://h232ch.tistory.com/9
'2. Information Security > 3. War Game' 카테고리의 다른 글
웹해킹 10번 (webhacking.kr old 10) (0) | 2019.11.01 |
---|---|
웹해킹 9번 (webhacking.kr old 9) (0) | 2019.10.30 |
웹해킹 6번 (webhacking old 6) (0) | 2019.10.20 |
웹해킹 1번 (webhacking old 1) (0) | 2019.10.20 |
웹해킹 7번 (webhacking old 7) (0) | 2019.10.20 |
댓글