본문 바로가기

CTF/SWING CTF 2023

[Web] Magic-1

Nop <?php
  include "./config.php";

  $key = $_GET['key'];
  if(md5($key) == "0") echo $flag;
  else echo "Nop";

  show_source(__FILE__);
?>

아래는 페이지 소스 보기.

Nop<code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;</span><span style="color: #007700">include&nbsp;</span><span style="color: #DD0000">"./config.php"</span><span style="color: #007700">;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000BB">$key&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'key'</span><span style="color: #007700">];<br />&nbsp;&nbsp;if(</span><span style="color: #0000BB">md5</span><span style="color: #007700">(</span><span style="color: #0000BB">$key</span><span style="color: #007700">)&nbsp;==&nbsp;</span><span style="color: #DD0000">"0"</span><span style="color: #007700">)&nbsp;echo&nbsp;</span><span style="color: #0000BB">$flag</span><span style="color: #007700">;<br />&nbsp;&nbsp;else&nbsp;echo&nbsp;</span><span style="color: #DD0000">"Nop"</span><span style="color: #007700">;<br /><br />&nbsp;&nbsp;</span><span style="color: #0000BB">show_source</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code>

 

type juggling (tistory.com)

 

Type juggling

: 느슨한 비교문자 사용으로 값이 일치하지 않더라도 TRUE 값을 리턴하는 취약점

 

 

[Concept] PHP Magic Hash 취약점 (tistory.com)

 

A==B 를 비교하면 자료형이 달라도 데이터만 일치하다면 TRUE 값을 반환하는 이 것을 PHP에서 Magic Hash라고 한다. 이를 방지하려면 A===B라고 표기하자.

 

여기서 지수 (exponential)을 이용한 트릭으로 인증을 우회할 수 있다.

'0e1234'==0 의 결과가 TRUE임을 이용하는 것이다.

 

 

$key $_GET['key'];
  if(
md5($key) == "0") echo $flag;
  else echo 
"Nop";

 

위에 따라 이 부분을 살펴보건대, md5 해시 결과가 0e로 시작하는 문자열이라면 TRUE를 받아 해당 검증을 우회할 수 있다.

 

 

위의 표에서 md5 magic number/string인 240610708을 0과 비교하면 TRUE가 나온다.

 

'CTF > SWING CTF 2023' 카테고리의 다른 글

[Web] Magic-3  (0) 2023.08.05
[Web] Magic-2  (0) 2023.08.05
[Misc] Nogada  (0) 2023.08.05
[Rev] Unsolvable  (0) 2023.08.05
[Rev] README  (0) 2023.08.05