[ciscn2019]web复现(部分)


  • 访问

  • 随便测试
    猜测后端逻辑

    select * from table where id = $input;
    

    当结果为1时,返回

    当结果为0

    语法错误

  • 尝试bool盲注

    • 构造payload
      (select 1)/1
    • 有waf,直接fuzz

    为什么会存在另外一种语法正确,可以返回值,但不是返回1

    发现是 ~ ! 和@符号,今后这个trick说不定用的上

    最终发现空格可以由 %09 %0a %0b %0c %0d或者()进行bypass

  • 绕的时候,有个忘了替换,一直错,后来一看,发现是空格忘了转换。。

确实可以盲注了,直接写脚本

写脚本的时候,发现一直失败。开始不知道为什么,我就使用代理,转到bp查看

原来是requests库访问时,采用的content-type是url-encode,导致原本的payload中已经进行了url编码字符又编码了一次,而服务器端只解码一次,总而导致目标字符回车,到sql中还是%0a,致使了这次错误。
还有对proxies的使用

python大法好,要想修炼好,必须经常敲

最终也是得到了期望。