sql injection

webhacking.kr

[webhacking.kr] old-35 (sqli → insert)

문제분석 & 풀이페이지에 접속하면 빈칸과 코드가 주어져있다. 코드를 분석해보자.1) phone, id 파라미터가 있는지 검증한다. (3번줄)2) phone, id 파라미터가 존재하면 다음을 수행한다. (4~9번줄)2-1. phone 값에 * , / , = , select , - , # , ;   가 들어가면 프로그램을 강제종료한다. (4번줄)2-2. id 값이 5자리를 넘으면 안된다. (5번줄)2-3. id 에 admin이 들어가면 프로그램이 강제종료된다. (6번줄)2-4. 위 3가지 검증을 모두 넘기면 sql 쿼리를 실행하여 새로운 레코드를 DB에 넣는다. (7번줄)3) sql 쿼리를 실행하여 ip값을 가져와 $isAdmin 에 저장한다. (11번줄)4) isAdmin['ip'] 값이 클라이언트의 ip..

webhacking.kr

[webhacking.kr] old-27

문제분석 & 풀이sql injection 문제다. ○ 코드 분석1. no 파라미터를 통해 값을 전송받고 있다.2. no는 # , select , ( , 공백 , limit , = , 0x 중 하나라도 있을시 hack으로 간주한다.3. sql 쿼리를 실행해서 결과로 나온 id값이 "admin"이면 문제가 해결된다. 필터링을 우회하는 인젝션 쿼리는 다음과 같다.# Injection Query0) or id like 'admin'--# Complete Queryselect id from chall27 where id='guest' and no=(0) or id like 'admin'-- ) where문을 보면 or 를 이용해서 id='guest' 를 무효시키고 id가 'admin'인 값을 찾고 있다. 여기서 ..

webhacking.kr

[webhacking.kr] old-22

문제분석 & 풀이admin으로 로그인을 하라는 미션이 주어진다. join을 통해 계정을 생성할 수 있다.  guest / guest 으로 계정을 생성하고 로그인을 해보자. [그림]처럼 pw가 해싱된 상태로 출력된다. 해싱된 pw 길이는 32자리로 MD5로 해싱됐다고 추측할 수 있다. MD5가 맞는지 확인해보기 위해서 "guest"를 MD5로 해싱해서 값을 비교했다.  하지만 결과는 달랐다. "guest" + salt → 암호값아마도 단순하게 "guest"를 해싱한게 아니라 salt 값이 추가된 상태로 해싱된 것 같다. 해싱 결과를 복호화하려면 레인보우 테이블을 이용하는 방법 밖에 없다. ○ 레인보우 테이블특정 알고리즘(ex. MD5)에 대한 평문과 암호문을 테이블 형태로 모두 기록해서 암호문에서 평문으로..

webhacking.kr

[webhacking.kr] old-09

문제에 접속하니 위와 같은 페이지가 나왔다.아마 password를 맞추는 것이 문제인 것 같다.  하이퍼링크가 걸린 숫자들을 하나씩 눌러보자.숫자를 누르면 no 파라미터를 통해 해당 숫자값이 전송되는 것을 확인 할 수 있었고 각각 위와 같은 결과가 나왔다. 마지막으로 3을 눌러보니 secret이라는 문구와 함께 속성이 id,no 이며 no=3의 id 값이 password라고 언급됐다.아마 DB의 테이블의 속성이 id,no 두 가지이며 우리가 구해야하는 password는 no가 3인 레코드의 id값인듯 하다. 결론적으로 password인 no=3의 id값을 구하는게 이번 문제의 목표가 될 것이다. no=3의 id값을 구하기 위해서는 blind sqli를 진행해야 하는데 사실 딱봐도 no 파라미터를 이용해야..

webhacking.kr

[webhacking.kr] old-08

문제에 접속하니 "done!" 라는 문구와 함께 소스가 주어져있다. 소스를 봐보도록 하자. 소스코드를 분석해보자. 1. 클라이언트의 브라우저, os 정보를 가져와 공백제거 후 $agent 변수에 저장(2번 줄)2. 클라이언트의 ip 주소를 가져와서 $ip 변수에 저장(3번 줄)3. $agent 변수에 "from"이 포함되어있으면 프로그램 종료(4~7번 줄)4. chall8 테이블의 id 속성의 레코드 갯수를 가져온 후 $count_ck 변수에 저장 (10번 줄)만약, $count_ck 값 즉, 카운팅 갯수가 70이상이면 chall8 테이블을 삭제 (브루트 포스 방지용 인 것 같다.) (11번 줄)5. 클라이언트의 http_user_agent 정보를 가져와 그 정보에 해당하는 id 속성값을 가져와 최종적으..

webhacking.kr

[webhacking.kr] old-07

문제에 접속하니 Admin page 가 나타났다. auth 버튼을 눌러보니 "access denied" 가 뜨는 것을 확인 할 수 있다.이번문제는 admin page에서 admin이라는 것을 버튼을 눌러서 인증을 해내는 것이 목표가 될 것 같다.다음으로 소스를 봐보자. 소스를 간단히 분석하면 다음과 같다.1. "val" 라는 파라미터의 값을 받고 $go 변수에 저장 후 5번줄을 통해 그 값을 정규표현식을 이용하여 필터링 검증을 받는다. (2,5번줄)2.  rand(1,5)를 통해 1~5 까지 숫자중 랜덤값을 받고 if문으로 들어간다. (7~22번줄)3. 들어간 if문의 sql 쿼리를 실행하고 그 결과(레코드)를 $data 변수에 넣는다. (8~22번줄)4. $data[0]  즉, 결과로 받은 레코드의 l..

keyme
'sql injection' 태그의 글 목록 (3 Page)