• 三步法搞定CTF中的SQL注入题型


    三步法:

    一、找到注入点

    二、Fuzz出未过滤字符

    三、构造payload/写脚本


    例题1

    打开题目:

     

    第一步,寻找注入点。

    输入用户名123456,密码123456,返回结果username error

    输入用户名admin,密码123456,返回结果password error

    输入用户名admin,密码admin,返回结果password error

    (根据提示已知这是道注入题,所以可判断注入点在用户名)

    第二步,fuzz出未过滤字符。

    fuzz后,发现%返回结果不同

     

     看到sprintf函数,我们想到php的字符串格式化逃逸漏洞,这个漏洞导致的结果是会将%1$/’变为

    此时我们再尝admin%1$’ and 1=1%23,结果返回了username error!

     

    根据之前测试,and 1=1返回password error!才表示成功。猜测应该是过滤了and,我们再尝试一下admin%1$’ or 1=1%23(这里可以再fuzz一次),执行成功了。

     

    第三步,构造payload/写脚本。

    本题未过滤其他字符,剩下的就是盲注了,脚本大家根据题目自行编写,最终拿到flag。


    例题2

    打开题目:

     

    第一步,找到注入点。

    在搜索框输入1,返回you are in...

     

    在搜索框输入2,返回you are not in...

     

    由此判断是盲注,注入点是id=1处。

    第二步,fuzz出未过滤字符。

     

    这些是被过滤掉的(空格也被过滤了),or没有被过滤,我们尝试输入1'/**/or/**/'1'='1

     

    明明没有过滤掉or,应该是后端给过滤了,尝试双写绕过:1'/**/oorr/**/'1'='1,还是you are not in...,再用%0a代替/**/(即空格)

     

    虽然没显示you are in,但是应该是注入成功了。

    第三步,构造payload/写脚本。

    剩下的就是盲注了,大家根据题目自行编写就好了,最终拿到flag


    总结:

    此类题目的难与易主要在于寻找注入点,对于难一点的题目,出题人会把注入点藏得很隐蔽,需要大家不断地尝试,细心地去寻找。

  • 相关阅读:
    在 macOS High Sierra 10.13 搭建 PHP 开发环境
    给你的网站免费配置上 HTTPS 证书
    将 MacOS 默认的 PHP 版本升级到 7.*
    System.Data.SqlClient.SqlException: 'Incorrect syntax near 'OFFSET'.
    IIS7/8 HTTP Error 500.19 错误 0x80070021 错误代码:0x8007000d
    http error 502.5
    信用卡逾期了怎么办 ?逾期记录“修复”的两大原则
    APP多开教程
    lua调用不同lua文件中的函数
    Lua 用指定字符或字符串分割输入字符串,返回包含分割结果的数组
  • 原文地址:https://www.cnblogs.com/paperpen/p/10648240.html
Copyright © 2020-2023  润新知