Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- css
- cookie 탈취
- csrf
- lord of sql injection
- 증적 사진
- file upload
- 로그인
- 웹 개발
- 보고서
- Los
- blind sql injection
- XSS
- Python
- 로그인페이지
- 모의해킹
- php
- 게시판 만들기
- 웹개발
- sql injection point
- 웹 해킹
- 과제
- union sql injection
- 보안 패치
- CTF
- 세션
- MySQL
- sql injection
- Error based sql injection
- 문제 풀이
- JS
Archives
- Today
- Total
Almon Dev
[Lord of SQL Injection] cobolt 풀이 본문
LOS 풀이
cobolt
풀이
1. 코드 분석
이번 문제는 GET 메서드로 id와 pw 파라미터를 입력하면 쿼리에 삽입이 되며
쿼리의 결과 id가 admin일 경우 문제가 풀립니다.
pw의 값을 md5로 해시화를 하고 있습니다.
$query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id'] == 'admin') solve("cobolt");
gremlin 문제와 똑같은 필터링을 하고 있습니다.
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
2. 쿼리 삽입
gremlin 문제에서 사용했던 연산자 우선순위를 이용하면 문제를 쉽게 풀 수 있습니다.
select id from prob_cobolt where id='admin' and 1=1 or '1'='1' and pw=md5('')
and 연산의 우선순위가 or보다 높기에 ()를 붙여서 해석하면 아래와 같습니다.
where ( id='admin' and 1=1 ) or ( '1'='1' and pw=md5('') )
where id='admin' or false가 되어 id가 admin인 값이 쿼리의 결과로 출력됩니다.
'웹 해킹 > Lord of SQLi' 카테고리의 다른 글
[Lord of SQL Injection] darkelf 풀이 (0) | 2025.01.06 |
---|---|
[Lord of SQL Injection] wolfman 풀이 (0) | 2025.01.06 |
[Lord of SQL Injection] orc 풀이 (2) | 2025.01.06 |
[Lord of SQL Injection] goblin 풀이 (0) | 2025.01.06 |
[Lord of SQL Injection] gremlin 풀이 (0) | 2025.01.06 |