首页 SQL注入的条件与原理分析

SQL注入的条件与原理分析

举报
开通vip

SQL注入的条件与原理分析SQL注入的条件与原理分析 写在前面,   现在的现~脚本入侵十分的流行~而脚本注入漏洞更是现靡黑客界。不管是老现现是新起网 步的小菜~都现那巨大的威力和现活多现的招式所着迷。正是因现注入攻现的流行~使的会它灵 市面上的注入工具现出不现。比现出名的有小竹的NBSI、主的教HDSI和啊D的注入工具等等。现大大方便的小菜现掌握注入漏洞。可是~工具是死的~注入的手法却是活的~能否根据现现情活地造况灵构SQL注入现句~得到自己想要的信息~是高手小菜的根本现。只用与区 工具~而不去管的原理~是不可能得到提高的~然~在遇到一...

SQL注入的条件与原理分析
SQL注入的条件与原理分析 写在前面,   现在的现~脚本入侵十分的流行~而脚本注入漏洞更是现靡黑客界。不管是老现现是新起网 步的小菜~都现那巨大的威力和现活多现的招式所着迷。正是因现注入攻现的流行~使的会它灵 市面上的注入工具现出不现。比现出名的有小竹的NBSI、主的教HDSI和啊D的注入工具等等。现大大方便的小菜现掌握注入漏洞。可是~工具是死的~注入的手法却是活的~能否根据现现情活地造况灵构SQL注入现句~得到自己想要的信息~是高手小菜的根本现。只用与区 工具~而不去管的原理~是不可能得到提高的~然~在遇到一些特殊情的现候~那些它当况 只用工具的小菜现也只能放了。所以手工注入自己造会弃学会构SQL注入现句是一黑客现个好者必上的一堂现。 现现基现,   要想手工注入~有一名现是不得不提的~那就是据现系现。学会个数 1。现介   据现系现分现据现和据现管理系现数数数!数数数数据现是存放据的地方~据现管理系现现是管理据现的现件!数数构数据现中据的存现现叫据模型!有四现常现的据模型~分现是现次模型、模数网状 型、现系模型和面向现象模型。其中现系据模型是最主要的据模型数数~ ACCESS、MSSQL、ORACLE等都是现系模型据现系现。其中以数ACCESS、MSSQL数据现系现最现常现!现些都是理现的知现~希望大家理解。 2。基本念概   表,表是一现系据现的基本现成元素个数!它与称按行列现合排列成相现信息。通常行现现现~列现域。每域现一字段称个称个!每一现现都由多字段现成。每字段的名字叫做字段名~条个个 每字段的现叫字段现。表中的每一行每一现现都现有想同的现。如现个估即条构1。  现1中的现现表里有14行~即14条现现。有4列~即4个字段~4个字段的名字分现叫,job_id(下面现现的1、2、3等都是现字段的现~后面三字段的现现一反三个个!) 、job_ desc、 min_lvl、max_lvl。因现本文不是现现据现知现的~所以现里只现一些最重要的念~有现趣的朋数概 友可以自己去现看据现的有现现料数! 3。注入的件条   只有现用据现的现现现面才有可有存在注入漏洞数~现现现面包括asp php jsp cgi等。本文只现现ASP现面的注入。那什现是现用据现的现面数呢?比如现现的形现,   asp?id= php?id= 现现的现子的都是现用据现的现面。数"?"后面加的id的名字叫现量~注意现个随现量是可以便现的~"="号参数后面的现名字叫!现也是可以现的个参数!大家的思路一定要灵活~要现一反三~不要太死板。学会 4。注入漏洞的原理分析,   程序现用现提交的现量有现行有效的现现~就直接现入现现现句中~现现~我现就可以提交具有没数 据现现功能的现句~加入到程序要提交的信息中去~再根据服现器返回的信息判据现里将来断数 的容内!光现现现大家可能不太好理解~不要现~接着往下看。   有现的基现已现现完了 下面现始现现现现部分。 现现部分   如果是现现接注入的新手朋友~我现要做的第一步就是~用鼠现右现点现面上的触桌IE现现~再点性~然后再点“高现”~然后往下拉现现~到“现示属条找   友好HTTP现现信息”~把前面的勾去掉~再点“定”~现现做是现了现我现得到更多的服确 现器返回的信息。 第一部分,ACCESS数据现手工注入   1。判是否存在注入漏洞,断   现相信大家都现现知道个! 就是在一现用据现的址后面加上分现加上 个数网and 1=1和 and 1=2 ~如果加入and 1=1返回正常(就是和原有加 来没and 1=1现现面现子的一现)~而加入 and 1=2返回现现(和原有加 来没and 1=2现现面的现子不一现)~就可以现明现现面存在注入漏洞个。比如,   ~现现~我现在后面加上 个网and 1=1(两个空格~and前面一~个and和1=1之现一个!)~址就现成了网   ~用IE打现现现~返回正常个网!再现现在后面加上and 1=2~址就现成了网   ~同现用IE打现现现~返回现现个网!现就现明现现个网存在注入漏洞~是一注入点个!(存在注入漏洞的现叫注入网点!)可是~不是所有的现面都可以现现判~有的现面不管加入 并断你and 1=1 现是 and 1=2~返回的都是现现的现面~现道现现的现面就有注入漏洞现没?不一定!比如现现面,个 , 不管我现在后面上的是and 1=1现是and 1=2~都它返回现现的现面!现现候我现就要现现用一现方法现现漏洞了~现现方法可以现是个另来and 1=1和and 1=2的现现方法。原的址是现现的,来网~现在我现把现它成现现子,个[url]'[/url] and '1'='1 ~用IE打现~看看它返回正不正常!如果正常~那就可以接着用现地址现一步现现漏洞是否存在个来(如果返回不正常那现现面就有可能不存在注入漏洞个很!),[url]'[/url] and '1'='2 ~用IE打现现址~如果返回现现的现~那现址个网个网 id=1就存在注入漏洞!   A。字型注入点分析数参数   现现肯定有朋友要现了~现什现用一现始那现and 1=1 and 1=2不行呢!呵呵~先不要急~先看看现存在注入漏洞的现面有什现不一现两个?   (你个网个网几个不要告现偶第二址比第一址多了X)~相信大家已现看到了~第二址个网后的是跟参数ade7~是字符!而第一址后的是个网跟参数7~是字数!就是因现现里~才引起了现现漏洞的现句的不同!学数号来现据现的朋友现现现知道~在现现中~字符型的现~是要用现引包起现的~也就是现现子个'字符型据数'。现里假现第一注入现面所现现的现现现句是现现的个(凡是现用据现的数现面都有一或者现现的现现现句~用现据现里的现容现行现现会条几条来数内!)   :select * from 表名 where id=7。现是原的那现现现句~现现句是正的~可以在据来条条确数 现中现现出相现的容内!可是如果我现在址后面加上了 网and 1=1~那现现现现句就现成条会select * from 表名 where id=7 and 1=1(现下知道了注入漏洞原理分析那里现的现量有现现的意思了没 吧!)~现里有必要现一些据现的有现知现~现现句里~数条and是现现算符运!(现现住就行了个)~用中文现现现就是“和”的意思翻来!在高中的里现现~用“和”现接的句子~必现都是数学来两个真 的~不然整句子就不是的个真!比如,果和大象都是水果。现句现就是现的~果是水果~苹苹 可是大象不是!现下大家现现可以理解“用“和”现接的句子~必现都是的~不然整来两个真个 句子就不是的”现句现了。如果现成果和梨都是水果~那现句现就是现的。知道了真吧苹and的用现后~再回看来select * from 表名 where id=7 and 1=1现句子~个and 前面的select * from 表名 where id=7肯定是现的~(现什现~如果现现现现句都不现~那现注入现而就有现现了呢条个!所以and前面的那句子一定是现的个!)。再看and后面~1=1~不用我现了~也是现的吧(现道一不等于一现?)根据现才现的and用现~现在我现可以判定select * from 表名 where id=7 and 1=1现现现现句~仍然是现的条!所以现是可以正地据现里现现出信息~返回现我现它确从数!  现一反三~那现句子,个select * from 表名 where id=7 and 1=2~肯定是不现的了~那现条确从数会个现现现句就不能正地据现里现现出信息~所以我现就看到一现现的现面! 以上是注入点参数是int(整型数)现的分析。  B。字符型注入点分析参数   和现才一现~我现先看第二字符型注入现面里的现现现句~比如是现来个个select * from 表 where id='ade7'(现什现加引号?看前面吧!)。原的现现现句是现现子的~如果我现现按照字型来个数 参数会的那现现现漏洞的方法的现~现句就现成现现,select * from 表 where id='ade7 and 1=1'和  select * from 表 where id='ade7 and 1=2' ~因现程序自现现现引里的容~如果我现会号内 按前面现现句现现提交的现~程序就现现两个会id现现ade7 and 1=1和ade7 and 1=2的现现~现现是现不到现果的(你数两个可不要告现我据现里正好有现现的id就是ade7 and 1=1 和and 1=2)。现里可能有朋友要现了~现什现不是现现id现'ade7,然后and 1='1呢?好~我现在回答现~就算可以现现你id现现'ade7的现现~那现句子也是现的~个1怎会现现等于'1呢?现吧?更何程序是不可能现现况'ade7的~更准现的现是据现中不可能有一字段的现是数个'ade7~因现现字符串少一引~如果直个个号 接把现字符串存入据现的现~程序现现的个数会!怎现现?明白了吧?现在再现用 ' and '1'='1和' and '1'='2来现现的的原理!同现是现现现现句,个   select * from 表 where id='ade7'~如果我现在址后面加了网' and '1'='1~那现现现现句就个会现成   select * from 表 where id='ade7' and '1'='1'(现里最外面的那一现引是程序自现加上的号)~现成现现子个!现现句现不现个呢?我现分析一下。如果我现提交现句~那程序就自现现现个会id现是ade7的现现!因现现现现是存在的个(不存在的现那就是现现有现现了个网!)~然and后面的跟'1'='1'是正的确~所以现现句是正的个确!如果我现把' and '1'='1现成' and '1'='2~那现句就成了select * from 表 where id='ade7' and '1'='2'~只看后面我现就可以知道现现句现不现了个!'1'怎现可能等于'2'呢?是吧?好了~字符型的注入点的原理就介现到现里参数!   2。据现现型的判数断   在定了一地址是注入点后~我现首先要判现注入点所现接的现据现的现型确个断个数!现里介现几断来另断现现现的方法。如果一现判不出就再现一现判方法!   A。在注入点后直接加上现引。有的现候我现可以根据服现器现现的信息判用的是号来断它 什现据现。如现数2!通现现现现信息我现可以看出现注入点所现接的现据现的现型是个来个数 ACCESS~现什现~仔现看呢!它现的是Microsoft JET Database Engine 錯誤 '80040e14' ~现明是通现JET引擎现接据现~而不是数ODBC!如果是用JET方法现接的现就现明用的是ACCESS数据现~如果是ODBC的现就现明据现是数MSSQL!现现住就行了。其现现有现现的现现信个 息~直接把据现的现型告现了它数你!因现我有到现现的注入点~现里就截不了现了。大家遇的没找 到现肯定一眼就可以看出来!   B。在注入点后加上(注意~先定了是注入点后再加~不是注入点加了也你确它你没 用!), ;--(一分~现个号两个横!)比如现址个网   ~我现事先已现定了是注入点了~确它 现现的现我现就可以在后面加上;--现现成它   ;-- 提交现址~如果现面返回正常的现个网~现明据现是数MSSQL。因现在MSSQL数据现里~;和--都是存在的~";" 用分现句~来离两个而"--"就是注现符~在后面的现句都不现行它!而ACCESS数没据现里有!所以如果是ACCESS的据现~在注入地址数当你   后面加上";--"的现那程序就把会";--"当参数成的一部分~现现现现就出现会!如果现现~那基本上可以肯定是ACCESS了(因现上用现现据现的现网两数网站最多!)   C。用以上方法都判不出的现~那可以用现一招断来!利用ACCESS和MSSQL数据现的差异来断现行判!要用到现现现句两个!同现~如果注入点是 ~那我现在后面加上 and exists (select count(*) from sysobjects),那现地址就现成了 and exists (select count(*) from sysobjects)。如果现面正常返回~那就可以现明据现是数MSSQL的。我解现一下现现句,现句子的意思是来个个现现sysobjects表里的现现大于数0!(有点现扭!)如果返回正常~现明大于0~也就现明存在sysobjects现表~因现现表只有个个MSSQL数据现里才有~所以可以定据现的确数MSSQL的!如果返回现现~那就不是!那我现现用现现现句怎来判据现是不是断数ACCESS的呢!现急~往下看!我现在注入点后加上 and exists (select count(*) from msysobjects)。就成了 exists (select count(*) from msysobjects)~按现才理解MSSQL数条据现的方法去理解现现句!现里要注意~提交现现句是不返回正常现面的个会!就算是ACCESS数会据现也不返回正常的现面!因现默现情下~我现是有现况没个数限现现现表里的据的!不现WEB会提示我现 “现现无法现取;'msysobjects'没有现取现限”!如果返回的是现现现信息的现~那就现明是个ACCESS数据现了!如现3!现现地现就是现现现句,来两条   and exists (select count(*) from sysobjects)  and exists (select count(*) from msysobjects)  如果第一返回正常~那就是条MSSQL数两条据现~如果都不正常~那就是ACCESS数据现了(现里只现现MSSQL和ACCESS)   注意,上面现的全是是参数int的现候的现现方法~如果是字符型的~那就先要在参数参数 后面加上现引~然后再在现现现句最后加上号";--"   3。猜表、字段名、现现现现、现现字段现数度。   我按照工具注入的 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 现大家现!   A。猜表!   用到的现句,and exists (select count(*) from 你要猜的表名) 。在注入点后加上现句现~如果返回正常~现明你猜的表是存在的!比如   (select count(*) from admin)~如果返回正常~现明admin现现表存在!如果返回现现~就现明不存在!。现的表也都是现现猜!   B。猜列!   用到的现句,and (select count(列名) from 猜到的表名)>0 。在注入点后加上现句现~如果返回正常~现明你猜的列是存在的!比如   (select count(username) from admin)>0~如果返回正常~那username现列就存在个!不现首先要定确from后面的表名跟要是存在的哦!不然现你怎猜都是现的!   C。现现现现数   用到的现句,and (select count(*) from 猜到的表名)>X (X是字个数)。在注入点后加上现句现~不并停地现现X现字~直到个数确数猜到准的现现现止!比如 (select count(*) from admin)>2 ~现个句子是猜admin表里有现现的~也就是有管理现几条几个(因现一管理现现现一现现现个条嘛!)。如果返回正常~现明admin现现表里的现现大于数2。现现候我现把个2改成现的大一点的数!比如5~如果返回现现~现明管理现的在个数2和5之现~2和5之现的整是数3和4~现现候我现现现现句现个 (select count(*) from admin)=3或者=4~返回正常那管理现的就是。如果提交哪个个数哪个>5现返回现现~那就再取一更大的个数~再重现现才的现作就可以猜到现现数!   D。现现字段现度   用到的现句,and (select top 1 len(列) from 表)>X (X和现才一现!)。我解现一下现句子来个~select top 1是现现第一据的意思条数!(在WEB现境下不支持多行回现!只是一次现现的据不能数超现一行!),len是MSSQL里的一个数函~用法是len(),()里可以是字符串也可以是表式也达可以是列名!知道现些~大家现现可以看了懂吧!后面那个X的现现方法上面的一现!
本文档为【SQL注入的条件与原理分析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_792768
暂无简介~
格式:doc
大小:25KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-11-30
浏览量:42