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资料,修改成功,如图
  • 相关阅读:
    QFramework 使用指南 2020(二):下载与版本介绍
    QFramework 使用指南 2020 (一): 概述
    Unity 游戏框架搭建 2018 (二) 单例的模板与最佳实践
    Unity 游戏框架搭建 2018 (一) 架构、框架与 QFramework 简介
    Unity 游戏框架搭建 2017 (二十三) 重构小工具 Platform
    Unity 游戏框架搭建 2017 (二十二) 简易引用计数器
    Unity 游戏框架搭建 2017 (二十一) 使用对象池时的一些细节
    你确定你会写 Dockerfile 吗?
    小白学 Python 爬虫(8):网页基础
    老司机大型车祸现场
  • 原文地址:https://www.cnblogs.com/yp1692/p/6867146.html
Copyright © 2011-2022 走看看