• 访问
    [ciscn2019]web复现(部分)

  • 随便测试
    猜测后端逻辑

    select * from table where id = $input;
    

    当结果为1时,返回
    [ciscn2019]web复现(部分)

    当结果为0
    [ciscn2019]web复现(部分)

    语法错误
    [ciscn2019]web复现(部分)

  • 尝试bool盲注

    • 构造payload
      (select 1)/1
    • 有waf,直接fuzz
      [ciscn2019]web复现(部分)

    为什么会存在另外一种语法正确,可以返回值,但不是返回1
    [ciscn2019]web复现(部分)
    发现是 ~ ! 和@符号,今后这个trick说不定用的上

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

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

[ciscn2019]web复现(部分)

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

写脚本的时候,发现一直失败。开始不知道为什么,我就使用代理,转到bp查看
[ciscn2019]web复现(部分)
原来是requests库访问时,采用的content-type是url-encode,导致原本的payload中已经进行了url编码字符又编码了一次,而服务器端只解码一次,总而导致目标字符回车,到sql中还是%0a,致使了这次错误。
还有对proxies的使用

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

[ciscn2019]web复现(部分)

最终也是得到了期望。

相关文章:

  • 2022-12-23
  • 2021-08-03
  • 2022-12-23
  • 2022-12-23
  • 2021-07-10
  • 2021-09-06
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-06
  • 2021-12-16
  • 2022-12-23
  • 2022-12-23
  • 2021-06-12
  • 2022-12-23
  • 2021-12-05
相关资源
相似解决方案