• 实验吧_简单的sql注入_1、2、3


    简单的sql注入1

    看着这个简单的界面,一时间没有特别好的思路,先输入一个1',发生了报错

    初步猜测这是一个字符型的注入,他将我们输入的语句直接当成sql语句执行了,按题目的意思后面肯定过滤了很多注入语句,我就先来尝试一些基本的语句

    难道把union select都给过滤了?一阵绝望后接着试,试了好多后完全没思路

    接着大概就是传说中的运气吧

    这两个现象让我猜测过滤的是两个空格以及空格中间的字符串,绕过空格有好多方法:+,/**/,%0a,这里我用/**/代替空格构造一个查询语句:

    拿到数据库,接下来就是常规的注入语句,具体可见之前写的注入关

    嘿嘿,你以为是常规语句就能解决的,怕不是活在梦里

    经过一番测试,table_schema都被和谐了,这还怎么玩,突然想到之前有个字符串拼接的方法赶紧来试试

    好像并没有什么卵用,算了,去看wp吧。

    后来发现原来要把limit以及后面的东西都给去掉,这个我实在是不知道原因,请知道的大佬招呼一声。

    出现了flag表,继续注入

    貌似column_name也被和谐了,确认之后确实是的,还是老方法绕过,发现还有东西被过滤,试了一试是information_schema.columns,再绕一次

    flag就是我们想要的字段啊

    太累了,但也学到了不少东西

    简单的sql注入之2

    瞎试一通后发现还是过滤了空格嘛,同样的手法还能连用两题的啊,继续深入

    气死了,database()被过滤了,那就查所有的数据库

    还是熟悉的配方,熟悉的web1,继续走

    又让我找到了flag表,继续

    最后一步

    跟上一题一模一样,跟捡的一样。

    简单的sql注入之3

    一开始老套路先给个1'肯定是会报错的

    先拿个基于时间的盲注语句试试水

    返回了一个don't,尝试了语句中的每个指令,原来是sleep()被过滤了

    突然想到了一开始看到的报错信息,那就再试试报错注入

    又过滤了floor()函数,我就知道不会这么简单

     经过1=1与1=2的对比,我猜测当后面的sql语句成功执行就会返回hello,否则就无回显。

    这就跟基于时间的盲注一个原理么。原理猜到了,但由于对数据库命令并不熟,我还是去查看了wp。

    原来这边除了上面这点还要利用一下报错:

    ?id=1' and (select count(*) from 表名)>0 %23

    表名不存在时,报错

    由此我们得知数据库名为web1,

    接下里跑表的语句还是?id=1' and (select count(*) from 表名)>0 %23

    这里因为我没有表名字典,所以也没啥可跑的,求表哥们赏我一份字典吧

    只能简单的拿?id=1' and (select count(*) from flag)>0 %23测试一下,返回了hello说明flag表存在

    猜列的手法如出一辙

    ?id=1'union select 列名 from flag %23可以拿个字段字典放burp里跑,我这里还是进行简单的测试

    ?id=1'union select flag from flag %23后返回了hello,说明存在flag列

    接下来就是最重要的一步——猜字符

    ?id=1'and ascii(substr((select flag from flag),1,1))=ASCII%23原理就是这条语句

    对ASCII码进行爆破,值从30到127

    这里贴上我参考过的大佬的wp

    【实验吧】CTF_Web_简单的SQL注入之3

  • 相关阅读:
    软件工程实践第三次作业——原型设计
    第三次作业补充
    软件工程实践之词频统计
    软工实践第一次作业
    B*树索引结构和内部管理(转)
    MySQL索引背后的数据结构及算法原理(转)
    Java编程军规
    差分隐私学习三:实现机制
    万能头文件#include <bits/stdc++.h>
    微信小程序-flex布局中align-items和align-self区别
  • 原文地址:https://www.cnblogs.com/Ragd0ll/p/8529402.html
Copyright © 2020-2023  润新知