촉촉한초코칩
Dreamhack - php7cmp4re 본문
코드
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$input_1 = $_POST["input1"] ? $_POST["input1"] : "";
$input_2 = $_POST["input2"] ? $_POST["input2"] : "";
sleep(1);
if($input_1 != "" && $input_2 != ""){
if(strlen($input_1) < 4){
if($input_1 < "8" && $input_1 < "7.A" && $input_1 > "7.9"){
if(strlen($input_2) < 3 && strlen($input_2) > 1){
if($input_2 < 74 && $input_2 > "74"){
echo "</br></br></br><pre>FLAG\n";
echo $flag;
echo "</pre>";
} else echo "<br><br><br><h4>Good try.</h4>";
} else echo "<br><br><br><h4>Good try.</h4><br>";
} else echo "<br><br><br><h4>Try again.</h4><br>";
} else echo "<br><br><br><h4>Try again.</h4><br>";
} else{
echo '<br><br><br><h4>Fill the input box.</h4>';
}
}
input_1
- 4글자 이하
- 8과 7.A보다 작고 7.9보다 커야 한다.
→ 7.91으로 예측
input_2
- 3글자 보다 작거나, 1글자 보다 커야 함 → 2글자
- 숫자 74보다 작고 문자 74보다 커야 함
→ 73,72... 75, 76...
input_2의 값을 찾는 게 너무 어렵다....
참고 : https://blog.naver.com/dlrkdtks135790/223403452549
input_1
- 7.9 ~ 7.A 사이
- 7.9를 10진수로 변경 → 554657~554665 → 그 사이 숫자인 554658을 아스키 코드로 변경하면 7.:가 나온다.
input_2
- 숫자 74 초과, 문자 74 미만 → 10진수로 변경 → 74~5552 사이의 아스키코드로 변경하면 :;가 된다.
드림핵 내의 풀이까지 추가
php
- default_charset의 값을 따름
- default_charset의 기본값은 utf-8이다.
input_1
- 7.A ~ 7.9 사이의 숫자이므로 7.는 고정
- 세번째 자리는 utf-8, hex 값 기준 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40가 해당됨
- 이 값은 :, ;, <, =, >, ?, @가 된다.
input_2
- 나눗셈 기호인 % : 2바이트
- % 기호를 숫자로 변환하면 숫자가 없으므로 0이 됨 → 첫번째 기준 부합
- %의 hex 값 : (utf-8 기준) c3 b7
문자열 74의 hex 값 : (utf-8 기준) 37 34 → 두번째 기준 부합
* 나눗셈 기호인 %는 아스키 표에는 없으나 input_2에 넣으면 잘 동작한다고 한다.
'Study > Web Hacking' 카테고리의 다른 글
Dreamhack - error based sql injection (0) | 2024.08.15 |
---|---|
Dreamhack - simple_sqli_chatgpt (0) | 2024.08.14 |
Dreamhack - XSS Filtering Bypass (0) | 2024.08.07 |
Dreamhack - php-1 (0) | 2024.07.31 |
Dreamhack - simple-ssti (0) | 2024.07.31 |