일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 한국정보보호산업협회기자단
- Writeup
- 곱셈 암호
- 무료교육
- 국가인적자원개발컨소시엄
- package.json
- arrow function
- 웹 프레임워크
- 개인정보보호교육
- 한국정보보호산업협회
- 백엔드
- 동적타이핑
- 유클리드_알고리즘
- 모듈러 연산
- 개인정보보호위원회
- package-lock.json
- 확장 유클리드 알고리즘
- pwnable.tw
- 한국산업인력공단
- 호이스팅
- 개인정보안전성
- node.js
- 백엔드입문
- function scope
- 마감임박
- 가명정보처리
- 덧셈 암호
- 포너블
- 디오판투스 알고리즘
- 개인정보보호
- Today
- Total
목록Web hacking (15)
짱짱해커가 되고 싶은 나
분석 대상 - 한글 2020 한글 파일은, 기본적으로 압축파일이기 때문에 반디집 같은 툴을 이용해서 압축 풀기를 할 수 있다. test라고 동일한 내용이 적혀있는 no_password.hwp와 yes_password.hwp 파일을 만들었다. yes_password.hwp는 default인 보안 수준 높음으로 password로 암호를 저장했다. 크게 BodyText, DocOptions, Scripts 폴더가 있고, 암호화한 파일에는 PrvText, PrvImage 정보가 없는 것을 볼 수 있다. (이로 인해 비밀번호가 있는 파일 크기가 더 작은 것 같다) PrevText는 미리보기 글, PrvImage는 미리보기 이미지다. FileHeader에는 HWP Document File이라고 적혀있었는데, 암호화..
☞ Start ! 이번에는 Code injection 문제다. 타겟 프로세스에 코드 조각을 넣고 이 코드를 실행했을 때의 결과를 보는 것이다. health 값이 클릭할 때마다 1씩 감소할 건데, 클릭할 때 health가 2 증가하게 만들면 성공! 먼저, 값이 들어 있는 주소를 찾는다. 그리고 이 값이 hit me를 하면 -1된 값으로 쓰이니까, what writes를 눌러서 해당 코드를 확인한다. 보면 예상한대로 sub 가 잘 들어있다. show disassembler로 코드를 자세히 보면, 다음과 같이 값이 들어있는 곳에 -1을 해주고 있다. 이제 여기서 add, 2로 해주거나 sub, -2로 해주면 될 것이다. 코드를 넣기 위해서는 ctrl+A를 눌러서 Auto assemble을 실행시켜준다. tem..
☞ Start ! 이번에는 포인터에 관한 문제다. pointer랑 값을 바꿀 수 있는 버튼이 2개가 있다. 포인터를 5000으로 만들면 된다. 우선 value를 갖는 주소를 찾은 뒤, 이번에는 find out what access the address를 사용한다. (포인터니까) 보면 edx에 eax를 넣는데 이걸 통해서 edx가 포인터 주소임을 알 수 있다. 헥사값이니까 헥사 설정하고 포인터 주소를 검색한다. adrress를 2번 누르면 정보를 바꿀 수 있는데, 여기서 pointer를 체크하면 된다. 위에서 포인터 설정을 hex로 해줬기 때문에 5000의 hex 값인 0x1388을 넣어줘야한다. 만약에 type에 hex를 설정하지 않았다면 그냥 5000으로 해도 된다. change pointer를 누르고..
☞ Start ! 이번 문제는, code finder 문제다. 값을 바꾸는 코드를 찾아서 값이 바뀌지 않도록 고정시키면 된다. 먼저, 현재 값을 갖고 있는 주소를 찾는다. Find out what writes to this address를 누르게 되면, 이 주소에 어떤 값이 쓰일 때 작동하는 코드를 보여준다. heat로 값이 변경되면서, 그 때 사용된 코드가 뜬다. (코드를 누르면, 밑에 각 레지스터에 저장된 값을 볼 수 있다) 이 코드를 보면 [eax]에다가 edx값을 넣는 걸 볼 수 있다. 즉, eax는 이 값을 갖고 있는 주소고, edx는 값이다. show disassembler를 하면 디스어셈블된 코드를 보여준다. 여기서 값을 바꾸는 코드에서 replace with code that does no..
☞ Start ! 이번에는 health와 ammo 값이 있고, 정확한 값을 알 수 있는데 변수 타입이 float과 double이다. 각 값을 5000으로 만들면 된다. 먼저, health를 찾아보자. vlaue type을 float을 설정하고 값을 찾으면 된다. hit me를 누르니, 혼자 반응하는 것을 볼 수 있다. 더블도 마찬가지로 진행하면 된다. 참고로 100같은 값은 많이 갖고 있으니까, 처음 시작할 때 hit me나 fire로 값을 바꾼 채로 검색하면 더 수월하다.
☞ Start ! 이번에는 Unkown initial vlaue 문제다. 말그대로 아까는 health 값을 정확하게 알 수 있어서 그 값을 가진 address를 뽑아 볼 수 있었는데, 이번에는 health 값이 몇인지 알 수 없는 것이다. (여기서는 status bar 라고 한다 ㅎ) 문제를 보면 status bar 값은 0에서 500 사이이고 이 값을 5000으로 만들면 된다. 상태 바를 보면 현재 꽉 차 있으니까 500이고, 숫자이니까 4byte라고 추측할 수 있다. (※ 새로운 Step으로 왔을 때는 항상 New Scan!을 눌러주는 것을 잊지 말자) 치트 엔진에서는 다음과 같이 unkown initial value를 스캔할 수 있다. 무슨 값을 초기에 갖는지 모르지만, 4byte의 타입이다라고 설..
☞ Step 2 Exact Value Scannig에 관한 문제다. 밑을 보면 heat me 버튼이 있고 그 옆에 100이라는 숫자가 써있다. 이 100이 체력인것! 그래서 heat를 하면 체력이 랜덤한 값으로 줄어든다. 문제는 이 health 를 1000으로 만들어주면 된다. 현재 찾고자하는 것은 Health를 저장하고 있는 변수(?) 다. health의 값을 알고 있으니 이 값을 갖는 주소를 뽑아오면 된다. 숫자 값이니 4byte일 것이라고 추측하고, Scan Type을 Exact Value로 한 뒤, value를 넣고 Scan을 하면 된다. Scan을 하면 값이 100인 여러 주소들이 뜬다. heat를 찾기 위해 튜토리얼에서 heat me로 health값을 바꾸고, Next Scan을 해주자. Ne..
☞ START!! 먼저, Open process를 통해서 튜토리얼 프로세스를 치트 엔진에 붙혀야한다. 밑에 초록색으로 보이는 아이콘을 누르거나, File > Open process 를 누르면 된다. 누르면 현재 컴퓨터에서 실행 중인 프로세스 목록들이 다 뜬다. (애플리케이션, 프로세스, 윈도우) 살짝 당황했던게 카카오톡 단톡방 이름들도 떠서 놀랬다 ㅋㅋㅋㅋ 어쨌든, 튜토리얼에 해당하는 프로세스를 눌러서 open을 하면 된다. 그리고 튜토리얼에서 Next 버튼을 누르면 끝!