반응형
입력한 값에 따라 배경의 색이 바뀌는 구조다.
소스를 확인해보자.
간단하게 분석해보자면
0. data[showpassword] == yes 면 flag 출력
1. savaData($data) 를 통해 $defaultdata 를 json_encode -> xor_encrypt -> base64_encode 후 쿠키설정
2. loadData($defaultdata) 를 통해 쿠키에 data가 있는지 확인한 후 data를 base64_decode -> xor_encrypt ->
json_decode 후 $tempdata에 저장
3. 정규식 확인 후 $mydata['showpassword'] 에 $tempdata['showpassword'] 를
$mydata['bgcolor'] 에 $tempdata['bgcolor'] 를 저장하고 $mydata 리턴
대략 이런구조이다. 처음에는 xor_encrypt 부분에 key 가 <censored> 로 설정되어있길래 왜 키값도 같이 주나했는데
알고보니 censored가 검열되어 삭제됐다는 뜻이었다. 이것때문에 삽질좀했다..
A xor B = C 일 때 B xor C = A, A xor C = B 이므로
평문 xor 암호문을 통해 키를 찾을 수 있다.
그리고 처음에 data[showpassword] == yes 면 flag를 출력한다고 했으므로 해당값을 yes로 한 평문과
키값을 xor 하여 얻은 값으로 쿠키설정을 하면 문제가 풀린다.
'Security' 카테고리의 다른 글
main() 호출과정 (0) | 2015.10.05 |
---|---|
New Error Based SQL Injection in MySQL >= 5.7.5 (1) | 2015.04.05 |
Limit 구문에서의 SQL Injection (2) | 2015.02.27 |
리눅스 보호기법 확인 (2) | 2015.02.26 |
Stripped 된 바이너리의 Symbol 정보찾는법 (0) | 2015.02.21 |