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 |
Tags
- php
- 과제
- Cross Site Request Forgery
- sql injection point
- 로그인
- JWT
- cors
- Python
- MySQL
- csrf
- CTF
- XSS
- 웹개발
- file upload
- css
- union sql injection
- 모의해킹
- Los
- 쿠키
- sql injection
- blind sql injection
- Error based sql injection
- lord of sqli
- 로그인페이지
- Reflected Xss
- JS
- cookie 탈취
- 게시판 만들기
- lord of sql injection
- 세션
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 풀이 (0) | 2025.01.06 |
[Lord of SQL Injection] goblin 풀이 (0) | 2025.01.06 |
[Lord of SQL Injection] gremlin 풀이 (0) | 2025.01.06 |