웹해킹

Web Hacking/LOS

Lord of SQL Injection - iron golem

기본적인 Blind SQL Injection 문제인 것 같아 보이지만 참값을 확인할 방법이 보이지 않는다. 이전 문제들에서는 'Hello admin 이라는 문자열을 출력시켜줌으로써 우리가 전달한 query문에 대한 참값을 알 수 있었다. 코드 line 8 을 보면 myslqi_error() 함수를 사용하고 있다. 이 함수는 query 문에 오류가 있을 시에 해당하는 오류를 출력시켜주는 함수이다. 이것을 이용하면 될 것 같다. 어떤 오류를 출력시키는지 한 번 살펴보자. ?pw=' 위와 같은 query 문을 전달하였더니 아래와 같은 오류 메세지가 출력되었다. You have an error in your SQL syntax; check the manual that corresponds to your MySQ..

Web Hacking/LOS

Lord of SQL Injection - dragon

간만에 간단한 문제가 나왔다. id 바로 뒤에 주석이 있어 pw 단에 어떠한 값을 입력해도 무력화된다. MySQL 에서 주석 사용은 다음과 같다. 주석 설명 # 해당 라인을 주석화 -- 해당 라인을 주석화 /* */ 여러 라인을 주석화 그렇다. #은 한 줄만 comment(주석)화 한다. 따라서 줄바꿈 제어문자를 pw 입력값에 넣으면 될 것 같다. pw=%0a or id='admin'%23 하지만 위와 같이 넘겨주면 id='guest'가 우선적으로 처리되어 guest로 로그인된다. 앞에 guest를 무력화시키자. 간단하다. and 0 으로 거짓으로 만들어주면 된다. pw=%0a and 0 or id='admin'%23

Web Hacking/LOS

Lord of SQL Injection - xavis

형식은 기존의 Blind SQL Injection 과 비슷하다. pw 의 길이까지는 기존의 방식과 동일하게, 쉽게 구할 수 있다. 하지만 pw의 형식이 문제다. 기존에는 알파벳과 숫자의 조합들이었다. 알파벳과 숫자는 흔히 알고 있듯이 아스키코드로 변환한 값의 크기가 1-byte 이다. 즉, 8-bit 라는 소리이다. 혹시나 해서 pw 각 글자마다의 bit 수를 측정해보았다. import requests requests.packages.urllib3.disable_warnings() org_url = "https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php" header = {'Cookie': 'PHPSESSID='} session =..

Web Hacking/LOS

Lord of SQL Injection - nightmare

형식이 신기하게 바뀌었다. 일반적인 '#' 주석과 '--' 주석은 필터링 되어있다. 또한 pw의 입력값을 6글자 초과로 받을 수 없다. 싱글쿼터가 필터링되지 않기 때문에 pw의 ('') 를 탈출시켜야 한다. 탈출시키는 방법은 단순하다. pw=') 과 같이 탈출시키면 된다. 이제는 참값을 만들 차례다. SQL에서는 형이 다른 데이터를 비교할 때 '묵시적 형변환'이라는 것을 실시한다. 만약 문자열과 정수를 비교할 때에는 문자열이 0이라는 숫자로 형변환된다. 따라서 'abcd'=0 이라는 결과가 도출된다. 이와 같이 공백의 문자열에서도 이가 성립한다. 따라서 ''=0 이라는 결과도 도출된다. 이를 이용하면 pw의 값을 '참'이라는 값으로 넣어줄 수 있다. pw=TRUE 라는 결과가 query 문으로 전달되고,..

Lucvs
'웹해킹' 태그의 글 목록