SMALL

분류 전체보기 117

[Pwnable.kr] blackjack

[문제] [풀이] 문제에 주어진 url에 접속해보면 c코드들이 출력된다. https://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html Simple Blackjack Program Replies: 10 Last Post: 09-09-2004, 05:48 AM cboard.cprogramming.com int betting() //Asks user amount to bet { printf("\n\nEnter Bet: $"); scanf("%d", &bet); if (bet > cash) //If player tries to bet more money than player has { printf("\nYou cannot b..

Wargame/pwnable.kr 2021.08.12

[Webhacking.kr] Old-19

[문제] [풀이] 문제에 주어진 대로 admin으로 접속해보면 다음과 같은 메시지가 출력된다. 이 때 cookie 값을 확인해보면 phpsessid를 확인할 수 있다. admin외에 다른 값(1)을 넣어보면 hello 1과 같은 메시지를 출력한다. 그리고 admin을 넣었을 때와 달랐던 점은 userid가 생성된다는 것이다. 1을 넣었을 때 id가 YzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWI%3D로 표현되었다. 이 외에도 다른 값을 넣어 보았는데, 마찬가지로 userid가 생성되는 것을 볼 수 있었다. MDNjN2MwYWNlMzk1ZDgwMTgyZGIwN2FlMmMzMGYwMzQ4NjVjMGMwYjRhYjBlMDYzZTVjYWEzMzg3YzFhODc0MThjZTRiMTZ..

[Webhacking.kr] Old-54

[문제] [풀이] 중요 코드를 살펴보면 다음과 같다. 그 중에서도 function answer 함수가 문제 풀이에 핵심적인 역할을 한다. 한 글자씩 표현되는 값을 중첩되게 표현하기 위해서는 aview.innerHTML=x.responseText; 부분을 aview.innerHTML+=x.responseText; 로 변경해주면 된다. if(x.responseText=="") aview.innerHTML="?"; 이 코드는 삭제해도 무방하다. 공백을 확인하기 위해서 넣어줬는데, 그러기 위해서는 if(x.responseText=="") aview.innerHTML+="?"; 로 변경해주면 된다. 변경한 값을 console 창에서 변경해준 뒤에 다시 페이지를 실행해보면 flag를 획득할 수 있다. [핵심] wi..

[CodeEngn] Basic RCE L09

[문제] [풀이] 문제를 실행하면 error 메시지 출력 후 종료된다. 이에 IDA를 통해 UPX 패킹이 되어 있는 것을 확인할 수 있었고, unpacking을 진행한 뒤 ollydbg로 실행하였다. 6A0068002040006812204000 [핵심] StolenByte란? : 훔친 바이트란 의미, 프로그램의 한부분의 코드를 훔쳐내어 다른 부분으로 옮겨진 코드 - 주로 옮겨지는 코드는 엔트리 포인트위의 몇개의 코드임 - 옮겨진 코드들은 OEP 주소로 점프하기 전에 위치에서 PUSH 됨. -> 주로 OEP 주소의 코드를 따로 분리해서 OEP로 점프 직전에 PUSH로 넘겨주 - 패커가 이동시킨 코드의 윗부분 (보통 OEP 로부터 몇 개의 명령어) - 프로그램을 패킹 시 확인 가능. - 숨겨진 코드를 다시 ..

Wargame/CodeEngn 2021.08.11

[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