zoukankan      html  css  js  c++  java
  • 《网络攻防》 第十二周作业 SQL注入

    SQL注入实践

    1.打开seed虚拟机,使用命令sudo service apache2 start启动apache,发现一条提示,意思就是不能可靠地确定域名,如图

    即使右下角标着OK,但我还是不放心,但是,别人配置好的环境,不可能一上来就出问题啊!提示说用回送地址访问服务器,我就想,没域名也没关系,有ip就行了,反正发明域名的原因就是ip不好记,直接用ip皆可以了,然后,果然是可以的。

    2.关闭对抗措施,建议使用sudo gedit php.ini,gedit有图形化,sudo是为了有权限保存。

    SELECT语句注入

    题目要求是在不知道用户名密码的情况下,利用SQL注入漏洞登录进系统。
    解决思路

    1. 初步的想法: 题目中给了包含SQL语句的登录源码,利用SQL注入的基本原理(教材P446-447),用OR+永真式通过用户名认证的检测,密码认证需要先经过MD5,我就想找到一个经过MD5哈希后内容为OR+永真式的字符串。
    2. 答案的做法: 答案的是在用户名输入ted'#,密码空着就行,ted是一个已经存在的用户名,用单引号结束这个字符串,用#转义掉后面的语句。获取用户名也很容易,直接点击memberlist就可以看到用户列表。
    3. 看了的答案之后的想法: 利用SQL中的注释,将后面的语句注释掉,替代#的作用,SQL中单行注释是--,后面最好加个空格,即输入bob'-- ,bob也是一个已知的用户名,经验证也是可以的。
    4. 一个新的发现: 只在用户名出输入单引号,会使这条SQL语句错误,或者其他使这条语句错误的方法,系统会报错并返回发生错误的源码即可得到题目中给出的源码,如图,

      也就是说,可以不用任何提示,就可以得到源码,并分析出漏洞。

    UPDATE语句注入

    题目要求在profile里面,在不知道其他人密码的情况下修改其资料。这个题没答案,只能自己做了。
    解决思路

    1. 找到注入点: ** 在可供我们填写的框中,有四类:邮箱、密码、个人资料、时间格式。系统会对邮箱进行格式验证,会对密码记性MD5处理,这两处肯定不行。个人资料会被直接存入,不构成SQL语句字段。前三处我试了下,果然都不行,只有最后一处时间格式**。
    2. 获取更新资料的SQL源码: ** 仿照SELECT注入的思路,在时间格式处输入是SQL语句产生错误的语句,等待其返回SQL语句源码,如图,

      返回的SQL语句如图,

      从这条语句可以看出,前面修改资料的各项也都是可以注入的(除了signature项),打脸了。那么就随便找个注入吧,结果发现,这些注入点
      对输入长度有限制**,只能改短注入语句。注入语句如图,6为ted的编号,可通过memberlist查到

      注意,实际的id编号是比在memberlist中大1的,ted在memberlist中编号为5,这点我是在错误语句中发现的,下图为我的memberlist截图,

      选取的注入点为Interest输入框,这样就好改前面的语句,而且该框允许输入的内容较长,填写如图,

      提示修改成功,没来的及截图,查看ted资料,修改成功,如图
  • 相关阅读:
    内置方法(item系列、__str__方法、__del__方法)
    POJ3436
    CF551B
    HDU1588
    HDU3117
    CF834D
    CF832D
    CF832C
    POJ1930
    POJ3666
  • 原文地址:https://www.cnblogs.com/yp1692/p/6867146.html
Copyright © 2011-2022 走看看