
admin 함수를 보면, userLevel이 1이면 admin이다. 직접 회원가입을 해서 로그인을 해보면, UserLevel이 0이다 (일반 계정이 유저레벨이 0인 것) 비밀번호 변경 코드를 보면, 회원가입 시 주는 백업코드가 있는데 일치하지 않으면, 주어진 기회 5번에서 -1씩 카운트 한다. User가 존재하는 계정이면, time.sleep(1)로 1초 지연시키고 있음 time.sleep(1)로 1초 지연되는 동안에 1~100까지 백업 코드를 요청해서 동시 요청으로 5를 초과해버리는 것을 이용하면, MAXRESETCOUNT가 5를 초과해서 백업코드를 맞출 수 있음 내가 가입한 계정의 주소가 /user/17 이어서 /user/1로 가봤더니 UserLevel이 1인 계정이 나타났다. 즉, Apple은 ad..

char는 정해진 길이만큼 받고 뒤 데이터는 잘리는 특징이 있다. 비밀번호가 char(32)인데, 'admin' aa'라고 입력하면 32를 넘는 뒷부분은 잘리고, 데이터 베이스는 admin으로 돌아간다. ( https://hack-cracker.tistory.com/165 ) admin 계정으로 로그인 해야 하는데, 회원가입을 admin으로 하려고 하니 이미 존재하는 아이디라고 뜬다. 개발자모드로 id의 최대 길이를 32에서 33으로 바꿔주고 ‘admin a’로 만들어주면 회원가입 성공! 비번은 aaaaaaaa로 설정했다. 가입한 admin / aaaaaaaa 로 로그인하면 FLAG 출력

비밀번호를 4번 틀리면, 비밀번호가 자동으로 바뀐다. id는 ip 값으로 고정이다. 프록시 걸고 버프스위트로 id=203.229.203.234&pw[]=pw&type=2 || row(1,1)=(select count(*), concat(ps,0x3a,floor(rand()*2))x from (select 1 union select 2 union select 3)y group by x limit 1) 로 인자 값을 바꿔준다. DB Error :: Duplicate entry '132b541995423a858ffb981d52dbe945:1' for key 'group_key' 위에서 error로 나온 132b541995423a858ffb981d52dbe945 값을 비밀번호에 넣고 로그인 하면 FLAG가 출력

API 서버로부터 넘겨받기 위해서는 /api/board/~~~~(number)로 넘겨줘야 한다. MangoDB의 objectID의 구조 FLAG의 timestamp는 2번째 게시글(Mongo)보다 2초 늦게 개시되었으므로 +2 해준다. FLAG의 counter는 1개시물마다 +1씩 증가하고 있으니 +1을 해준다. 즉, counter는 60e6ede0086caf98 timestamp = 0x624B07C0 + 2 print(hex(timestamp)[2:] + "60e6ede0086caf98") 출력 결과 -> 624b07c260e6ede0086caf98 http://host1.dreamhack.games:13484/api/board/624b07c260e6ede0086caf98 로 이동시 플래그 출력.

페이지에서 뭘 눌러도 이 창이 계속 뜨고 되돌아 간다. No를 인자로 넘기는 페이지도 있다. 아무거나 누르고 로그인을 시도했을 때, 이 문자열이 떴다. 검색해보면 Hash Haval128,5 인코드다. 문제가 magic이므로 magic hash를 이용하고 있다. https://www.whitehatsec.com/blog/magic-hashes/ Magic Hashes For more than the last decade, PHP programmers have been wrestling with the equals-equals (==) operator. www.whitehatsec.com 이 페이지에서 haval128,5 값을 찾으면 115528287이다. admin/115528287로 로그인 하면 FLA..

[ md5 함수 ] md5("문자열") - 32자리 16진수 값 반환 md5("문자열", true) - 16자리 바이너리 형식으로 반환 md5 함수는 2번째 인자 값을 선택적으로 주는데, 이는 raw_output에 해당하는 옵션이다. 이 raw_output에 의해서 취약점이 발생한다. raw_output 옵션의 기본 값은 false true로 주면 32길이 hex값을 16길이 바이너리 값으로 반환. md5("문자열",true) 실행 시 ****'='**** 같은 값이 나오면 풀린다. import hashlib for i in range(0, 10000000): if b"'='" in hashlib.md5(str(i).encode()).digest() : print('{0}'.format(i)) md5 함..

blueh4g - 계정 이름 $1$ - 해시 알고리즘 종류(MD5) $loWsuvzA - 솔트 값 $c9E1SlKB8KXl5.63Lk5Kk/ - 해시된 비밀번호 비밀번호가 md5로 암호화 되어 있다. John the ripper(비밀 번호를 추측(크래킹))을 사용해 비밀번호를 구한다. import itertools, string a = string.ascii_lowercase+ string.digits for i range(2, 10): for j itertools.product(a, repeat=i): print('G4HeulB' + ''.join(j) 같은 디렉토리에 다운 받은 htpasswd 파일과 py코드를 두고 실행시키면 G4HeulBz52b가 출력된다. 이 값을 페이지에서 넣으면 FLAG가 출력.
- Total
- Today
- Yesterday
- mongodb
- SQLi
- dreamhack
- CTF
- Cookie
- 포렌식
- 취약점
- FTKImager
- 모바일
- cheatengine
- Fiesta
- forensic
- AssaultCube
- 스테가노그래피
- web
- sqlinjection
- Android
- forensics
- reversing
- md5
- rev
- 인시큐어뱅크
- 안드로이드
- 드림핵
- MISC
- networking
- 리버싱
- 해킹
- Steganography
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |