[MRCTF]easy_RSA
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[MRCTF]easy_RSA相关的知识,希望对你有一定的参考价值。
参考技术A gen_p()中已知n与φ(n),直接联立解一元二次方程gen_q()中已知e*d和n,分解n得p,q
对应的P,Q求出来后,进行普通的RSA解密即可
参考资料 https://aidaip.github.io/crypto/2019/08/21/RSA-%E5%B7%B2%E7%9F%A5ed%E5%88%86%E8%A7%A3n.html
这里证明的原理还不懂,后面继续学习数论的知识
[MRCTF2020]Ez_bypass
[MRCTF2020]Ez_bypass
打开后是一串PHP代码
I put something in F12 for you
include 'flag.php';
$flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';
if(isset($_GET['gg'])&&isset($_GET['id'])) {
$id=$_GET['id'];
$gg=$_GET['gg'];
if (md5($id) === md5($gg) && $id !== $gg) {
echo 'You got the first step';
if(isset($_POST['passwd'])) {
$passwd=$_POST['passwd'];
if (!is_numeric($passwd))
{
if($passwd==1234567)
{
echo 'Good Job!';
highlight_file('flag.php');
die('By Retr_0');
}
else
{
echo "can you think twice??";
}
}
else{
echo 'You can not get it !';
}
}
else{
die('only one way to get the flag');
}
}
else {
echo "You are not a real hacker!";
}
}
else{
die('Please input first');
}
}Please input first
打开靶机是一串php代码
审计过后发现是md5绕过
if (md5($id) === md5($gg) && $id !== $gg)
在这说一下原理:
md5()函数无法操作数组,返回NULL,两个NULL相等
即可绕过这一关
构造payload:
http://5c026421-c5fb-49bb-ae03-a80c3bf2bd3b.node3.buuoj.cn/?id[]=1&gg[]=1
is_numeric()
直接用1234567a 绕过即可
让后再用hackbar POST传值即可
以上是关于[MRCTF]easy_RSA的主要内容,如果未能解决你的问题,请参考以下文章