Software Engineering Blog

컴퓨터공학부 3학년 재학 중인 학생입니다. 백엔드를 주로 공부하며 금융 분야에 관심이 많습니다.

정보보안/SuNiNaTas

써니나타스 1번 문제 풀이

준형 교수 2021. 1. 10. 22:31

안녕하세요.

정보 보안 쪽에 관심이 많은 학생입니다.

저처럼 해킹에 관심은 많지만 이제 시작하는 단계인 분들이 봤으면 좋을만한 글을 적어보도록 할게요.

막연하게 해킹 공부를 시도하고 보는 거라 확실하게 이해한 문제만 제가 설명드리겠습니다.

오늘은 1번 문제입니다.

먼저 문제를 보도록 하죠.

흠..

영어 그대로 해석해봅시다.

if not str ="" <-- 문자열이 공백이 아니라면

result 값에서

a -> add, i -> in으로 바꿔준다는 소리 같네요.

그리고 여기서

mid 함수는 아마 Mid(result, 2, 2) -> result 변수의 x 번째 문자부터 y 개 추출해낸다는 소리 같네요.

(정확한 문법은 모르지만 감각이 중요합니다. 아니면 구글링을 하는 것도 하나의 방법이죠)

그러므로 result1 값에는 result의 2번째 문자부터 2개

result2 값에는 result의 4번째 문자부터 6개를 추출한다는 소리고

마지막으로 result에는 다시 result1과 result2를 붙인 값을 대입한다는 소리 같네요.

그러면 한번 풀어봅시다.

이런 문제는 역순으로 푸는 게 좋아 보이죠?

마지막에 if result = admin then password =???

result가 admin이라면 비밀번호를 알려준다는 소리!?

그러면

result가 admin이 나오도록 해봅시다.

거꾸로 가면서 mid를 추출하기 전 result를 xxxxxxxxxxxxx라고 가정해봅시다.

result1과 result2를 더해서 admin이 나와야 되고 각각 2번째 문자부터 2칸, 4번째 문자부터 6칸이니 ad 와 min...인데 min은 3칸이죠 그러면 6칸을 가져오려고 해도 3칸밖에 못 가져왔다는 소리입니다. 즉 4번째 문자부터 3개만 더 추출 가능한 총 문자열이 6칸이라는 소리죠.

그러면 result가 xadmin (x는 아직 안 구함) 이 상태죠?

이제 위에 replace 부분을 봅시다. a를 aad로 바꾼다.. aad로 바꾸는데 aad가 나오려면 맨 앞자리도 a라는 소리군요.

즉, result는 aadmin 일 테고 그러면 최종으로 add->a로 in->i로 바꿔주면? 시작은 ami네요

답을 한번 다시 체크해보면 ami에서 a->aad, i->in

aadmin

2번 문자부터 2개 4번 문자부터 6개 즉 ad와 min을 더하면

원하는 결론 admin이 나오네요!

써니나타스 답 입력칸에 ami를 적으면?

Congratulation!

풀었다고 나오네요.

최대한 깔끔하게 적어보겠다고 적어봤는데 저만 알아듣게 적은 건지 모르겠네요..

도움이 되셨다면 좋겠습니다.