본문 바로가기

Let's Study/Hacker's CTF

[2015 Plaid CTF] pwnable_EBP 160p 대학원 준비하느라 많이 바쁜 관계로 가볍게 한문제 풀고 포스팅합니다. 2015. 4. 18일 오전 3시인가 0시부터 시작했던 ppp팀 주관의 2015 plaid ctf , pwnable 문제 ebp 입니다. 전형적인 포맷스트링 버그 문제입니다. 바이너리는 매우 단순합니다. 제가 문제풀면서 적당히 정리한 text 라 지금 response와 buf 배열이 함수 내에 존재하는데원래 바이너리에 buf[1024]와 response[1024]는 전역변수로 선언되어 있습니다. 이 바이너리를 간단하게 요약하면 #include char buf[1024];char response[1024]; void main(){while(1){fgets(buf, sizeof(buf), stdin);echo();}} void echo().. 더보기
[2015 Nullcon] exploitable 300 이 문제 이 외에도 여러 문제가 있지만 이 대회는 왠지모르게 씽크빅 대결인 듯 하여 그나마(?) 기술적인 exploitable 문제 하나 포스팅합니다. 바이너리를 실행해보면 Command% 가 나옵니다. 사용법은 set [name] [data] get [name] set a 1234get a를 하면 a 에 1234가 저장되서 get a 로 1234가 출력됩니다. 이것만으로는 아무것도 모르므로 gdb로 분석합니다. main 함수를 보면 input_loop 함수로 넘어가고 여기로 넘어가면 "Command%" 출력 후 fgets로 문자열을 받고 process_command 함수로 넘어갑니다. 여기는 strstr 함수로 비교를 해서 help입력 시, help 함수로, exit 입력시 exit.strcmp로 se.. 더보기
[2014 Hack.lu] guess the flag write-up 몇달 전에 있었던 hack.lu ctf 문제 중 exploit 문제 Guess the Flag 입니다. 그 날 이 문제 풀면서 멘붕이 왔었는데 바쁜 일 다 끝나고 학교동아리 홈페이지에 이 문제를 아주 약간 바꿔서 올린걸 풀어보았습니다. 문제의 원래 코드는 이렇게 생겼습니다. 전 동아리 서버에 올린 문제로 풀이를 하겠습니다. 문제의 서버환경은 64bit이지만 동아리 서버는 32bit입니다. 문제풀이 하실 때에 크게 차이 없을거에요. 이 문제의 핵심적인 부분을 설명드리자면, * guess> 뒤에 100글자를 입력해야 하고 위의 is_flag_correct() 함수에서 char value1 = bin_by_hex[flag_hex[i * 2 ]];char value2 = bin_by_hex[flag_hex[i .. 더보기
[2014 화이트햇 콘테스트] 한글치환암호 이번에 ctf풀면서 스터디하자! 하고 만들어진 Mr.Mr 팀입니다.어쩌다보니 예선 일반부 9위까지 올라가게 됬네요.문제풀이 시작하겠습니다. 한글치환암호 문제입니다.노가다성이 좀 짙어서 디테일한 설명은 힘들고 간단하게 설명드리겠습니다. 우리가 알고있는 한글과는 다르게 ㄱ 을 ㄴ으로 치환해서 바꾸고 ㅏ 를 ㅢ 로 바꿀수도 있는게 한글치환암호인데 일단 여기서 가장 많이 쓰인 건 컃콌 입니다.보통 소설이나 뭐 어디든 이 두 글자를 보면 '나는' 이 생각나는데이걸가지고 치환을 시작하면 나 의 ㄴ 은 ㅋ으로, ㅏ 는 ㅑㅊ 로 치환된 것을 알 수 있고는의 ㅡ 는 ㅖ, 밑의 ㄴ 은 ㅆ 으로 치환된 것을 알 수 있습니다. 그리고 먗. 이렇게 쓰인건 아까 나 에서 ㅑㅊ가 ㅏ로 치환된 것을 알 수 있었는데이걸 유추해보면 다.. 더보기
[2014 화이트햇 콘테스트]Cold War 이번에 ctf풀면서 스터디하자! 하고 만들어진 Mr.Mr 팀입니다.어쩌다보니 예선 일반부 9위까지 올라가게 됬네요.문제풀이 시작하겠습니다. 주어진 건 이 소스코드와(아. if __name__ = "__main__":a = g(8) 에서 8이 아니라 n으로 주어졌습니다. 죄송합니다.) fee304acd551a17fbd3b7f23c1e51fba9c55a93de43d797187fc1eaa9055ba74fc3e2c62d4ac10fe864fbb79f83c7822 f0e414aa9d5ebc3df2202c6dc8f85197d54caf6ebd267971c9e51fb9d54fa678bd226d64c2ff51aa9a5faf64bd332c60c6e014b0915abc3df4212c64c8e51fb9d554b878ef732d.. 더보기