百度竞价托管代运营公司,做seo要投入什么,网站建设选择,手表网站的结构Crypto
划水的dp和dq
下载附件后是简单的RSA算法题#xff0c;之所以说简单是因为给了公钥e 趁热打铁#xff0c;昨天刚学的RSA#xff0c;既然有p有q#xff0c;也有e#xff0c;而np*q#xff0c;可以算出欧拉函数值phi#xff08;p-1#xff09;*#xff08;q-1之所以说简单是因为给了公钥e 趁热打铁昨天刚学的RSA既然有p有q也有e而np*q可以算出欧拉函数值phip-1*q-1 而这里因为昨天学到d*e1 mod phi所以libnum.invmod(e,phi)函数的作用就是求一个整数d使得e*d%phi除以phi取余1求出d以后就可以从cemn的模幂运算入手反推m。而cem,n可以解释为求m的e次方然后对取模结果赋值给cpowmenm^e mod n通俗的讲就是RSA加密时把明文m加密为了c题目已经给出了c所以用私钥d函数powcdn就可以逆运算出m的值了
然后再long_to_bytes(m)就可以print出flag了
思路清晰以后创建py代码直接运行就可以 可报错了 仔细一看我都没有导入libnum库自然运行不了然后加入import libnum运行发现我的pycharm还是没有装libnum库试了一下发现不能直接在pycharm里装就只能打开终端尝试了好几次终于装上了 最后运行 虽然出flag了但我突然想到一个问题我没用到dp和dq啊附件既然给了dp dq肯定有用而且题目也是划水的dp和dq但又不知道怎么用于是扔进 AI让其帮我解读一下 所以用dpdq运算会更简单一些的意思然后我试了一下运行AI改进的代码 它是先计算m1m2两个的值然后用中国剩余定理组合m但代码却更复杂了
WEB
熟悉的正则
打开环境先进行代码审计 进行get传参时把a、b拼接赋值给g
然后查看g中的字符是否含有/ls|system|a|shell|cat|read|find|flag|handsome/i这串字符
如果有就又将g赋值给key同样的又判断key中是否有字符串/\.\.|flag/如果有就报错“不行不行再好好看看”
如果没有就把b赋值给gg然后嘞截取gg的第八位开始的后面四个字符再赋值给hhh
最后用include函数把base64加密后的a与hhh拼接
这里还原一下正则表达式/\\|\056\160\150\x70/i 其还原回来是|.php i是修饰符表示不区分大小 也就是说参数b的值必须包含字符|.php 总的来说构造payload的思路就是参数a要含有flag或..字符(用于赋值key)并经过base64加密include漏洞参数b需接|.php字符赋值ggg且|.php后必须再接 ls|system|a|shell|cat|read|find|flag|handsome 中的某一字符串用于赋值g但其长度必须大于等于八个字符用于绕过并赋值hhh
先将flag进行base64加密既然正则表达式 /\.\.|flag/ 还原为的字符是..或flag按理来说a的值为base64编码 .. 也一样的但我尝试了一下发现没有回显也就是不对是正则表达式还原错了吗 所以payload为/?aZmxhZwb|.php.handsome 这里用handsome是因为就这个字符串字符数为八个其他都不足当然也可以是8个a
get flag RCCE
打开环境进行代码审计 高亮函数展示当前文件然后调试或展示当前代码。然后检查GET传参是否有参数cmd如果有便赋值给$cmd变量然后定义黑名单正则表达式$blacklist并用preg_match 来检查$cmd是否匹配或含有黑名单还要注意黑名单后面的i指不区分大小写如果匹配到了就输出师兄说RCE这辈子都学不会是这样做的么如果没有就执行exec($cmd)(php中执行外部命令的函数执行命令后不会显示)
那么就需要让exec函数执行后保存下来上网查了一下命令 这里AI也提供了部分绕过该黑名单的字符和方法 得到提示后那么接下来构造payload即可 ?cmdls / | tee 1.txt
但要注意ls是黑名单所以要将ls改一下绕过 l\s 然后exec应该是已经执行过后并将结果保存到1.txt中了url拼接一下就可以看到flag提示 最后传参抓取flag就可以了然后把抓取结果保留到2.txt中 继续拼接访问得到flag