sql injection

webhacking.kr

[webhacking.kr] old-53 (sqli -> procedure)

문제에 접속하니 소스만 있어서 바로 소스를 분석해봤다. 1. answer 파라미터 값이 $hidden_table과 같으면 문제 클리어 2. val 파라미터에 select , by 가 들어가면 프로그램 강제종료 3. sql 쿼리를 실행해서 val 값이 $hidden_table 이라는 테이블에 존재하면 화면에 출력 결론적으로 문제를 해결하기 위해서는 쿼리가 실행되는 테이블의 이름($hidden_table)을 알아내야 한다. DB에서 테이블 이름에 접근하기 위해서는 메타데이터 영역에 접근해야 하는데 문제는 select를 사용할 수 없어서 메타데이터에 접근할 수 없을 것 같다. 그렇다면 어떻게 해야 테이블 이름을 알아낼 수 있을까?? 여기서는 테이블 이름을 알아낼 수 있는 다른 방법인 procedure 함수의 ..

webhacking.kr

[webhacking.kr] old-50 (sqli → 주석)

문제분석 & 풀이 sql inejection 문제다. 간단한 로그인 창이 구현됐다. 코드를 분석해보자.

webhacking.kr

[webhacking.kr] old-49 (sqli -> hex)

문제분석 & 풀이 이번 문제는 sql injection 문제인 것 같다. 소스를 보고 분석해보자. 1. lv 파라미터 값을 받고 정규표현식으로 검증하여 select , or , and , ( , ) , limit , 콤마 , order , cash , 공백 , 탭 , ' , " 이 들어갈 경우 프로그램을 강제종료한다. (2~4번줄) 2. 정규표현식 검증을 무사히 넘어간 경우 sql 쿼리를 실행하여 id 값을 받아온다. (5번줄) 3. id값이 "admin"이면 문제가 해결된다. 이번 문제는 이전에 풀었던 46번 문제와 유사한 문제인 것 같다. 1. lv=0 or id="admin" 1번 페이로드를 보내면 sql 쿼리의 where 문에서 lv=0이 무시되고 id가 "admin"인 레코드를 찾아서 "admi..

webhacking.kr

[webhacking.kr] old-46

이번 문제도 sqli 문제인 것 같다. 소스를 봐보자. 소스를 분석해보자. 1. lv 파라미터로 값을 받고 addslashes() 를 통해 이스케이프 처리 후 여러번의 치환과정을 거친다. (2~8번줄) 2. lv에 select , 0x , limit , cash 가 들어있으면 프로그램 강제종료된다. (9번줄) 3. sql 쿼리를 실행하여 id, cash 값을 받는다. 4. id가 "admin" 이면 문제가 해결된다. lv 파라미터는 이스케이프 처리됐기 때문에 ' , " 등은 사용할 수 없을 것이다. 그리고 치환 과정을 보면 공백, / , * , % 는 모두 없애고 있어서 이것 또한 사용할 수 없을 것이다. 소스 분석 2번에서 언급한 것들 또한 사용할 수 없다. 이제 위 사실을 참고하여 공격 쿼리를 완성해..

webhacking.kr

[webhacking.kr] old-45 (sqli → addslashes)

문제분석 & 풀이sql injection 문구과 로그인 창이 있다. 써있는 값 그대로 로그인 해보니 guest 계정으로 로그인 됐다. 아마 admin의 계정으로 로그인하는 것이 목표인 문제라고 예상된다. /i",$_GET['id'])) exit(); if(preg_match("/admin|select|limit|pw|=|/i",$_GET['pw'])) exit(); $result = mysqli_fetch_array(mysqli_query($db,"select id from chall45 where id='{$_GET['id']}' and pw=md5('{$_GET['pw']}')")); if($result){ echo "hi {$result['id']}"; if($re..

webhacking.kr

[webhacking.kr] old-39

문제풀이빈칸과 코드가 주어진다. ○ 코드 분석1) id에서 \\를 공백으로 ' 를 '' 로 replace3) id에서 15자리만 split4) SQL 쿼리를 실행해고 결과를 가져와 $result에 저장5) result[0]이 1이면 문제 해결 목표는 result[0] == 1 조건을 충족하는 것이다.  SQL 쿼리를 보면, select 문 결과는 항상 1이다. 즉, where문 조건만 DB에 저장된 데이터와 일치하면된다. where 문에서 and 기준 뒷부분을 보면 id='~~ 로 되어있는데 앞에만 ' 가 있을 뿐이고 뒤에는 ' 가 없다. 따라서 id로 ' 를 넣어서 쿼리문이 정상적으로 끝맺음이 되도록 완성해야한다. (안 넣으면 쿼리 에러 발생) 그러나 ' 를 '' 로 치환하기 때문에 일반적인 방법으로 ..

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