天玄愤怒的说:「喂,你这小子,不要太过份了!」
此时云飞已经抓好数据了,指著屏幕,让天玄只得『气得向他道谢』。
宇成看著屏幕问:「云飞,这就是所谓的sql隐码攻击?」
云飞点头说:「是的,没有错!所谓的sql隐码便是利用程式写作和语法上的漏洞造成的意外结果。通常利用这种办法,可以创造出意想不到的效果!我以前和你说过,利用网页的参数传入非预期的值不算什么,而再上去,则是要懂得将对方主机的数据给取出来。」
宇成点头说:「嗯、嗯、我记得!前者的手法就像天玄一样,而后者的手法则和明昂一样厉害!」
天玄听了气得问:「喂!这是什么意思?为什么要把我和那混蛋扯在一起?」
云飞不理会天玄的愤怒继续说:「而sql隐码则是利用前者达到后者的技术!」
宇成听了问:「这又是非正规技术吗?」
云飞点头说:「没有错!因为是在正常手法之外的方式,所以是非正规技术!」
天玄大喊一声:「啊!!!!!」
宇成吓了一跳捂住耳朵骂道:「天玄,你没事喊那么大声做什么?」
天玄生气的说:「你们在那里讲些什么啦!我完全不懂啊!」
云飞用轻蔑的语气说:「小子,你不是想要学习技术吗?那就给我仔细的听啊!」
天玄暂时平息怒气道:「好吧!那你说,什么利用前者达到后者的是啥意思。」
云飞指著屏幕说:「你们看,我在用户名密码的框框里输入的不是正确的数据吧!」
宇成和天玄转头看著屏幕说:「嗯,这看起来很像是逻辑判断式嘛!」
云飞又打开一个网页说:「再看这个!这是一个网页利用表单元件将输入的数据传送到后端主机处理的范例,他会收集这两个puttype为text的输入项,然后透过foraction指定的路径传递参数。」
宇成点头表示明白这些,但天玄却仍不是很懂,这对他而言还是有点困难的。
云飞切换页面,换到传递参数到该路径的处理页面检视原始码说:「你们看,在这里有一些if判断式,它会判断这个用户名与密码是否符合管理者要素!其中一个变量rootid[result1]是利用回圈从数据库中读取每一笔用户名数据出来判断,当判断通过后再进入第二个判断式回圈读取数据库中的密码判断是否正确。」
天玄举手说:「等一等!如果是这样的话,输入那些逻辑判断怎么会通过?」
云飞问:「你看看or1=1的结果应该是true或false?」
天玄说:「喂,太瞧不起我了吧?谁都知道1=1啊!这结果当然是true!」
云飞点头说:「看来你还有点救!接下来,在判断式中假设用户名为paul而密码为qq则判断式的成立应该是当if用户名==&lso;paul&lso;以及if密码==&lso;qq&lso;对吧?因为在sql语法中单引号内括字元字串。」
天玄开始了解而说:「这样讲我当然明白!可是和or1=1又有何关联?」
云飞便说:「你看!假如我们输入if用户名==&lso;paul&lso;这里改成if用户名==&lso;xxx&lso;本来应该是错误的,因为没有xxx这个用户名在!可是若输入&lso;or1=1&lso;变成if用户名==&lso;xxx&lso;or1=1&lso;&lso;时,因为有一个『或』运算or在,就算没有用户名,但判断到『或1=1』时却会通过!我们知道and要两者都成立,而or只要其中一个成立,所以在某些情况下会通过检查。而若反过来输入数据被放在==之前则可以输入1=1or来变成if1=1or&lso;xxx&lso;==&lso;paul&lso;,同样判断到1=1就会通过了。」