본문 바로가기

전체 글

(302)
portswigger : Modifying serialized data types 문제 링크https://portswigger.net/web-security/deserialization/exploiting/lab-deserialization-modifying-serialized-data-types Lab: Modifying serialized data types | Web Security AcademyThis lab uses a serialization-based session mechanism and is vulnerable to authentication bypass as a result. To solve the lab, edit the serialized object ...portswigger.net 풀이 이전 문제와 같이, wiener 계정으로 로그인 시, 세션이 생성되며, b..
portswigger : Modifying serialized objects 문제 링크https://portswigger.net/web-security/deserialization/exploiting/lab-deserialization-modifying-serialized-objects Lab: Modifying serialized objects | Web Security AcademyThis lab uses a serialization-based session mechanism and is vulnerable to privilege escalation as a result. To solve the lab, edit the serialized object in ...portswigger.net  풀이 wiener 계정으로 로그인 시, 위 그림 1과 같이 세션이 생성된다.   해당..
portswigger : Information disclosure in error messages 문제 링크https://portswigger.net/web-security/information-disclosure/exploiting/lab-infoleak-in-error-messages Lab: Information disclosure in error messages | Web Security AcademyThis lab's verbose error messages reveal that it is using a vulnerable version of a third-party framework. To solve the lab, obtain and submit the version ...portswigger.net  풀이  오류 메시지를 통해 프레임워크의 버전을 알아내는 문제이다.   원래 파라미터 p..
Dreamhack : rev-basic-5 문제 링크https://dreamhack.io/wargame/challenges/19 rev-basic-5Reversing Basic Challenge #5 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io  풀이  위 그림 1에서 빨간 박스는 해당 문제의 주요 로직을 나타낸다.   디컴파일하여 위 그림 2와 같이 확인이 가능하다. 그림 1의 어셈블리 연산에서도 확인이 가능했지만, 사용자 입력 값 배열의 앞, 뒤 원소를 더한 값이 아래 그림 3의 chall05의 원소들과 같아야 한다.   chall05_byte = [ 0xAD, 0xD8, 0xC..
Dreamhack : rev-basic-4 문제 링크https://dreamhack.io/wargame/challenges/18 rev-basic-4Reversing Basic Challenge #4 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io 풀이  해당 문제에서 주요한 부분은 위 그림 1과 같다.   해당 로직을 디컴파일(F5)하여 확인하면 위와 같다.  사용자 입력 값을 대상으로 4비트 이동 ( >> 4 )을 하고, 16을 곱하기 (   정답 배열의 메모리 주소가 가리키는 값은 위 그림 3과 같다.  Python>list(get_bytes(0x00007FF659DF3000,28))[..
Dreamhack : rev-basic-3 문제 링크https://dreamhack.io/wargame/challenges/17 rev-basic-3Reversing Basic Challenge #3 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io  풀이 이번 문제는 바로 정답을 찾기보다는 좀 더 메모리 구조와 흐름을 이해해보기 위해 자세히 포스팅 해보았다.  먼저, Bp를 아래 그림 1을 기준으로 scanf를 받은 후 나오는 call 함수에 걸었다.   [rsp+32]가 가리키는 주소에는 사용자가 입력한 문자열이 위치해 있다. 이때, 위 그림 1과 같이 lea rcx, [rsp+32]를 통..
Dreamhack : rev-basic-2 문제 링크https://dreamhack.io/wargame/challenges/16 rev-basic-2Reversing Basic Challenge #2 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io  풀이  문제의 파일을 IDA로 열었을 때, 위 그림 1과 같은 로직을 확인할 수 있다. 그리고 디컴파일(F5) 시, 아래 그림 2와 같다.   사용자 입력을 받고, sub_140001000 함수에서 처리가 이뤄진 후, Correct와 Wrong 둘 중 하나가 결정되는 것으로 보인다.   해당 함수( sub_140001000)를 위 그림 3에서 살..
Dreamhack : rev-basic-1 문제 링크https://dreamhack.io/wargame/challenges/15 rev-basic-1Reversing Basic Challenge #1 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io  풀이 해당 제공 파일 실행 시, 이전 rev-basic-0 문제와 동일하게 오답을 입력할 경우 Wrong이 출력 되어진다.   IDA를 사용해 해당 바이너리 파일을 열었을 때, 위와 같은 로직을 확인할 수 있었다. 사용자 입력 값을 받은 후, sub_140001000 함수 내에서 처리 후 이후 ZF 플래그 설정에 따라 Correct 혹은 Wron..