![XCTF实训平台GCTF-2017---SQL注入简单writeup[原创] XCTF实训平台GCTF-2017---SQL注入简单writeup[原创]](http://www.itsec365.cn/zb_users/avatar/0.png)
XCTF实训平台GCTF-2017---SQL注入简单writeup[原创]
时间:2017-08-29 作者:zhankehua 评论:0 点击:4684 次
题目内容参见XCTF实训平台,网址:http://oj.xctf.org.cn/web/login/?next=/
题目网址为:http://218.2.197.232:18004/
题目已经明确告诉我们,网站使用了WAF,需要我们绕过WAF进行SQL注入。
打开网站随便输入一些正常的信息,可以看到提示。(注:我们在注入之前要尽量收集尽可能多的信息)。
这个提示,目前来讲,对我们作用不大。
我们再通过代理拦截,看看服务器还返回了哪些信息。
这里告诉我们,WAF对SQL,XSS进行了过滤,或对特殊这符进行了替换。那我们就进行测试一下,哪些字符被过滤或拦截或替换了呢?
在这里我插入一个小插曲,作为记录。本次测试,发现了以往从没注意过的问题,在form域中输入经过编码的内容,在服务器端是不会被解析的(不知为什么)。请看本题的示例:
看到了没有?我在username中输入的是%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%31%32%33%29%3c%2f%73%63%72%69%70%74%3e,服务器返回的SQL语句中name中的内容不变。就因为这个问题,我测试了好久。
那直接在URL中输入此内容,那就不一样了,会被解析的:
好了,我们继续进行测试吧。我们现在要来测试哪些关键字被过滤了。
说明select被WAF过滤。经过多次测试,select ,or, and,union,delete,from等关键字被过滤。这是针对SQL注入的。那针对XSS又做了哪些安全措施呢?
我们现在就对符号进行测试,分别输入<>+'等符号,看看测试结果
经测试发现“<,>"左右尖括号均被过滤掉,“+”号变成了空格。那现在怎么办呢?SQL注入和XSS注入的防范都不错,要是把这两都结合起来,还是有漏洞可用的。
你既然过滤了关键字,那我是否可以使用"<"符合把关键字分开不就可以了吗?例如:sel<ect。这时,WAF会去掉“<"符号,不就变成了select了吗?
经过多次测试发现,O<R会变成AND,而小写的o<r会变成or. 测试时,空格就使用”+“号吧。
看到了吗?我们成功绕过 了WAF,现在的任务就是构造SQL语句了。上图中的语句已经很明显了,是要查出所有的用户信息,但为什么不显示 呢?那我们就想办法弄个出错信息出来。最常用的就是union语句了,那就先试这个吧。
还是没有什么可用信息,那就减少union select后面的字段数试试
到了这里,好像还是没有获取flag,我们看看网页源码是否有提示呢(这时再没提示,真的无法做下去了,我试好N多种办法,包括使用limit等)。
还真有提示:
那就按提示做吧。这里的意思是说,返回的结果中的salt字段内容要全等于"OOORRR”,OR又是关键字,会被过滤,同进,使用o<r,只能是小写。那 怎么办呢?很好办,就先小写,然后用mysql的upper函数不就可以了。
结果出来的,就是 GCTF{euj2jtXRxhRe6FNyRpxkVpRf}
本文标签:
转载请注明出处: http://www.itsec365.cn/?id=35
已有 4684 位网友参与,快来吐槽:
发表评论