C0nceal

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

pwn51
0x804a331 cat flag
sys=0x804902e
0x6c+4
第一次尝试,失败,有限制?
呃,有限制,0x20,尝试其他办法,之前看到有个cat flag,而这个是让我们输入一个字符串。
试者把给我的那个I啥的复制上去,发现有点不一样,简单试过后发现他程序会在我每输入的I后面自动加上一个ronMan,就是说我输入1个,实际上内存上会有7个,ok,他只是限制了我的输入,但在这个自己增加的地方可以实现栈溢出,0x6c+4然后再除以7,得到16,就是输入I的数量,再放上去sys地址,得到flag

pwn52
ctfshow里get,0x6c+4
找到个flag函数,如果a1876&&a2877???
先试试再说
flag函数地址0x8048586
失败了,想简单了,再探
回到之前的a1,a2
这是输入参数?
试试876=36c,877=36d,呃不知道什么原因,去看了眼wp,发现都没错,只是要在p32(flag)后面加个p32(0) 。。。,然后就成功了,得搞懂为什么要有这个p32(0),之前做system加binsh有这个p32(0)是因为要输入4个东西填充?这个也是一样的?输入p32(0)填充,然后输入参数?

pwn53

0x30+4
嗯,还是有flag函数,后面步骤和52一样,flag=0x8048696
发现用了一个memcmp的函数,比较s1和global_canary是否相等,就是检测s1这个在buf下面的东西有没有被篡改。4u,是检测的长度?那么我可以试试输入到这个地方的时候,填入那个原本的东西?
s1位置在10,中间先是40,再输入原本的那个东西
大概理解了,先是在canary.txt里面读取4字节作为验证数据,然后再memcmp处对比,检测是否被栈溢出。
但是这个用于检测的数据无从得知,找了许久找不到解决办法,感觉是自己没接触过的东西。看wp= =,发现自己理解没错,解决办法也确实完全没学过,(QWQ,python得学啊,不学wp都看不懂:( ),是爆破,运用合理办法爆破那四个字节。
(p8(c)是啥?呃,这个估计是以p8格式发送循环体c,所以他的检测是一个个的?)
这爆破真费时间...
而且最怕卡住啊...
日,时间到了,环境没了,爆一半碎了‘(做54的时候突然有个疑问,为什么可以一个个爆破出来,难道每一次检测是一个个来的???难道不是一次性读取4个吗)
53失败了,我照着wp写了一遍,但是由于他是py2,我是py3,稍作修改(不知道是不是这个原因)爆破失败了,再找找其他的wp,对比发现,要么可能是字符串字节转化问题,要么是在$后面没打括号,这次成功爆出来了。

pwn54
初步审查,没有直接的栈溢出,似乎也是爆破?因为有个strcmp,我要获取flag就要让s1内容与s相等,而s是从password中读入的,但是有点离谱了啊,上一个是4个,这次爆破64个???
现在有点疑惑?第一次输入账号是用来干嘛?有个strlen检测长度。
爆破方式和上一个有点不一样,这个只爆破密码,那么username的输入对解开这个有什么作用吗?
发现个盲点,提示输入密码的东西在哪里?似乎是v6?前面的操作让v6等于自己的输入加上提示输入密码吗?(事实证明我没错)
呃,忙活半天,是我ida有问题,我就说那一串奇奇怪怪的赋值是干啥呢,那一堆东西是没有将提示输入密码合适翻译过来的东西。
输入100个垃圾数据,然后连接到密码存储地,顺带着一起put密码,得到密码CTFshow_PWN_r00t_p@ssw0rd_1s_h3r3
然后再连接,随便输个w,再输入密码,得到flag

pwn55
gets输入,可以栈溢出,填充0x2c+4,返回到flag函数,条件判断是需要第一个&&是和的意思?是要全部成立才能运行,满足flag!=0,flag2!=0, a1= -1111638595
有3个flag文件,1和2估计是让条件成立,3是得到flag
有两个值,134524928(无用),-1397969748,目标值-1111638595

有点思路,连续跳转f1f2还有flag,然后自己填入参数
-1397969748转化hex后是ACACACAC
-1111638595是BDBDBDBD,填进去,得到flag
(我ida真有毛病?wp上怎么是直接ACACACAC,BDBDBDBD, 而我是一堆数字啊)

posted on 2024-11-23 17:12  C0ncea|  阅读(0)  评论(0编辑  收藏  举报