XCTF实训平台GCTF-2017---SQL注入简单writeup[原创]

XCTF实训平台GCTF-2017---SQL注入简单writeup[原创]

时间:2017-08-29 作者:zhankehua 评论:0 点击:4684 次

题目内容参见XCTF实训平台,网址:http://oj.xctf.org.cn/web/login/?next=/

2017-08-29_144324.jpg


题目网址为:http://218.2.197.232:18004/

题目已经明确告诉我们,网站使用了WAF,需要我们绕过WAF进行SQL注入。

打开网站随便输入一些正常的信息,可以看到提示。(注:我们在注入之前要尽量收集尽可能多的信息)。

2017-08-29_145346.jpg

这个提示,目前来讲,对我们作用不大。

我们再通过代理拦截,看看服务器还返回了哪些信息。

2017-08-29_145644.jpg

这里告诉我们,WAF对SQL,XSS进行了过滤,或对特殊这符进行了替换。那我们就进行测试一下,哪些字符被过滤或拦截或替换了呢?

在这里我插入一个小插曲,作为记录。本次测试,发现了以往从没注意过的问题,在form域中输入经过编码的内容,在服务器端是不会被解析的(不知为什么)。请看本题的示例:

2017-08-29_150456.jpg

看到了没有?我在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中输入此内容,那就不一样了,会被解析的:

2017-08-29_150743.jpg

好了,我们继续进行测试吧。我们现在要来测试哪些关键字被过滤了。

2017-08-29_150937.jpg

说明select被WAF过滤。经过多次测试,select ,or, and,union,delete,from等关键字被过滤。这是针对SQL注入的。那针对XSS又做了哪些安全措施呢?

我们现在就对符号进行测试,分别输入<>+'等符号,看看测试结果

2017-08-29_151422.jpg

经测试发现“<,>"左右尖括号均被过滤掉,“+”号变成了空格。那现在怎么办呢?SQL注入和XSS注入的防范都不错,要是把这两都结合起来,还是有漏洞可用的。

你既然过滤了关键字,那我是否可以使用"<"符合把关键字分开不就可以了吗?例如:sel<ect。这时,WAF会去掉“<"符号,不就变成了select了吗?

经过多次测试发现,O<R会变成AND,而小写的o<r会变成or. 测试时,空格就使用”+“号吧。

2017-08-29_152238.jpg

看到了吗?我们成功绕过 了WAF,现在的任务就是构造SQL语句了。上图中的语句已经很明显了,是要查出所有的用户信息,但为什么不显示 呢?那我们就想办法弄个出错信息出来。最常用的就是union语句了,那就先试这个吧。

2017-08-29_152651.jpg

还是没有什么可用信息,那就减少union select后面的字段数试试

2017-08-29_152846.jpg


到了这里,好像还是没有获取flag,我们看看网页源码是否有提示呢(这时再没提示,真的无法做下去了,我试好N多种办法,包括使用limit等)。

还真有提示:

2017-08-29_153113.jpg


那就按提示做吧。这里的意思是说,返回的结果中的salt字段内容要全等于"OOORRR”,OR又是关键字,会被过滤,同进,使用o<r,只能是小写。那 怎么办呢?很好办,就先小写,然后用mysql的upper函数不就可以了。

2017-08-29_153453.jpg


结果出来的,就是 GCTF{euj2jtXRxhRe6FNyRpxkVpRf}


已有 4684 位网友参与,快来吐槽:

发表评论

必填

选填

选填

◎欢迎参与讨论,发表您的看法、交流您的观点。