[Webhacking.kr] 4번
2021. 5. 3. 20:28
Wargame/Webhacking.kr
레인보우 테이블 문제 암호화된 해시를 푸는 문제인 것 같다.. ... 세션값은 10000000, 99999999 사이의 임이의 값 + "salt_for_you"이고, 출력하는 해시값은 sha1을 500번 돌린 값이다. 문제의 핵심은 출력된 해시값을 보고 sha1 알고리즘을 돌리기 전 세션값을 찾는 것이다. 그런데, 해시 알고리즘은 단방향 암호화 기법으로 결과값을 통해 입력값을 알아낼 수 없다. 브루트 포스 공격 또한 막아져있다. -> 레인보우 테이블을 만들어서 풀어야 한다. 단방향 암호화 알고리즘의(=해시 알고리즘) 특징인 '문자열 A를 암호화하면 어떤 경우에도 문자열 B가 된다'는 특징을 이용하여, 특정 문자열들에 대한 암호화를 통해 도출된 결과값들을 모두 저장한 것이 레인보우 테이블이다. 아예 입력값..
[Webhacking.kr] 3번
2021. 5. 3. 20:22
Wargame/Webhacking.kr
SQL injection 문제 규칙을 찾아서 위와 같이 칠해주면 다음 페이지가 뜬다. 아무거나 입력하니 answer, ip가 뜬다. answer, ip 값은 고정적이다. hidden 타입으로 answer와 그 값이 전달되는 것을 알 수 있다. 처음에 입력받는 부분에 sql injection을 시도했지만, 입력이 그대로 전달되는걸 보아 문자열로 취급하는 것 같았다. 그래서 value 값에 '를 넣어보니 쿼리 에러가 발생하여 sql injection을 시도해보았다.
[Webhacking.kr] 1번
2021. 5. 3. 20:14
Wargame/Webhacking.kr
쿠키 인젝션 문제 다음이 문제의 핵심 부분이다. 쿠키는 $_COOKIE["쿠키이름"]을 통해 접근할 수 있다. 위 부분을 보고 ‘user_lv’ 쿠키 값으로 5초과 6미만일 경우 solve(1) 될 것이라 추측하였다. Edit this cookie (크롬 플러그인)을 통해서 ‘user_lv’ 라는 쿠키 값으로 5.5를 줬다.
[HackCTF] Look at me (sysrop)
2021. 4. 23. 22:32
Wargame/HackCTF
1. 문제 haerinn.tistory.com/174 [HackCTF] Look at me 1. 문제 NX 가 걸려있다. system 함수를 쓰지 못할 것으로 보인다. 어쩐지 함수들이 굉장히 많았는데, 정적 링킹 되서 그런 거였다. gets() 입력 시 bof 가 발생한다. 현재, Nx + aslr 걸려있으며, 주소가 le haerinn.tistory.com 이 문제를 syscall 을 이용해 풀어보겠다. 현재, Nx + aslr 걸려있으며, 주소가 leak 되지 않고 있다. 그런데 정적 링크된 파일이라 system 함수를 이용할 수 없다. 이때 어떻게 쉘을 얻을 수 있을까? 1) bss 영역에 binsh 주입 - gets 통해서 2) execve(binsh) 시스템 콜 호출 rp++ 를 이용해 필요한 ..
[HackCTF] SysROP
2021. 4. 23. 18:12
Wargame/HackCTF
1. 문제 read 로 입력을 받을 때 bof 가 발생한다. NX 만 걸려있다. nx + aslr 이 걸려있는 상황에서 leak X -> 64bit rop 를 하려고 했으나, leak 을 할 수 없는 상황이었다. puts 나 printf 등의 출력함수가 없기 때문이다. 이럴 땐 어떻게 해야 할까? syscall rop = system call rop 을 이용해서 풀어준다. 2. 문제 해결 과정 rax : 0x3b rdi : data rsi : 0 rdx : 0 필요한 것들을 구해보자. 1) Gadget 2. 고정 주소 (data 영역) bss 영역은 stdout 으로 쓰여서 data 영역에 저장해줌. 함수들의 하위 3바이트는 offset 을 나타내며, 항상 일정하다는 점을 이용 -> read_got의 마..
[HackCTF] ROP
2021. 4. 20. 02:23
Wargame/HackCTF
1. 문제 NX 가 걸려있다. 입력을 받고, Hello World! 를 출력한다. read() 입력 시 버퍼보다 더 입력받아 bof 가 발생한다. NX + ASLR 걸려있는 상황에서, 주소도 leak 되지 않음 -> ROP 2. 문제 해결 과정 기본적인 rop로도 풀 수 있지만, 이번엔 다음과 같이 풀어보았다. -> got 주소를 하나 leak 한 후 bof 가 터지는 vulnerable_function 으로 다시 돌아가서 leak 했던 주소를 통해 system, binsh 실제 주소를 구한 뒤 페이로드를 다시 보내는 방식 필요한 것들을 구해보자! pppr 가젯 offset : 0x88 + 4 = 140 3. 익스플로잇
[HackCTF] Gift
2021. 4. 19. 18:07
Wargame/HackCTF
1. 문제 nx가 걸려있다. 1. binsh, system 주소를 leak 한다. 2. fgets() 를 통해 입력받고, 입력받은 것을 출력한다. 3. gets() 를 통해 입력 받는데, bof 가 발생한다. binsh 의 주소는 고정되있고, system 의 주소는 바뀐다. binsh 의 주소는 아마 bss 영역일테고, system 은 실제 주소를 leak 해주는 것 같다. 처음엔 binsh 주소에 "/bin/sh" 이 실제로 들어가있는 줄 알고 익스를 했는데 잘 안되서 보니 binsh 위치에 아무 값도 들어있지 않았다. 아마 위치만 지정해준 것 같고, 저기다가 "/bin/sh" 을 넣어서 쓰라는 것 같다. 다음과 같이 실행하면 될 것 같다. 1. gets(&binsh) 2. system(binsh) 실..
[HackCTF] Look at me
2021. 4. 19. 15:37
Wargame/HackCTF
1. 문제 NX 가 걸려있다. system 함수를 쓰지 못할 것으로 보인다. 어쩐지 함수들이 굉장히 많았는데, 정적 링킹 되서 그런 거였다. gets() 입력 시 bof 가 발생한다. 현재, Nx + aslr 걸려있으며, 주소가 leak 되지 않고 있다. 그런데 정적 링크된 파일이라 system 함수를 이용할 수 없다. 이때 어떻게 쉘을 얻을 수 있을까? ->쉘코드를 bss 영역에 주입하고, mprotect() 함수를 통해 그 영역을 실행 가능하게 하면 된다. 2. 문제 해결 과정 1. gets() 통해 &bss 에 쉘코드 삽입 2. mprotect() 를 이용해 그 영역에 실행 권한 주기 구해야 될 것들 - bss 영역 - gadget - shellcode (x86 : 25byte) \x31\xc0\x..