[웹해킹] Username enumeration via different responses - lab writeup
·
Writeup
타깃의 Username과 password 리스트를 가지고Brute force를 해서 계정 페이지에 접근하는 것이 목표다편의를 위해 intercept on을 하기 이전에미리 username, password 리스트를 띄워놓기일단 임의의 계정명과 비밀번호를 입력해 로그인 시도를 하고로그인을 시도하는 POST 파켓을 Intercept 한다/login이라고 적혀있음username의 value에 해당하는 user 부분을 스크롤한 상태로이 파켓을 intruder에 보낸다.username = $value$ 이렇게 표시된 걸 확인하면리스트에 있던 값들을 payload configuration에 붙여넣기함그리고 start attack을 하면 방금 붙여 넣은 이름들로 brute-force attack을 시작하는데패스워드를..
[Dreamhack] 리버싱 rev-basic-4 Writeup
·
Writeup
지난 리버싱 시리즈와 마찬가지로 Correct값을 출력해주는입력값을 찾는 문제다 바로 디컴파일해서 소스코드를 살펴보자 int __fastcall main(int argc, const char **argv, const char **envp){ char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_1400011C0("Input : ", argv, envp); sub_140001220("%256s", v4); if ( (unsigned int)sub_140001000(v4) ) puts("Correct"); else puts("Wrong"); return 0;}__int64 __fastcall sub_140..
[웹해킹] Authentication vulnerabilities_Password reset broken logic Writeup
·
Writeup
그동안 블로그에 리버싱 네트워크 어셈블리 다양하게 다뤘으나사실 나의 최애 분야는 웹해킹이다.. (근데 요즘 리버싱에 좀 흔들리고 있다)이번엔 Portswigger Web Security Academy의 랩 중에서Authentication 인증 취약점 중 Password reset broken logic 문제를 풀어보자   비밀번호 리셋 기능에 취약점이 있다고 한다주어진 계정 wiener:peter를 활용해서 carlos 패스워드를 변경해서 로그인하는 시나리오  burpsuite repeater에 넘기는 게 더 중요해서 여기는 대강 설명만 하고 넘어가자면forgot password?에서 wiener의 이메일 계정으로 비밀번호를 리셋하는 과정이다  저기 주어진 url에 들어가면 새로운 패스워드를 설정할 수 ..
[Tryhackme] Compiled 리버싱 Writeup
·
Writeup
tryhackme의 리버싱 챌린지 Compiled을 풀어보자챌린지나 워게임 ctf 몇 번 풀어보니까 재밌어서 계속하게 됨   powershell에서 strings 명령어로 일단 분석을 해보니 구조가 나온다PE 파일에서 배웠던 .data .bss .rodata 등의 섹션이 발견된다근데 .Compiled 프로그램을 실행할 수 있는 환경이 없어서 IDA로 정적분석을 해봐야겠다   함수의 프롤로그도 보이고 패스워드를 입력하라는 구문과 scanf 함수가 보인다.패스워드 입력값에 따라 Correct 혹은 Try again을 출력하는 프로그램임을 알 수 있다. 그럼 이제 출력값의 조건 소스코드를 디컴파일해서 살펴보자 int __fastcall main(int argc, const char **argv, const c..
[Dreamhack] 리버싱 rev-basic-3 Writeup
·
Writeup
IDA에 실행파일을 로드해서 흐름을 살펴보면Input: 여기서 인풋을 받고 검증을 통해 correct, wrong을 출력한다 Correct를 출력하는 조건이 뭔지 loc_140001193을 살펴보자 sub_140001000에서 인풋을 비교한다더블클릭해서 들어가니까 수식이 있다 일단 byte_140003000에 hex 값으로 힌트를 찾을 수 있는지 보면  뭔가 hex 값이 있긴 한데 플래그로 보이는 문자는 아닌 것 같다위에 나온 수식이 유일한 해결책인 것 같아서 다시 분석해 보겠음 arr[i] != (i ^ *(unsigned __int8 *)(a1 + i)) + 2 * i hex_value값을 이미 알고 있으니까 역으로 연산하는 식을 구하면 되겠다arr[i] != (i ^ a1[i]) + 2 * iarr..
[Dreamhack] 리버싱 rev-basic-2 Writeup
·
Writeup
IDA Free 프로그램에 실행파일을 로드해서 전체적인 흐름을 살펴보자저번 리버싱 문제들과 마찬가지로 인풋 값에 따라서correct, wrong을 출력해주는 프로그램인것 같다늘 그렇듯이 F5로 디컴파일 먼저 해보자   sub_1400011B0에서 인풋을 받고 sub_140001000에서 값을 비교한다 그럼 sub_140001000에 들어가서 함수를 자세히 보자  for문이 있고 0x12, 10진수로 18번 반복문이 실행되는걸로 봐서플래그가 한번에 나타나는게 아니라 18번에 걸쳐 나타나는것 같다!  IDA-VIEW A에 보니까 글자들이 하나씩 있는게 보인다C o m p 4 r e 어쩌고 뜨는걸 보니 이게 플래그인듯 그런데 Hex view에 들어가도 플래그가 한번에 떠있다 Comp4re_the_arr4y