golem 문제를 보자. 다음과 같다. 이번에는 필터링에 substr과 =가 포함이 되었따. 상당히 짜증나지기 시작한다. 근데 뭐, 저것만 우회하면 문제는 딱히 없다. blind 문제라는 것 말고는... blind 문제라는게 상당히 짜증나지만 뭐 일단 해보자. 먼저 pw의 길이를 파악하기 위해 몇 번 숫자를 대입시켜 파악해 보고자 했다. 그러다가 다음과 같이 나왔다. 아이디를 직접 admin으로 입력해주려고 해도 =가 걸려서 위와 같이 ascii(id)중 103(g로 시작하는 id)를 제거하기 위해 다음과 같이 하고 &(%26)으로 and 연산을 하고 길이가 9일 때 다음과 같이 나온 것을 보면 pw 길이는 9자리다... ㅡㅡ 뭐 blind 해결을 위해 코드를 짜서 적용시키면 금방 끝나는 문제이기는 하지..
vampire 단계도 해결해보자. 다음과 같다. 이전 단계처럼 진짜 뭐 없다 이것도. 근데 차이는 str_replace라는 함수에 있다. 이 함수는 어떤 특정 조건이 성립되면 지정된 조건으로 변경시켜주는 내용인데, 여기서 보니까 admin을 입력받으면 공백으로 치환한다. 그거 말고 admin으로 id가 로그인되면 해결되는 것은 동일하다. 간단하다. 그냥 단순히 admin이라는 단어 중간에 admin을 끼워 넣어라. 그럼 된다. 다음과 같다. 다음 단계로 넘어가 보자.
orge 단계를 해결해보자. 다음과 같다. 이전과 or와 and를 거른다는 부분에서 동일하지만 다른점은 이 문제 푸는 방식으로 blind를 사용해야 한다는 것이다. 그래서 다음과 같이 해결을 시도했다. 여기서 pw부분을 널로 하여 앞부분 id를 날리도록 하고 id가 admin이면서 pw를 하나씩 뽑아서 볼 때 어떤 일정한 조건이 만족하냐에 따라 비밀번호를 비교해 보았다. 여기서 하나씩 스트링을 이동시키면서 하나씩 뽑아보는 삽질을 일부러 해보았고, 결과를 얻어 쿼리문에 바로 입력을 하였더니 다음과 같은 결과가 나왔다. 이전에 blind를 해본적이 있다면 쉽게 해결할 수 있는 부분이었다. 답은 공개하지 않도록 하겠다.
다음 단계인 darkelf를 해결해보도록 하자. 문제는 다음과 같다. 아까 wolfman과 상당히 유사하다. 단 필터링 부분에서 공백이 아닌 or와 and가 필터링 되어 있다는 것을 알 수 있고, id가 admin일 때 해결된다는 것은 동일하다. 이걸 보고, 난 그냥 아까 문제 푼 내용이랑 똑같이 하면 해결될 거 같다는 생각을 해서 동일한 방식으로 문제를 해결해보고자 했고 해결해버렸다. 다음과 같다. 아까와 동일하게 앞의 guest라는 id를 날리기 위해 pw에 0을 줘서 거짓을 만들어서 날려버리고 or 문자(||)를 통해 id로 admin을 주고 뒷부분은 주석으로 날려서 해결할 수 있었다.
5단계 wolfman을 해결하도록 하자. 문제는 다음과 같다. 다음과 같이 되어 있다. 일단 id는 guest로 지정되어 있고 pw를 받는 상황으로 되어 있다. 일단 기존의 필터링에 공백을 하면 안되는 필터링이 추가 되어 있고, 핵심 부분으로 id가 admin일 때 문제를 해결할 수 있는 것을 알 수 있다. 이래서 단순히 나는 guest라고 지정되어 있는 id를 거짓으로 날려버린다음에 id를 admin으로 접속하고 이 때 pw는 무시할 수 있도록 쿼리를 작성해보자고 생각하여 다음과 같이 입력을 하였더니 간단하게 해결할 수 있었다. 단순히 일단 pw에 0을 집어넣어 guest라는 id의 조건을 날려버리고, id를 다시 admin으로 지정하면서 뒤에 나머지 쿼리를 주석으로 날려버리면서 문제를 해결하고자 했더..
http://websec.ca/kb/sql_injection
4단계인 orc를 해결해 보도록 하겠다. 문제는 다음과 같다. 내용을 보면 일단 앞의 내용들과 같이 필터링이 되어잇고, 핵심부분인 것이 입력받은 pw의 파라미터 값이 DB에 있는 pw와 일치할 때 해결되는 것을 알 수 있다. 앞의 내용과는 사뭇 달라지는 것이다. 여태는 우회하는 방식으로 많이 씹고 넘어가는 경우가 많았는데, 이 것은 일정 조건에 맞춰야지만 내용을 알 수 있는 Blind SQL injection을 이용하여 DB 내용을 파악해야 해결할 수 있는 것이다. 그래서 일단 비밀 번호의 길이를 파악해보고자 length를 사용하여 파악해보았다.여러 숫자를 해보던중 8을 넣었을 때 다음과 같은 화면이 나왔다. admin으로 접속이 된 것을 알 수 있다. 여기서 우리는 비밀번호가 8자리인 것을 알 수 있다..
3단계 goblin에 대해서 문제를 해결해 보도록 하자. 일단 문제는 다음과 같다. 위와 같은 상태로 되어 있다. 우선 보면 no를 get하는 부분에서 앞에 필터링된 내용에 쿼터들을 사용하는 것을 추가로 필터하는 부분이 추가 되었고, 일단 id는 guest로 지정이 되어 있다. 여기서 핵심 부분은 위에서 보면 아까 cobolt 단계와 동일하게 id가 admin일 경우에 문제가 해결 된다는 것을 알 수 있다. 그래서 일단 no 부분에 숫자를 아무 영역이나 넣어 보기로 하고 -1을 넣고, 추가적인 쿼리로 id가 admin인 것을 입력하는데, 필터링 부분 때문에 직접은 입력하지 못하고 0x 16진수를 이용하여 입력하여 다음과 같이 해결하였다. no에 -1 이외에 다른 숫자들을 입력해 보았을 때에도 무사히 성공..
- Total
- Today
- Yesterday
- #WireShark
- #FTK
- #EnCase
- ethereumj
- #DEFT
- #WinHex
- 이더리움
- #크롬
- #GRR
- #Forensic Tools
- #Chrome
- blockchain
- #010 Editor
- #메모리
- #Forensic
- #WinPmem
- #이미지 수정
- #디지털 포렌식
- #캐시
- #수정
- 4차 산업혁명
- #tcpdump
- #Volatility
- #ReKall
- #Pmem
- #포렌식
- #tool
- ethereum
- #Security
- Fin Tech
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |