HackCTF(78)
-
HACKCTF - Poet
해당 문제를 실행해보면 이런식으로 무언가 1,000,000점수를 획득해야한다네요. ida로 코드를 확인해보면 rete_poem 함수를 보면 poem에 입력받았던 문자중에 해당 단어가 있을경우 100점을 주는 제도인데, 예를들어 CTF를 1000000번 입력하게되면 풀리겠지만, poem버퍼가 400이라 넘어 가서 해당 방식으로 풀면 안되겠다고 생각했습니다. 우리의 궁극적은 목표가 점수를 1,000,000으로 만드는것이기에 해당 버퍼를 1,000,000으로 덮는 방법으로 진행해보겠습니다. author의 이 변수가 이 위치에 있고. rate poem 의 점수 변수가 이 위치에 있으니 이 차를 구해서 dummy를 채워주고, 1,000,000을 넣어주면 됩니다. 이를 코드를 작성하면 다음과 같습니다. 1 2 3 ..
2020.09.07 -
HACKCTF - Let'S get it ! Boo*4
이 문제는 오래동안 잡다가 최근에 번뜩해서 풀이한 문제인데. 다운로드하면 해당 파일이 하나 보이는데 ihex로 내부를 보아도 의심이 될만한 사항들이 별로 안보이고, 그래서 스테가노 그래피일까 생각을 했다. 먼저 사진 자체의 GRB색깔을 바꿔서 flag가 사진 표면에 보이는 방법인거 같아서 계속 시도했지만 아니였다. 결론은 다음과 같다. zsteg를 활용해서 해당명령어를 치면 FLAG로 보이는 부분이 보이고, 이를 더 자세히 보면 HackCTF{0U].B10C0xCDA90xBD840xD7880d.8AC000H.8CE580xC7880xB2940xC8740xC7AC0v.8C57C}해당 부분을보면 내부가 뭔가 쓰여저있는거같은데 이상한 문자와 0xABCD가 같이 섞여있다. 4칸씩 끊어서보면 이러한 형식이 나오는데..
2020.09.07 -
HackCTF - Unexploitable #2
문제를 ida로 까보면 아래와 같습니다. 출력하나 해주고, 입력하나 받고 끝나는데 사용할 수 있는 함수가 이거밖에 없습니다. gift가 수상해서 봤더니 shell을 띄워주는게 아닌 system함수만 보내주는군요 마침 카나리도 안보이니 ret만 잘 oneshot으로 덮어주면 될 것 같은데 oneshot을 쓰려면 libcbase를 알아야하니 여기서 멘붕에 조금 빠졌습니다. rop체인을 구성해서 bss에 /bin/sh 박아서 system인자로 넣어줄까도 생각하다가 pr가젯사용해서 system인자에 넣어주면 주소 출력한다는 이야기를 들은기억이 있어서 구성해봤는데 실제도 되더라고요... payload는 아래와 같습니다. 이게 인텐드인지 bss에 넣어서 하는게 인텐드인지 출제자한테 물어봐야겠군요. 1 2 3 4 5..
2020.09.06 -
HACKCTF - Handray
리버싱 handray 문제이다. 리버싱이 평소 약점이라 더 많이 공부해야하는데 정말 어렵다.. 이번에도 시간이 좀 걸려서 풀었다. main 함수를 보면 다음과 같은데 역시 handray라서 코드를 보려고하면 다음과 같이 많은 코드가 사라진 것 처럼 보인다. main 화면을 보면 가장 왼쪽에 있는 "flag is %s"쪽으로 보내야 flag가 출력될 것 같지만 실제로 실행해보면 이렇게 flag를 뛰어넘었다고하면서 가운데 함수로 빠지게 된다. 디스어셈블 해서 어셈블리코드를 보면 +19번째코드에서 분기로 빠지게 된다. 이부분을 조건에 맞게 해주면 flag를 출력해 줄 수 있을 것이다. 따라서 +15번째에 bp를 걸어서 실행시킨다음 [rbp-0x4] 를 0으로 바꿔주면 조건을 만족 시킬 수 있을 것이다. bp설..
2020.09.03 -
[보호]HACKCTF - Cookie
보호되어 있는 글입니다.
2020.09.01 -
HACKCTF - Yes or no
18.04기준으로 테스트 되었다는데 나는 16.04를 써서 설마 안되겠어 하는 마음으로 일단 했다 ㅎ 실행시켜보면 위와 같이 숫자 넣으라고하고 아니라고한다. 이부분에 대한 코드를 확인해보면 34번줄에서 어떠한 조건에 충족되면 다시 gets를 한번 받는데 이부분에서취약점에 발생할 확률이 높아 보인다. 해당 부분에 들어가기 위해서 어떤 숫자를 입력해야할지 디버깅을 통해 확인해보겠다. main+249하고 main+266에서 puts, gets를 call하는데 두개를 동시에 call하는 부분이 이 프로그램에선 저부분 밖에 없으니 main+237에 bp를 걸고 값을 확인해보겠다. rax를 보면 0x96000이 들어있고 이를 똑같이 맞춰주면 조건문에 알맞게 처리되서 "that's cool~~"멘트를 확인 할 수 있..
2020.08.27