[HackCTF] RTC
2021. 6. 1. 13:35
Wargame/HackCTF
문제 NX 가 걸려있다. 멘트를 출력하고, 입력을 받는다. buf 에 입력 시 bof 가 발생한다. nx, aslr 이 걸려있는 상황에서 rop 를 이용해 풀려고 했는데, 마땅한 가젯이 없다...! 이런 경우 RTC(return to csu) 기법으로 문제를 풀 수 있었다. __libc_csu_init() 함수로 리턴해 거기 있는 가젯들을 이용해 인자값을 레지스터에 저장하고 함수를 호출하여 주소를 leak 한 뒤, 다시 메인으로 돌아와서 bof 를 일으키면 된다. RTC 기법은 다음 블로그를 참고해 공부하였다. https://py0zz1.tistory.com/107 Return-to-Csu 기법 정리 포너블 문제를 풀 때, 64Bit 바이너리가 까다로운 이유가 바로 'Gadget' 때문이다. 64Bit의..
[HackCTF] World Best Encryption Tool
2021. 5. 29. 00:14
Wargame/HackCTF
문제 nx, canary 가 걸려있다. 버퍼 크기 이상으로 값을 넣으니 카나리 값 변조에 의해 프로그램이 종료된다. 1. src 에 입력을 받는다. (bof 발생) 2. src 배열 인덱스 0부터 49까지 xor 비트 연산을 한다. 3. dest에 src를 복사한다. (1바이트 만큼 조작 가능) 4. 계속할 지 안할지를 묻는다. 문제 해결 과정 src 에 bof 를 발생시켜 ret 를 변경하면 될 것이다. 그런데 카나리로 인해서 SFP 바로 전에 카나리 값이 들어가 있는 상황이다. -> 카나리 값을 빼와서 그걸 유지시키면서 익스플로잇 하면 될 것 같다. 카나리의 하위 1바이트가 null 값인 것을 이용해, strncpy 시 한 바이트 만큼을 조작하면 printf 를 통해 카나리 값까지 출력될 것이다. B..
[HackCTF] Unexploitable #2
2021. 5. 23. 20:31
Wargame/HackCTF
문제 NX 만이 걸려있다. unexploitable#1 처럼 입력을 받고 끝낸다. 다만 이번에는 함수이름 문자열 .dynstr 을 이용해서 sh 을 구하진 못할 것으로 보인다. fgets 입력 시 bof 가 발생한다. 이번엔 fflush 문자열이 존재하지 않기에 fgets를 통해 binsh을 bss영역에 넣거나 fwrite를 통해 주소를 leak 시키려고 했다. 그런데 마땅한 가젯을 쓸 수 없었다. 이때, system 함수를 통해 got 주소를 leak 할 수 있었다. system 함수 인자로 명령어가 아닌 것을 줬을 때 에러 메시지가 출력된다. 이를 이용해 system 함수 인자로 특정 libc 함수 주소를 주면, 에러 메시지가 출력되며 그 내용을 출력해줄 것이다. 이것을 leak 해서 libcBase..
[HackCTF] Unexploitable #1
2021. 5. 23. 18:56
Wargame/HackCTF
문제 NX 만이 걸려있다. 기본적인 RTL 문제인 것 같고, 실행을 하면 입력을 받고 끝낸다. 입력을 받을 때 bof 가 발생한다 -> ret 변경 가능 필요한 것들을 구해보자. system@plt system 함수의 plt 가 존재한다. "sh" 주소 binsh을 구해서 bss 영역에 넣자고 하니 상당히 귀찮아서, 위의 fflush 문자열을 구했다. "sh" 부분을 system 함수의 인자로 넘기면 될 것 같다. 알파벳 당 한바이트씩이니 sh 시작 주소는 4003BF 이다. 가젯 익스플로잇 system@plt 주소를 알고 있었고, "sh" 도 문자열을 통해 구할 수 있었기에 기본적인 RTL로 풀 수 있는 문제였다!
[Webhacking.kr] 33번
2021. 5. 18. 15:03
Wargame/Webhacking.kr
PHP 문제 33-1 Get 방식으로 'get' 파라미터 값으로 "hehe" 를 전달해주면 된다. 33-2 POST 방식으로 'post' 값을 "hehe"로, 'post2' 값을 "hehe2"로 전달해주면 된다. 33-3 GET 방식으로 'myip' 파라미터 값으로 자신의 ip 주소를 전달해주면 된다. 33-4 GET 방식으로 전달한 'password'의 파라미터 값과 현재 시간을 md5 해싱한 값을 비교한다. 시간을 넉넉히 잡아서 md5 해싱해서 넣어준 다음 새로고침을 계속 눌러주었다. https://awebanalysis.com/ko/md5-generator-online/ MD5 온라인 생성기 이 무료 온라인 도구는 MD5 해시 생성기로, 신용 카드 번호, 토큰, 암호 및 기타 민감한 정보를 데이터베..
[Webhacking.kr] 32번
2021. 5. 18. 13:53
Wargame/Webhacking.kr
쿠키 문제 클릭을 하면 투표가 되고, 자신의 아이디가 추가가 된다. 투표를 한 후에 또 클릭을 하면 you already voted 라는 alert 와 함께 거부된다. 확인해보니 vote_check 라는 이름의 쿠기 값이 있었고 ok 값을 지운 뒤 투표를 해보니 투표가 되었다. 투표를 할 때마다 vote_check 값을 ok로 설정해주고 그에 따라 투표 여부가 결정되는 것 같다. vote_check 쿠기를 차단시킨 뒤, 클릭을 통해 자신의 점수를 100으로 만들어주면 되는 문제였다.
[Webhacking.kr] 28번
2021. 5. 18. 01:14
Wargame/Webhacking.kr
파일 업로드 취약점 문제 ./upload/O7XO91oPbea4/flag.php 파일을 실행이 아닌 읽어들이라고 한다. -> 이 문제는 php 파일 형태의 웹셀을 업로드 하는 것이 아니라 .htaccess 를 이용한 php 실행 금지 를 통해 풀 수 있다. htaccess는 "hypertext access"의 약자이다. 아파치 같은 웹 서버에서 브라우저 같은 클라이언트에서 접근할 때 어떤 식으로 서비스를 제공할 지 결정하는 파일이다. 파일 업로드 디렉토리에 .htaccess 파일을 만들고 해당 파일에서 php 파일을 실행하지 않게 설정하면, 텍스트 파일로 인식하게 하여 소스코드를 텍스트 형태로 볼 수 있다. 참고 https://rootrator.tistory.com/119 https://developme..