考核复现
web
签到
源代码
base64解密
文件上传
先简单上传一个图片
这里的类型被限制了,只允许上传哈哈类型的,修改一下吧
上传成功
连接成功
好玩的PHP
前一部分用数组绕过,后一部分将c赋值,用data伪协议绕过file_get_contents()函数
构造payload:?a[]=1&b[]=2&c=abc&d=data://text/plain,abc
渗透的本质
扫一下
发现robots.txt
访问看看,没有什么用
接着看到附件,里面有些东西,应该需要爆破了
添加
添加附件里面的字典
这里注意如果页面都是一样的话,就需要我们添加正则
我们也可以下载到源码,这个也是可以扫描目录出来的
这句是进行一个url解码,在我们网页上输入网址位置也会进行一次url解码,代码中一句url解码 + 网页自带一句url解码
也就是我们需要编码两次
%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65
简简单单的sql
扫一下看看
得到login.php,访问可得
尝试一下
sqlmap跑一下
sqlmap -u http://172.16.17.6:8304/login.php --level 3 --dbs --batch
--level 3
: 选项--level
设置测试的级别。级别范围从 1 到 5,1 是最少的测试,5 是最深入的测试。级别 3 增加了测试的数量和深度。--dbs
: 这个选项告诉sqlmap
枚举并列出服务器上所有可用的数据库,一旦发现注入点。--batch
: 这个选项使sqlmap
在非交互模式下运行,自动确认所有的提示。这个选项适用于自动化脚本和批处理操作。
发现是UA头注入
爆数据表
爆列(user_agents)
爆字段,得出flag
crypto
签到
\u0062\u0032\u0036是一种Unicode编码形式
脚本也是可以的
unicode_text = "\u0032\u0036\u0032\u0033\u0033\u0039\u0033\u0030\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0031\u0033\u0030\u0033\u0039\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0031\u0033\u0032\u0033\u0030\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0031\u0033\u0030\u0033\u0034\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0039\u0033\u0030\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0035\u0033\u0031\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0031\u0033\u0031\u0033\u0035\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0035\u0033\u0030\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0039\u0033\u0030\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0036\u0033\u0038\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0039\u0033\u0039\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0031\u0033\u0031\u0033\u0039\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0039\u0033\u0030\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0031\u0033\u0030\u0033\u0036\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0038\u0033\u0039\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0034\u0033\u0038\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0039\u0033\u0030\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0036\u0033\u0038\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0031\u0033\u0030\u0033\u0038\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0031\u0033\u0030\u0033\u0037\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0037\u0033\u0037\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0038\u0033\u0037\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0039\u0033\u0030\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0031\u0033\u0030\u0033\u0036\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0037\u0033\u0038\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0036\u0033\u0038\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0037\u0033\u0037\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0031\u0033\u0032\u0033\u0030\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0039\u0033\u0030\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0037\u0033\u0031\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0038\u0033\u0035\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0035\u0033\u0031\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0039\u0033\u0030\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0038\u0033\u0037\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0037\u0033\u0033\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0031\u0033\u0032\u0033\u0032\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0038\u0033\u0039\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0038\u0033\u0034\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0038\u0033\u0039\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0034\u0033\u0038\u0033\u0062\u0032\u0036\u0032\u0033\u0033\u0036\u0033\u0031\u0033\u0062"print(unicode_text.encode("utf-8").decode("unicode-escape"))
262339303b26233130393b26233132303b26233130343b262339303b262335313b26233131353b262335303b262339303b262336383b262339393b26233131393b262339303b26233130363b262338393b262334383b262339303b262336383b26233130383b26233130373b262337373b262338373b262339303b26233130363b262337383b262336383b262337373b26233132303b262339303b262337313b262338353b262335313b262339303b262338373b262337333b26233132323b262338393b262338343b262338393b262334383b262336313b
接着转换
import htmlencoded_text = "ZmxhZ3s2ZDcwZjY0ZDlkMWZjNDMxZGU3ZWIzYTY0MDY2ZGVhMX0="decoded_text = html.unescape(encoded_text)print(decoded_text)
结果
ZmxhZ3s2ZDcwZjY0ZDlkMWZjNDMxZGU3ZWIzYTY0MDY2ZGVhMX0=
flag{6d70f64d9d1fc431de7eb3a64066dea1}
rsa1
分解n,这里的n会有三段的
import gmpy2
n = 703739435902178622788120837062252491867056043804038443493374414926110815100242619
e = 59159
c = 449590107303744450592771521828486744432324538211104865947743276969382998354463377
p =
q =
n1 = 782758164865345954251810941
n2 = 810971978554706690040814093
n3 = 1108609086364627583447802163
n = 322831561921859
e = 65537
phi_n = (n1 - 1) * (n2 - 1) * (n3 - 1)
d = gmpy2.invert(e, phi_n)
d = 0x509c42eb6aa8414d3b54864520d5138ba2af5107415695ebb1d35d35e1a3d7d407cea85cefc4ad5cae88030d3647f1aaccb89f89b64057e38804d37aed5e253f
print(d)
c =0xdc2eeeb2782c
m = pow(c, d, n)
print(hex(m))
rsa2
2018网鼎杯第3场- hafuhafu (生成pem)
pk = (25572000680139535995611501720832880791477922165939342981900803052781801299380515116746468338767634903543966903733806796606602206278399959935132433794098659859300196212479681357625729637405673432324426686371817007872620401911782200407165085213561959188129407530503934445657941975876616947807157374921539755157591354073652053446791467492853468641331291383821277151309959102082454909164831353055082841581194955483740168677333571647148118920605752176786316535817860771644086331929655259439187676703604894258185651165017526744816185992824404330229600417035596255176459265305168198215607187593109533971751842888237880624087,65537)
------ enc -------
DTlEiAKLE24m19es4TBWl4Uo2MvmQMEYqWBCFggWJlJSjCwl3fT9322ytgudiQW2raDh53e6t2ed
ygpFOP+MsAPXlU469rlmVng5JyDl0CF0ypevnaM5i+CvNT2mBoDadIYnPBVGMtj9HVVPDpMIgv5b
F9N5ddQS7JB21oDdQBdDLTkKvcSqegtjNFv04R8+yrqOMZYpzdCRRw0j/MMt2JefC6z36mjrTL85
A9EKlwKg5ydW7qELycfjBvzB/cwJ7mJ2I0xVPToa3sSLNDyddFttATwU6wmCa4XaWpTwVR/PfET2
FRj0p+8UwYSDdlLLh6gRUVURpT+2jc9zx/rhOw==
分解求出pq
p = 149930380465516707151079321019435489399072155945793735032334088844599773034021170995501688132861944516938448679935403246643441984203770825485165700862168437691254557323938150173733659070945061763789341407547559935070758242521126066900261360899379463301621378242061934281538210192731229473900396425739817670867
q = 170559166199281256887953076784727902849936084815549184550874370897326056825177365209113910954088389779180174518262922176726833811470419181874717574929460298509184863124213663255559781224744696195678069242025195218017449489985102637547369070225979448169459840545693721393354651993457943927480894225788038743661
[python](http://d.hatena.ne.jp/keyword/python) rsatool.py -p xxx -q xxx -e xxx -o pen.pem
接下来把密文单独复制出来命名为enc 然后对其进行base64解码,输出为flag.enc文件:
openssl enc -base64 -d -in enc -out flag.enc
解密:
openssl rsautl -decrypt -in flag.enc -inkey pen.pem -out flag.txt
好好玩的数字
from secret import flagprint(int(str(int.from_bytes(str(flag).encode(), byteorder='little') << 10000)[-175:]))\#5869664616626170192513728663983584426766596237982310139329834210718092192937488924265907900493527005037089718790706861823321759585618134585749438147181304267798081685394817024
-
首先,将
flag
转换为字符串(如果它不是字符串的话),然后使用encode()
方法将其转换为字节序列。默认情况下,encode()
方法使用 UTF-8 编码。 -
使用
int.from_bytes()
方法将字节序列转换为一个整数。byteorder='little'
表示使用小端字节序。小端字节序是指最低有效字节在前(即最低位的字节存储在最低的地址中)。 -
将前一步得到的整数左移 10000 位。这会大大增加这个整数的值,相当于在数字后面添加很多零。
-
将左移后的大整数转换为字符串,然后截取字符串的最后 175 位。这一步的目的是提取整数表示中的特定部分。
-
最后,将截取的字符串部分转换为整数,并将结果打印出来。
from gmpy2 import *
from Crypto.Util.number import *c = 5869664616626170192513728663983584426766596237982310139329834210718092192937488924265907900493527005037089718790706861823321759585618134585749438147181304267798081685394817024x = invert(pow(2, 10000), pow(5, 175))
m = c * x % (pow(5, 175))
print(long_to_bytes(m)[::-1])
pow(2, 10000)
计算 2 的 10000 次方。pow(5, 175)
计算 5 的 175 次方。invert(a, b)
计算a
在模b
下的乘法逆元,即找到一个数x
,使得a * x ≡ 1 (mod b)
。
通过这个操作,x
是 pow(2, 10000)
在 pow(5, 175)
下的乘法逆元。
然后将 c
乘以 x
,然后取模 pow(5, 175)
。这个操作逆转了之前的加密操作(即,左移 10000 位并截取了 175 位)。
最后,将整数 m
转换为字节序列,并逆序排列。这可能是因为在加密过程中使用了小端字节序,所以在解密时需要逆转字节顺序以还原原始数据。
reserve
babyre
在十六进制窗口Hex view中得到flag
flag{ca201ed0-9e07-11e8-b6dd-000c29dcabfd}
misc
easy_singin
直接解
flag{hahaha_singin_you_good}
流量分析1
用wireshark进行分析,并且导出http对象
发现666.zip文件
打开
1.txt和2.txt文件,发现1中有png的头部,6中有尾部,这说明6个文件可以组成一张png
png的头部为89 50 4E 47 尾部为AE 42 60 82
放入010editer,发现有一张二维码
Xjpg
1.根据提示“你会使用win10刷新快捷键吗”,想到f5隐写
2.用F5-steganography进行解密
kali里面安装
git clone https://github.com/matthewgao/F5-steganography
3.打开kali中的output.txt查看
4.pk头,把文件头改成zip文件的文件头
5.最后使用brainfuck解码