촉촉한초코칩

[Dreamhack] Broken Password 본문

Study/MISC

[Dreamhack] Broken Password

햄친구베이컨 2025. 1. 30. 02:08

 

분석

문제 파일은 elf 파일이 주어진다. 

gdb로 해당 파일을 열어보았다. 

strncmp에서 두 문자열을 비교하고 다르면 193으로 이동한다. 맞으면 아래 명령어를 실행하여 system을 통해 flag가 출력되는 것 같다. 

strncmp가 실행되기 전에 break를 걸어서 비교하는 문자열을 확인해야 할 것 같다. 

이 방법은 아닌 것 같다. (매번 값이 달라짐)

 

strncmp 취약점에 대해 검색해보았다. 

str1, str2가 있다고 가정했을 때

  • str1 < str2 → 음수
  • str1 == str2 0
  • str1 > str2   양수

이런 값이 나온다. 

그리고 strncmp가 나오기 전에 8을 edx에 넣는 것으로 보아, 글자수를 비교하는 값은 8개인 것 같다.

그리고 rsi에는 내가 입력한 값, rax에는 비밀번호가 들어있는 듯하다. 

 

배열이 들어가면 NULL과 0을 비교하게 되고, true를 반환한다고 해서 아무값도 입력하지 않았는데 FL가 나왔다. 

그 다음에는 공백을 입력했는데 {W 문자가 나왔다. 

이렇게 하나씩 해보앗다.. (이방법도 아닌것같다.. 우연히 나온듯ㅎ)

 

또 검색.. https://hxxxxng.tistory.com/52

우선 strncmp의 취약점은 \x00이 올 때까지만 비교하고, null이 오면 비교를 끝내는 것이다. 

일단 password는 매번 랜덤으로 생성되는데, 만약 password의 앞 글자가 \x00로 시작할 때 입력값으로 null을 준다면 비교를 끝내고 맞다고 판단한다고 한다,, 

그래서 코드를 짜서 맞을 때까지 돌리는 건데.. 코드는 참고한 위 링크에 있다. 

(대충 추측한 건 맞은 것 같고...왜여기까지 생각을 못했을까...?......)

참 어렵다.. 

 

+ 지피티한테 물어본 거

'Study > MISC' 카테고리의 다른 글

[Dreamhack] set-int  (0) 2025.01.14
[CodeEngn] Malware L06  (0) 2024.12.30
[Dreamhack] Just read flag  (0) 2024.11.13
[Dreamhack] 산타 할아버지도 힘들어요  (0) 2024.10.29
[Dreamhack] whatsdifferent  (1) 2024.10.02