본문 바로가기

4-2. 2021-1 심화 스터디

(22)
[2021.05.22] 리버싱을 활용한 디버거 플러그인 개발6 Readmemory 함수 플러그인에서 제공해주는 함수, 현재 어태치된 프로세스의 메모리를 읽을 수 있게 해 준다. 대상 프로세스의 핸들을 지정하는 인자가 없기 때문에 그냥 사용하면 된다. 버퍼와 타겟 번지, 그리고 사이즈만을 전달하면 어태치된 프로세스를 그 버처가 읽어와 준다. 다음으로 그 버퍼와 그만큼의 사이즈를 Disasm() 함수에 첫 번째, 두 번째 인자로 넣고 읽을 메모리 번지는 세 번째로 넣는다. 그리고 t_disasm 구조체 변수를 넣어주면 구조체 에 값이 담겨온다. (추가활동) IsDebuggerPresent() 무력화 IsDebuggerPresent() 란? 안티디버깅 기법 중 가장 기초적인 기법 해당 프로세스가 디버깅 당하고 있는지 여부를 PEB 구조체의 디버깅 상태값을 통해 확인하는 ..
[2021.05.22] 써니나타스 web challenge 01, 02, 03, 08 web challenge 01 a는 aad로 치환한다. i는 in으로 치환한다. result의 2번째부터 2개를 잘라와서 result1에 대입한다. result의 4번째부터 2개를 잘라와서 result2에 대입한다. result1과 result2의 값을 합친다. ami -> aad -> aadmin -> ad -> min -> admin 따라서 ami를 입력하면 풀린다. web challenge 02 콘솔 창을 통해 함수 재정의 id 와 pw를 입력받고 같으면 join이 안되고 경고창이 뜨며 다르면 submit를 하는 코드였다. 때문에 함수에서 id == pw 부분을 id != pw로 바꿔서 다르면 sumit하도록 콘솔 창에서 바꿔주면 풀린다. web challenge 03 문제: notice board..
[2021.05.22] 8주차 : vulnhub prime:1분석 및 wargame풀이 Level3 – level4 burp suite를 이용해서 Referer: natas5.natas.labs.overthewire.org로 조작해준다. bandit4를 bandit5로 패킷을 조작해서 Forward해주면 다음과 같이 password를 획득할 수 있다. iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq level4 - level5 문제에서 로그인을 할 수 없다고 설명하고 있음을 확인할 수 있다. 그래서 burp suite를 이용해서 패킷을 확인해보면 다음과 같이 loggedin이 있다. loggedin=0을 1로 변경해주면 로그인이 성공해서 password를 얻을 수 있다. aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1 level5 - level6 개발자 도구를 이용해서..
[2021.05.15] 7주차 : vulnhub 모의해킹 실습 - Prime:1 scan $nmap -sV -O 피해VM IP주소 $nmap -A 피해VM IP주소 $nmap -p- 피해VM IP주소 ssh, http포트 두개가 열려있다. 파이어폭스를 이용해 URL에 피해 vm ip주소를 입력하면 다음과 같은 HacknPentest의 문구가 있는 사이트가 나온다. 하지만 사이트에서는 어떠한 정보도 확인할 수 없었다. $dirb http://192.168.18.129 명령어를 이용해서 사이트의 정보를 확인한다. /dev 디렉터리로 이동하면 level 0 stage에 있음을 안내해주는 문장이 나온다. Wordpress 디렉토리에 들어갔을 때 아무것도 찾지 못했다. 다음과 같이 secret.txt파일이 있는 것을 찾았다. 여기서 https://github.com/hacknpentest/F..
[2021.05.15]리버싱을 활용한 디버거 플러그인 개발5 t_memory - 메모리 관련 구조체 Findmemory(): 인자가 1개인 함수, 살펴보고 싶은 메모리 번지를 지정하면 해당 영역에 대한 각종 값을 t_memory 구조체에 채워주는 역할 Findmemory()에 넣은 메모리 번지에는 t_dump 구조체의 sel0 멤버 변수가 가리키고 있음 base는 401000으로 t_dump에서 구한 값과 동일한 값이다. 우리가 선택한 영역은 0x402D09 번지부터 0x402D26번지까지이므로 그 영역에 대한 PE를 구해서 역시 마찬가지로 BaseofCode와 ImageBase를 더한 값을 보여준다. size도 이와 마찬가지이다. t_disasm - 디스어셈블 구조체 t_disasm 구조체는 실제 코드를 디스어셈블하는 역할을 한다. 따라서 각종 어려운 옵코드를 ..
[2021.05.15] 섹션 5. 대응 방안취약점 발생 원인과 대응,대응 방안 개요,상세 대응 방안(1), (2), (3), (4), 실습 [5-1], [5-2] 보호되어 있는 글입니다.
[2021.05.08] 6주차 : vulnhub 모의해킹 실습 - DC 1 (2) [DC :1 후반부] flag4를 읽어 보려고 하니 디렉토리라고 하기에 cd flag4로 flag4디렉토리 안에 들어가주었다. ls를 해보니 flag4.txt가 있기에 cat flag.txt를 통해 파일을 읽어주었다. msfconsole에 들어가서 use exploit/multi/http/drupal_drupageddon을 해주고 rhost를 해당 ip주소로 설정해준다. 그런다음 exploit 을 진행한다. shell에 들어가서 flag4를 읽어주는 방법도 있다. find / -perm -4000 2>/dev/null -perm : find 명령어중 하나로 -perm 옵션은 특정 실행권한을 찾을 수 있게 해준다. -perm 옵션을 사용할때 찾고자 하는 실행권한을 숫자형식으로 입력한다. ex) find /..
[2021.05.08]리버싱을 활용한 디버거 플러그인 개발4 - PDK 활용 OllyDBG의 플러그인 SDK에는 여러 가지 구조체가 선언되어 있다. 이 구조체와 OllyDBG API의 조합만 잘 살펴보면 복잡한 과정을 거쳐 구해야 하는 값이나 여러가지 번거로운 작업을 쉽고 다이나믹하게 처리할 수 있다. t_dump, t_memory, t_disasm라는 이름의 3개의 구조체는 플러그인 개발에 매우 유용하게 쓰이며, 모두 t_접두사를 사용한다. 이 구조체들은 디버거 관련 사항이 대부분이고 메모리 처리에 대한 내용이 중심을 이룬다. 그렇기 때문에 이 구조체들을 제대로 응용할 수 있다면 대부분의 메모리 컨트롤이 가능하다. - t_dump - 덤프 관련 구조체 위는 덤프관련 구조체로, 20개가 넘는 멤버 변수를 가지고 있지만 모두 사용되는 것은 아니다. 앞에서 작성한 O..