본문 바로가기

Write Up/TRUST ctf 2020

[TRUST CTF] ezrc 출제자 write up

문제 전체 소스코드이다.

 

문제의 컨셉은 php정규식과 race condition으로 잡았다. (후에 너무 쉽게 풀리는 것 같아 magic hash를 추가했다.)

 

문제를 풀기 위해서는 로그인을 해야하는데

이 부분을 보면 magic hash로 if문을 통과해야 times변수에 매우 큰 수를 넣어 race condition을 할 수 있다.

 

240610708을 md5로 인코딩하면 0e462097431906509019562988736854가 나오는데

== 취약점으로 pw가 0이면 참이된다.

 

?key=dadadadadadadadadadadadadadaasdcocohehe

 

이렇게 key를 넘겨주면 php정규식 if문을 통과한다.

그럼 현재 chk를 출력해준다. 

 

그 후 크롬 시크릿 모드를 이용해서 탭을 하나 더 열어준다.

?key=dadadadadadadadadadadadadadaasdcocohehe&times=1000000

 

times값을 크게 넣어 시간이 오래 걸리게 한 후 원래 탭에서 새로고침을 하면 플래그가 출력된다.

 

TRUST{Hell0_th1s_my_f1r5t_cha1lenge!!!!}

 

----------------------------------------------------------------------------------------

전체 소스를 보면 chk를 $hehe라는 알 수 없는 문자열로 바꾸고 for문을 사용함으로써 sleep역할을 하게 한다.

for문을 지난 후 chk를 초기화 함으로 for문을 도는 동안에는 chk는 $hehe가 된다.