본문 바로가기

전체 글

(167)
Pico ctf 2014 rop1 바이너리의 소스 코드는 이렇고 환경에서는 ASLR이 걸렸있다.ROP를 이용해서 풀 수 있지만 다른방법으로 풀 것이다. 우선 strcpy() 함수는 char * strcpy(char * dest, const char * src); 이렇게 구성되어 있는데 strcpy() 함수의 리턴 값은 문자열 dest에 대한 포인터이다. 그럼 이 함수를 이용해 문제를 풀어보자 (NX가 걸려있지 않기 때문에 쉘코드가 가능하다. ) 버퍼가 64이기 때문에 72개를 넣어주면strcpy() 때문에 EAX에 버퍼 값을 가리키는 포인터 주소가 들어간다. EIP도 90909090으로 되어있다. 현재 EAX레지스터 값을 실행할 수 있으면 쉘코드를 실행할 수 있다는 소리다. 근데 ASLR이 걸려있는데 어떻게 실행할까 call %eax라는..
ropasaurusrex 우선 함수하나를 호출하고 다음 WIN을 출력하게 된다. buf가 0x88인데 0x100까지 입력받을 수 있어서 취약점이 생긴다. 135개까지는 괜찮은데 136개부터 세크먼테이션 폴트가 뜬다. NX가 적용되어 있기 때문에 쉘코드를 이용해서 푸는건 내가 못한다. ROP 기법을 사용해 문제를 풀어본건데 환경 설정 부터해보자1234567891011service rop{ flags = REUSE socket_type = stream wait = no user = root server = /home/tory/Desktop/rop disable = no} echo "rop 1234/tcp" >> /etc/servicescsxinetd 데몬을 사용해서 돌리는데 이렇게 설정하고 nc로 접속해보자. 잘 구동되는 것을 볼 ..
NC 서버 만들기 보호되어 있는 글입니다.
NEWSECU CTF Write-up 내용이 너무 많아서 문서로 작성했다.
holyshield ppc 우선 이문제는 PowerPc로 되어있기 때문에 명령어를 모르는 나는 동적디버깅이 시급했다 대회 때 환경 구축을 못해서 못풀었었는데 이제야 풀 수 있게 되었다 이게다 갓희근형 덕분이다 우선 실행하면 이렇게 나오는데 입력을 받고 틀렸다고 출력해준다 우선 0x1B와 비교를 하는데 문자열 길이가 27자리이다 27자리를 입력해주고 여기서 qqqqqq함수를 분석하면 될거같다 이부분은 그냥 볼게 없는데 내가 입력한 값을 다른 위치에 옴기는 부분이다 이부분이 중요한 부분인데우선 내가 입력한 값중에 첫 번째 글자에 0x58D를 곱한다그리고 0~26까지 반복되니 반복에다가 +5를 해준다 다른 테이블 값에서 숫자를 하나씩 가져오는데 처음에는 3을 가져오고그걸 위에 5더한것과 또 더한다이렇게 더한것과 처음 0x58D를 곱한것..
PowerPC 환경 구축 보호되어 있는 글입니다.
holyshield BrokenPiano holyshield BrokenPiano이문제는 대회 때 아쉽게 못풀었던거같다 피아노 모양에 C#으로 된 바이너리이다 그리고 사진 처럼 버튼마다 클릭시 값을 가지게 되는데값을 다 누른 후 버튼 17을 누르면 된다 우선 버튼 17을 보면 this.code가 null과 같다면 return을 한다 그렇기 때문에 아무버튼이나 한번 눌러주고 버튼 17을 눌러준다버튼 17은 오른쪽 맨 끝 검은 건반이다 지금은 접속이 안되는데 저 위에 사이트에서 base64로 인코딩된 값이 나온다임시로 base64로 인코딩해서 값을 서버에 넣고 위에 부분에 아이피와 포트를 변경해서 풀도록 하겠다이런식으로 기존 바이너리를 인코딩해서 서버에 넣었다 엄청긴데 저걸 풀어서 a.exe로 만든다 그리고 a.exe가 있다면 해당 소스처럼 내가 ..
holyshield sound holyshield sound 앱을 실행하면 이렇게 나온다우선 아이디와 패스워드를 구해야하는데 로그인 실패 부분이있다아이디를 obj 변수에 저장하고패스워드를 obj2에 저장한다그리고 밑에 보면 i==length가 같아야하는데 결론은 아이디와 패스워드가 같아야한다obj를 이용해 b.a에 한글자씩 보게되는데 이렇게 나온다그래서 아이디를 한글자 입력하고 패스워드를 알아내야하는데b부분을 조금만 보면알 수 있다i2 = 33이다내가 입력한 문자를 carr2에서 찾고i가 증가한만큼 carr에서 찾는다그리고 더하는데하지만 리턴값에서 조금 변동될 수 있다고로 이렇게 4개를 찾았는데 이런식으로 패스워드는 엄청 많다아무거나 입력하고 로그인성공을하게 되면이런 판이 뜨게 되는데 소리를 아무리 질러도 90이 안넘어간다그래서 처음..