ํฐ์คํ ๋ฆฌ ๋ทฐ
๊ฐ์
์๋๋ก์ด๋์ Content Provider๋ "์ฝํ ์ธ ์ ๊ณต์ "๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ์ ์ฅ์ ๊ฐ์ ์ญํ ์ ํ๋ ๊ณต๊ฐ์ ๋ค๋ฅธ ์ฑ์ด ์ ๊ทผํ ์ ์๋๋ก ๋์์ฃผ๋ 4๋ ์ปดํฌ๋ํธ ์ค ํ๋์ ๋๋ค. ์ฃผ๋ก ํ์ผ ์์คํ ์ด๋ SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค, Web ๋ฑ์ ํตํด์ ๊ด๋ฆฌํ๋ฉฐ ์ฝํ ์ธ ํ๋ก๋ฐ์ด๋๋ฅผ ํตํด ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด๋ฌํ ์ฑ ๊ณผ ์ฑ ์ฌ์ด์ ๋ฐ์ดํฐ ์ ๊ทผ์ ๊ด๋ฆฌํ๊ณ ํต์ ํ๊ธฐ ์ํด "Content Resolver"๋ผ๋ ์ค๊ฐ์ ์ญํ ์ด ์กด์ฌํ๋๋ฐ ์ด๋ ์ฝํ ์ธ ์ ๊ณต์์ ์ฃผ์์ธ ์ฆ ์ด๋ํ๊ณ ์ ํ๋ URI๊ฐ ๋ฑ๋ก๋์ด ์์ด์ผ ๋ฉ๋๋ค.
*uri ํํ -> content://user_dictionary/test ๋ฑ
Content Provider๋ ์ปดํฌ๋ํธ ์ค ์ผ๋ถ์ด๊ธฐ ๋๋ฌธ์ Androidmanifest.xml์ ์ ์ธ๋ <provider> ํ๊ทธ๋ฅผ ํตํด ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ์ด ๋์ด์๋์ง ์ ๊ฒ์ ํด๋ณผ ์ ์์ต๋๋ค.
ํด๋น ์ทจ์ฝ์ ์ ํ์ธํ๊ธฐ ์ํด ๋์ ๋ถ์๋๊ตฌ์ธ "Drozer(๋๋ก์ )"๋ฅผ ์ฌ์ฉํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ตฌ์ถ ๋ฐฉ๋ฒ์ ํ๋จ์ ํฌ์คํ ์ฐธ๊ณ
๋๋ก์ ์ฝ์์์ ์ง๋จ์ ํ๊ณ ์ํ๋ ์ฑ์ "ํจํค ์ง๋ช "์ ํ์ธํ๊ฒ ์ต๋๋ค.
๋์ ๋ถ์์ ์ํํ๋ฉด ์๋จ์ Content Providers exported๋ผ๋ ๋ ธ์ถ๋ 1๊ฐ์ ์ฝํ ์ธ ํ๋ก๋ฐ์ด๋๊ฐ ์กด์ฌํ๋ ๊ฒ์ ๋ณด์ค ์ ์์ต๋๋ค.
๋งค๋ํ์คํธ ๋ด๋ถ์ <provider> ํ๊ทธ๋ฅผ ์ฐพ์์ ์ค์ ์ด ์ด๋ป๊ฒ ๋์ด ์๋์ง ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
Androidmanifest.xml ์ ์กด์ฌํ๋ <provider> ํ๊ทธ๋ exported="true" ์ค์ ์ ์ง์ ํด ์ค์ผ๋ก์จ ๋ค๋ฅธ ์ฑ์์ ์ ๊ทผ์ด ํ์ฉ ๋๋ก ์ค์ ๋์์ต๋๋ค.
์ธ ์ํ์ด ๋ฑ ํฌ์ ์ด๋ฆ์ ๊ฐ์ง ์ฑ ๋ด๋ถ์ ์ ๊ทผ ๊ฐ๋ฅํ URI ์ ๋ณด๋ฅผ ํ์ธํ๊ธฐ ์ํด ๋์ ์ค์บ์ ์ํํด๋ณธ ๊ฒฐ๊ณผ Accessible Content URIs: ์ด๋ฆ์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ ์ฃผ์๊ฐ ๋ํ๋ฌ์ต๋๋ค.
์ ์ฅ๋ ๋ด๋ถ๋ก ์ ๊ทผํด๋ณด๋ฉด ์ฐ๋ฆฌ๊ฐ ๋ก๊ทธ์ธํ๋ ์ฌ์ฉ์์ ID๊ฐ ์ํ์ค ์์๋ก ๋์ด๋์ด ์๋๊ฒ์ ๋ณด์ค ์ ์์ต๋๋ค.
run app.provider.query <URI์ฃผ์> --selection "'"
์ถ๊ฐ์ ์ผ๋ก ํด๋น DB์ SQL iNJECTION์ ์๋ํด๋ณผ ์๋ ์์ต๋๋ค. ์๋จ์ ๋ช ๋ น์ ํตํด ์๋ฌ ๋ฌธ๊ตฌ๊ฐ ๋ํ๋จ์ผ๋ก์จ ์ถ๊ฐ์ ์ธ ์ธ์ ์ ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ผ๋ ์ถ์ธก์ด ๊ฐ๋ฅํฉ๋๋ค.
run app.provider.query <URI์ฃผ์> --projection "* from SQLITE_MASTER where type='table';--")
์๋จ์ ๋ช ๋ น์ ํตํด ์ฌ์ ์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ ํ ์ด๋ธ ์ ์ด๋ฆ์ด ์ถ๋ ฅ๋๊ณ ์์ต๋๋ค.
run app.provider.query <URI์ฃผ์> --projection "*from names;--")
์ฐ๋ฆฌ๊ฐ ์์์ Contents Provider๋ฅผ ํตํด ์ ๊ทผํ ์ฌ์ฉ์์ ID๋ "names"๋ผ๋ ํ ์ด๋ธ์ ์กด์ฌํ๋ ์ ๋ณด๋ผ๋ ๊ฒ์ ํ์ธํ์ค ์ ์์ผ๋ฉฐ ์ด๋ฅผ ํตํด ์ ์์ ์ธ ์ฌ์ฉ์๋ ๋ชจ๋ ํ ์ด๋ธ์ ๋ ๋ ค๋ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์๋ ์์ต๋๋ค.
๋์๋ฐฉ์
Androidmanifest.xml์ ์ค์ ๋ <provider> ์์ฑ์ exported="false" ๋ก ์์ ํ์ฌ ์ธ๋ถ์ ๋ ธ์ถ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋๋ก ์ค์ ํ๊ฑฐ๋ ๋ณ๋์ ๊ถํ์ ์ง์ ํ์ฌ ์ฌ์ฉํด์ผ ๋๋ค.
'MOBILE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] Objection ์ฃผ์ ๋ช ๋ น์ด (0) | 2021.02.14 |
---|---|
[Android] Data Storage(Plain/Encryption) ์ทจ์ฝ์ (0) | 2021.02.13 |
[Android] Broadcast Receiver ์ทจ์ฝ์ (0) | 2021.02.09 |
[Android] Activity Component ์ทจ์ฝ์ (0) | 2021.02.08 |
[Android] Rooting ํ์ง ์ฐํ(Objection) (0) | 2021.02.07 |