SMALL

전체 글 117

[Webhacking.kr] Old 26

[문제] [풀이] view-source 소스코드 중에서 핵심적인 부분은 php 코드 부분이다. 소스코드를 분석해보면 다음과 같다. if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); } -> get 방식으로 id를 입력 받아 admin이면 no! 출력 후 종료 $_GET['id'] = urldecode($_GET['id']); -> id를 urldecode하여 id에 저장 if($_GET['id'] == "admin"){ solve(26);} -> id가 admin이면 26 단계 solve 즉, admin를 입력해야 26단계를 해결할 수 있는데, admin을 필터링 하고 있다. get 방식으로 입력 값을 줘야 하니, urlencoding을 생각해볼 수..

[CodeEngn] Basic RCE L08

[문제] [풀이] 1. UPX 언패킹 후 디버깅 IDEA로 디버깅을 시도하니 upx 패킹이 되어있었다. 문제에서 구해야 하는 것이 OEP이므로 패킹만 풀어주면 쉽게 구할 수 있다. 이에 cmd에서 upx를 풀어주고 IDEA나 Ollydbg로 디버깅하였다. 언패킹 후 아이다에서 start함수를 열어주면 OEP를 한 번에 구할 수 있다. 2. 패킹 상태로 문제 풀이 패킹이 된 파일을 Ollydbg로 열면 PUSHAD와 POPAD를 찾아볼 수 있는데, POPAD부분에서 JMP분기문을 발견할 수 있다. 이는 패킹 후 실제 코드가 들어있는 부분이므로 분기문 속을 Stepin하면 OEP를 발견할 수 있다.

Wargame/CodeEngn 2021.08.04

[CodeEngn] Basic RCE L07

[문제] [풀이] 문제 파일을 다운하여 임의의 문자열을 넣고 실행해보면 error 메시지가 출력된다. GetDlgItemText 함수와 GetVolumeInformation함수, strcat함수가 눈에 띈다. GetDlgItemText 함수는 입력 값을 가져온다. 00401097 6A 00 push 0 ; RootPathName = NULL -> RootPathName = NULL이면 C:\를 말한다! GetVolumeInformation함수는 드라이버의 정보를 가져온다. 가져온 정보는 위의 버퍼에 저장된다! 004010A8 E8 94000000 call ; \lstrcatA -> strcat 함수: 문자열 붙여주는 함수, 인자 값으로 4562-ABEX와 07.0040225C 값을 가져와서 붙여준다. -..

Wargame/CodeEngn 2021.07.30

[CodeEngn] Basic RCE L06

[문제] [풀이] 문제 파일을 실행하여 임의의 문자열을 입력하였더니 Wrong serial!!!이 출력되었다. 이에 IDA를 통해 start함수가 upx 패킹 되어있는 것을 볼 수 있었다. upx 패킹을 푼 뒤, ollydbg를 통해 분석을 시도했다. [Search for] - [All referenced text string]에서 정답으로 보이는 문자열을 확인할 수 있었다. 문자열이 가리키는 주소로 이동하여 코드 흐름을 보았다. 코드의 대략적인 흐름은 0040105C |. FF15 B0524200 call dword ptr ds:[; \GetDlgItemTextA -> 문자열 입력 0040106E |. 68 302A4200 push 06.00422A30 ; ASCII "AD46DFS547" -> 비교할..

카테고리 없음 2021.07.29
LIST