Security
Brute Force / Replay Attack
Brute Force / Replay Attack
2017.06.28Brute Force최대 로그인 실패 횟수를 기록해 계정을 임시로 정지시키는 방법이 유용하다.로그인에 실패한 사용자가 몇 초 이내에 다시 로그인을 시도하면 무조건 실패로 처리하거나, 성공이든 실패든 몇 초 이후에 다시 시도하라는 메세지를 주는 방법(throttling)도 고려해볼 수 있으나 요즘 잘 쓰이지는 않는 것 같다.보통 패스워드가 틀렸을 때 바로 재입력하기 때문에 시간 제한이 있다면 불편할 듯. Replay Attack정상적인 사용자가 액세스 권한이나 특별한 권한을 얻기 위해 전송한 데이터를 공격자가 캡쳐해두었다가 재전송하는 공격이다. 최선의 방법은 캡쳐를 당하지 않는 것이지만, 그게 항상 가능하지는 않다.이를 막기 위해서는 다음과 같은 경우를 피해야 한다.접근이 제한된 리소스에 대한 엑세스를 유..
[Trend Micro CTF 2017] IoT/OSINT, MISC
[Trend Micro CTF 2017] IoT/OSINT, MISC
2017.06.27이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[Trend Micro CTF 2017] Reversing
[Trend Micro CTF 2017] Reversing
2017.06.27이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[Trend Micro CTF 2017] Forensic
[Trend Micro CTF 2017] Forensic
2017.06.27100 - DNSTunnelDNS query날릴 때 url 앞에 data를 붙여 전송하는 방식으로 조금 씩 데이터를 전송하는 듯.20byte인걸로 봐서 sha1 인 것 같다. decode해봐야... 안된다.마지막만 길이가 다른 것도 이상하고... 뭘까? 아 생각해보니 hash는 아닌 것 같은게 수신 측에서 데이터를 받아 해독해야하는데 hash를 쓸리가 없다.분명 encryption한걸거고, encryption한걸 잘라서 보냈거나, 조금 씩 encryption해서 보냈을 것 같은데... 후자?가 맞지 않을까? DES를 비롯해서 몇몇개 알고리즘에 Key를 gzpgs.trendmicro.co.jp로도 해보고 gzpgs로도 해봤는데 안된다. gzpgs는 ceasar cipher 해독하면 tmctf가 나와서 이것..
[Trend Micro CTF 2017] Analysis-defensive
[Trend Micro CTF 2017] Analysis-defensive
2017.06.27이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
Session & HTTP Session hijacking
Session & HTTP Session hijacking
2017.06.27Session세션 데이터는 세션 데이터 저장소에 보관된다.SID라는 고유 식별자로 세션 데이터 저장소에서 특정 레코드를 식별한다.세션 저장소 경로는 php.ini의 ``session.save_path``에 지정되며 ``php session_save_path()``로 얻거나 설정할 수 있다.이를 이용해 세션 저장소에 직접 접근해서 다른 세션 데이터를 얻어올 수 있다.```php$path = ini_get('session.save_path');$handle = dir($path); while ($filename = $handle->read()) { if (substr($filename, 0, 5) == 'sess_') { $data = file_get_contents("$path/$filename"); if..
Filtering / Escape
Filtering / Escape
2017.06.27입력 필터링입력 필터링 작업은 세 단계로 구분하는 것이 좋다.입력을 구분하는 단계입력을 필터링하는 단계필터링된 데이터와 오염된 데이터를 구별하는 단계 입력을 구분하는 단계세션 데이터 저장소는 서버에 저장되기는 하지만 이를 입력으로 간주하는 것이 안전하며 DB의 데이터도 마찬가지다.일반적으로 사용하는 외부 입력 출처를 정리하면 이 정도가 된다.`` $_GET```` $_POST```` $_REQUEST```` $_COOKIE```` $argv```` php://stdin```` php://input``file IOremote DBremote API 입력을 필터링하는 단계유효하지 않은 데이터는 그냥 버린다.규칙에 맞추기 위해 유효하지 않은 데이터를 수정해서 그대로 사용하면 안된다. 예를 들면 `` ../....
[Trend Micro CTF 2017] Analysis-offensive
[Trend Micro CTF 2017] Analysis-offensive
2017.06.23100점 짜리라고 꼭 쉬우리라는 법은 없다. 오히려 200점이 더 쉬운듯. 안풀리면 그냥 넘어가고 끝날 때 쯤 주어지는 힌트를 노려야 한다. 100Forensic_Encyption 까지는 얻었고 MZ string이 있길래 exe인가 싶어 확장자 변경하고 실행해봤더니 검은창 뜨다가 그냥 꺼진다. PEiD에 올려도 안나오고, Ollydbg에 올라가지도 않는 걸로 봐서 실행 파일은 아닌 것 같다.이대로 파일 자체를 decryption해야 하는걸까? 파일의 맨 끝에 file_3PK / file_1PK / file_2PK라는 stirng이 있는데 이걸로 보아하니 압축파일 형식인 것 같다. 파일 자체를 encryption 했으면 맨 끝에 저런 string이 없겠지. 그니까 자체를 decryption하는건 아니다....
FC3 evil_wizard - dark_stone : GOT overwrite / ROP ★ ( pop-pop-ret gadget )
FC3 evil_wizard - dark_stone : GOT overwrite / ROP ★ ( pop-pop-ret gadget )
2017.06.22FC3의 마지막 문제.GOT overwrite / RemoteBOF2017/05/08 - [System/Practice] - FC3 dark_eyes - hell_fire : remoteBOF, GOT overwrite, mprotect ★ 와 달리 메모리 초기화 때문에 실행되면서 무조건 fault가 발생해 client로 응답이 돌아오지 않는다.그러나 제대로 리턴해서 exploit하게 되면 exec*하면서 fault가 발생하지 않으니까 위와 같이 /bin/my-pass의 실행 결과를 소켓으로 받아볼 수 있을 듯. ```bash[evil_wizard@Fedora_1stFloor ~]$ python -c 'print "b"*268+"\x60\x65\x74\x00"' | nc localhost 8888dark..
FC3 hell_fire - evil_wizard
FC3 hell_fire - evil_wizard
2017.06.17GOT overwrite / local stdin buffer를 사용할 수 없어 문자열을 삽입할 수는 없지만local이니까 symlink로 메모리에 있는 값을 parameter로 사용할 수 있을 것 같다.파라미터를 삽입할 수 없어 메모리에 있는 값을 활용해야 한다는 점만 제외하면 이전 문제와 비슷하게 해결할 수 있을 듯.그런데, 그냥 삽입하면 연쇄적 ret으로 내려간다 해도 execl Addr을 넣을 때 \x00이 들어가 그 아래가 모두 \x00으로 초기화되기 때문에 메모리에 있던 파라미터도 \x00으로 초기화된다.시도해볼 수 있는 방법은 fake ebp, GOT overwrite 정도인 듯. fake ebpfake ebp도 가능할 것 같아서 일단 fake ebp를 시도했다.``c execl()``을 사..
[webhacking.kr] 3 : 문자열이 아니라 숫자로 처리하는 경우 ( n || 1 )
[webhacking.kr] 3 : 문자열이 아니라 숫자로 처리하는 경우 ( n || 1 )
2017.05.23이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[webhacking.kr] 5 : 난독화 decode / mysql의 공백처리
[webhacking.kr] 5 : 난독화 decode / mysql의 공백처리
2017.05.21이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.