[HackCTF] :pwn: poet 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] :pwn: poet

봅시다 차례대로 get_poem, get_author, rate_poem을 지나서 0x6024E0의 값이 1000000이면 while문을 벗어나고, reward함수가 실행됩니다. reward함수는 바로 플래그를 읽어주네요. while문에서 나오는것만 집중하면 될 것 같습니다. 다음은 get_author부분인데, gets로 받아서 입력에 제한이 없네요. 보면 0x6024A0에 입력을 받는데, 값을 확인하는 부분이 0x6024E0이므로 그냥 overwrite해주면 될 것 같습니다. 굳굳

2021.03.18 게시됨

[HackCTF] :pwn: g++pwn 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] :pwn: g++pwn

보면 바로 알수있다시피 c++인걸 대충 어림짐작할 수 있습니다. vuln안을 봅시다 c++을 아이다로 처음 봤으면 조금 당황스러워할 수도 있는데, 놀라진 마시고 그냥 큰 줄기만 보시면 됩니다. 1. fgets로 s에 입력받음 2. replace(사용자지정)함수로 선서대로 v4, input, v7을 넣음 2.1. input은 1번에서 입력한 s의 값이 들어가있고, v7은 "I"라는 값이 들어가있음 3. v1의 값이 s로 복사됨 3.1. v1의 값은 input의 값임 결국 뭔가 replace함수로 입력값을 바꾼 뒤 s를 출력시키는 걸 확인할 수 있습니다. replace함수를 봅시다. std::string *__stdcall replace(std::string *a1, std::string *a2, std::..

2021.03.17 게시됨

[HackCTF] :web: 보물 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] :web: 보물

고고 저런 페이지가 나오고, 각 버튼을 누르면 해시값으로 추정되는 값들이 나옵니다. 근데 돌려도 어떤 값인지는 안알려주네용.. 그래서 뭔가 싶어서 page파라미터 가지고 장난치다가 이렇게 값이 엄청나게 많은걸 찾았네요 그래서 쓰레기값이 많이 들어있고, 저기 어딘가에 플래그 값이 숨겨져 있지 않을까? 라고 생각했고 그래서 그냥 bruteforcing으로 돌렸습니다 우왕 굳굳

2021.03.14 게시됨

[HackCTF] :web: /, Hidden, Button (All 50 pts) 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] :web: /, Hidden, Button (All 50 pts)

50포인트짜리 한번에 다 씁니당 1. / 첫 문제입니다. 들어가보면 로봇 사진이 떠있고, Hidden Flag라고 되어있는데 이건 너무 클리셰적인 문제죠? robots.txt에 로봇에게 문서 접근을 할 수 있는 권한을 주는 문서가 있습니다. 일단 확인해봅시다. 참고 : ko.wikipedia.org/wiki/%EB%A1%9C%EB%B4%87_%EB%B0%B0%EC%A0%9C_%ED%91%9C%EC%A4%80 로봇 배제 표준 위키백과, 우리 모두의 백과사전. 로봇 배제 표준(robots exclusion standard), 로봇 배제 프로토콜(robots exclusion protocol)은 웹 사이트에 로봇이 접근하는 것을 방지하기 위한 규약으로, 일반적으로 접근 ko.wikipedia.org 보면 /r..

2021.03.13 게시됨

[HackCTF] :rev: Handray 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] :rev: Handray

ㄲ 엥 바로 aFlag를 출력해주네? 하고 보니깐 이렇게 뜨고, 파일도 실행해보면 이렇게 뜨는걸로 봐서 밑에 있는 바이트들은 한글인거 같네요 근데 변수 영역을 보면 위에 format하고 the flag is %s라고 되어있는 부분을 볼 수 있습니다. 따라서 뭔가 뛰어넘은것으로 판단하였고, 어셈블리어 코드를 봤습니다. 빨간색 cmp 부분에서 rbp-0x4가 0이면 파란색 main+96부분의 printf가 수행되고, 만약 두 값이 다르면 main+113의 printf가 수행됩니다. 저희가 실행시킬때는 두번째 printf가 실행되니깐 첫 번째 printf를 봅시다. 각 인자인 0x6010e0과 0x400638을 확인해봤습니다. 네, 저희가 예상한대로 되는 것 같네요! 여기서는 두가지 방법으로 할 수 있을 것 ..

2021.03.12 게시됨

[HackCTF] :rev: Reversing Me 포스팅 썸네일 이미지

War Games/HackCTF

[HackCTF] :rev: Reversing Me

착하게도 코드를 다 줬네요 #include #include int main() { int i; char *serial = "H`cjCUFzhdy^stcbers^D1_x0t_jn1w^r2vdrre^3o9hndes1o9>}"; char enter[54]; printf("키를 입력하시게 : "); scanf("%s", enter); if (strlen(enter) == strlen(serial)) { for (i = 0; i < strlen(serial) && (enter[i] ^ (i % 2)) == serial[i]; i++); if (i - 1 == strlen(enter)) printf("정답일세!\n"); } else printf("그건 아닐세...\n"); exit(0); } for문안에 있는 일련..

2021.03.11 게시됨