본문 바로가기

validator-revenge (해결) 본문

Notepad

validator-revenge (해결)

Seongjun_You 2022. 1. 14. 20:35

https://dreamhack.io/wargame/challenges/101/

 

validator-revenge

Description 1회 CTF에서의 프로그램이 너무나 취약한 것을 인지한 개발자가 몇 가지를 더 추가한 것 같습니다. 취약한 인증 프로그램을 익스플로잇해 flag를 획득하세요! Reference https://dreamhack.io/lectur

dreamhack.io

며칠째 삽질 중이다.

 

 

처음 조건문들을 모두 통과하고

ROP를 이용하여 풀려했으나

relro가 걸려있어 got overwrite는 불가능했다.

출력 함수도 없다.

stdout을 변조해서 leak 하려 했으나

인자를 주는 게 너무 어려웠다.

사람들은 stack pivoting을 이용해서 해결했다고 하나

어떻게 rsi에 stdout주소를 넣는지 이해가 안 갔다.

 

많은 시도 끝에 rsi에 stdout의 주소를 넣고 read로 변조를 하였다.

 

fbad1800으로 바꾸고 널값을 25개 넣어서 변조시켰다.

그리고 stdout을 사용하는 fflush를 호출해보았지만...

 

SIGSEGV가 일어난다. 아직도 이유를 찾지 못하겠다.

레지스터 값이 꼬여서 그런 것 같은데 아직 해결을 못했다.

 

stdout값도 너무 더러운 과정으로 바꿔서 

스택이 많이 꼬인 것 같다.

 

상의할 사람도 없어서 참 답답하다.

 

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

드디어 해결했다.

0x601018에 pop_rsi를 넣는 방법을 너무 늦게 깨달았다.

생각을 더 넓게 봐야겠다.

 

풀이를 보니 푸는 방법이 다양했다.

SROP를 활용한 1/16 브루트 포싱이나,

1/4096 브루트 포싱 등

오랜 시간 삽질을 했지만

많은 꿀팁을 공부할 수 있었다.

 

'Notepad' 카테고리의 다른 글

fork 디버깅, PIE 디버깅  (0) 2022.03.06
LoadLibrary  (0) 2022.02.16
tiny backdoor (삽질)  (0) 2022.01.29
cyberpeace 3.0 ITCTF - crySYS  (0) 2022.01.11
iofile_vtable_check (해결)  (0) 2021.11.23
Comments