作家
登录

Node.js中遇到含空格URL的神奇“Bug”——小范围深入HTTP协议

作者: 来源: 2017-12-15 09:08:24 阅读 我要评论

  •         break; 
  •     case CR: 
  •         r->http_minor = 9; 
  •         state = sw_almost_done; 
  •         break; 
  •     case LF: 
  •         r->http_minor = 9; 
  •         goto done; 
  •     case 'H'
  •         r->http_protocol.data = p; 
  •         state = sw_http_H; 
  •         break; 
  •     default
  •         r->space_in_uri = 1; 
  •         state = sw_check_uri; 
  •         p--; 
  •         break; 
  •     } 
  •     break; 
  • 例如:

    • 碰到空格则持续保持当缁ご态开端扫描下一位;
    • 如不雅是换行符则设置默认 HTTP 版本并持续扫描;
    • 如不雅碰到的是 H 才修改状况为 sw_http_H 认为接下去开端 HTTP 版本扫描;
    • 如不雅是其它字符,则标明一下 URI 中有空格,然后将状况改回 sw_check_uri,然后倒退回一格以 sw_check_uri 持续扫描当前的空格。

    在懂得了这个“黑科技”后,我们很快能找到一个很好玩的点,开启你的 Nginx 并用 CURL 请求以下面的例子一下它看看吧:

    1. $ curl 'http://xcoder.in:5555/d H' -v 
    2. *   Trying 103.238.225.181... 
    3. * TCP_NODELAY set 
    4. * Connected to xcoder.in (103.238.225.181) port 5555 (#0) 
    5. > GET /d H HTTP/1.1 
    6. > Host: xcoder.in:5555 
    7. User-Agent: curl/7.54.0 
    8. > Accept: */* 
    9. < HTTP/1.1 400 Bad Request 
    10. < Server: openresty/1.11.2.1 
    11. Date: Tue, 12 Dec 2017 11:18:13 GMT 
    12. < Content-Type: text/html 
    13. < Content-Length: 179 
    14. Connectionclose 
    15. <html> 
    16. <head><title>400 Bad Request</title></head> 
    17. <body bgcolor="white"
    18. <center><h1>400 Bad Request</h1></center> 
    19. <hr><center>openresty/1.11.2.1</center> 
    20. </body> 
    21. </html> 
    22. * Closing connection 0 

    怎么样?是不是发明结不雅跟之前的不一样了——它居然也返回了 400 Bad Request。


      推荐阅读

      黑客最无奈的渗透办法,人人都会的暴力破解

    黑客在渗入渗出一个网站时,受制于本身的黑客才能以及小我思维宽度,在想尽了一切办法后,却一无所得,最终就不得不走上了暴力破解这一条陆辜暴力破解的道理就是穷举法,其根本思惟是根据标题标部分前提>>>详细阅读


    本文标题:Node.js中遇到含空格URL的神奇“Bug”——小范围深入HTTP协议

    地址:http://www.17bianji.com/lsqh/39781.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)