【pwnable.kr】col
pwnable从入门到放弃第二题,

ssh col@pwnable.kr -p2222 (pw:guest)
同样是登录,然后看到了col.c、col、flag三个文件,读一下col.c
#include <stdio.h>
#include <string.h>
unsigned long hashcode = 0x21DD09EC;
unsigned long check_password(const char* p){
int* ip = (int*)p;
int i;
int res=;
for(i=; i<; i++){
res += ip[i];
}
return res;
} int main(int argc, char* argv[]){
if(argc<){
printf("usage : %s [passcode]\n", argv[]);
return ;
}
if(strlen(argv[]) != ){
printf("passcode length should be 20 bytes\n");
return ;
} if(hashcode == check_password( argv[] )){
system("/bin/cat flag");
return ;
}
else
printf("wrong passcode.\n");
return ;
}
发现就限定了字符串长度为20,然后做了一次check函数,函数中就是把输入参数的字符串指针当做整数指针进行解析然后把结果相加,所以碰撞还是很简单的。
没想到= = 找轮子是永远的痛,吐口血再写。
可以把hash分解成 b*4+c的形式,我先猜测了c,当c=0x01010104时,(hash-c)mod 4 = 0,因此b存在。
接下来肯定得编码然后就直接调用就好了,结果是找不到能转换的轮子。struct.pack不会用QAQ。
最后迫不得已用了pwn.p32,pwntools大法好,先膜一发。
那干脆就直接调用子线程就好了。
需要找到一个可写的目录,我用了winscp图形化界面去找,找到/tmp下程序可写可执行,恩。

把脚本放到下面,就好了
import struct
import pwn
a = 0x21DD09EC
c = 0x01010104
b = (a-c)/4 col = pwn.p32(c)+pwn.p32(b)*4
print (col) import subprocess
child = subprocess.Popen(args= ['/home/col/col',str(col)])
child.wait()
print("over")
运行一下

【pwnable.kr】col的更多相关文章
- 【pwnable.kr】 asm
一道写shellcode的题目, #include <stdio.h> #include <string.h> #include <stdlib.h> #inclu ...
- 【pwnable.kr】 [simple login]
Download : http://pwnable.kr/bin/login Running at : nc pwnable.kr 9003 先看看ida里面的逻辑. 比较重要的信息时input变量再 ...
- 【pwnable.kr】 brainfuck
pwnable.kr第二关第一题: ========================================= Download : http://pwnable.kr/bin/bfDownl ...
- 【pwnable.kr】 unlink
pwnable.kr 第一阶段的最后一题! 这道题目就是堆溢出的经典利用题目,不过是把堆块的分配与释放操作用C++重新写了一遍,可参考<C和C++安全编码一书>//不是广告 #includ ...
- 【pwnable.kr】 memcpy
pwnable的新一题,和堆分配相关. http://pwnable.kr/bin/memcpy.c ssh memcpy@pwnable.kr -p2222 (pw:guest) 我觉得主要考察的是 ...
- 【pwnable.kr】 codemap
pwnable新的一题. download: http://pwnable.kr/bin/codemap.exe ssh codemap@pwnable.kr -p2222 (pw:guest) 这道 ...
- 【pwnable.kr】 uaf
目测是比较接近pwnable的一道题.考察了uaf(use after free的内容),我觉得说白了就是指针没有初始化的问题. ssh uaf@pwnable.kr -p2222 (pw:guest ...
- 【pwnable.kr】input
这道题是一道一遍一遍满足程序需求的题. 网上其他的题解都是用了C语言或者python语言的本地调用,我想联系一下pwntools的远程调用就写了下面的脚本, 执行效果可以通过1~4的检测,到最后soc ...
- 【pwnable.kr】cmd2
这道题是上一个cmd1的升级版 ssh cmd2@pwnable.kr -p2222 (pw:mommy now I get what PATH environmentis for :)) 登录之后, ...
随机推荐
- 5、mysql的连接查询
1.内联查询 >inner join 或 join 2.外联查询 (1)左连接 >left outer join 或 left join (2)右连接 >right outer jo ...
- 学习SpringBoot零碎记录——配置应用URL名称
学习SpringBoot配置应用名称,结果发现坑 到网上找 到 https://blog.csdn.net/qq_40087415/article/details/82497668 server: p ...
- WDSL文件中的XML元素
WDSL文件中的XML元素 理解起来其实很简单Types指定类型,当然是在后面的Message中需要的类型Message可以理解为函数中的参数,只不过如果一个函数如果有多个参数的时候应该吧这些参数定义 ...
- 前端学习笔记系列一:8 <noscript>…</noscript>,网站路径,vscode跳出右括号
1.<noscript>…</noscript> 在body中使用此段代码,可识别 <script> 标签但无法支持其中的脚本的浏览器. 此段代码意思为如果浏览器不 ...
- 吴裕雄--天生自然JAVAIO操作学习笔记:压缩流与回退流
import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.util ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:抽象类与接口的应用
abstract class A{ // 定义抽象类A public abstract void print() ; // 定义抽象方法print() }; class B extends A { / ...
- when_did_you_born-瞟来的wp
继上文,这次开始嫖when_did_you_born这题.前面的步骤大致是一样的就不赘述了,直接到代码分析. 字符串 这次呢在main函数处 按下F5进入调试 查看反汇编代码 可以清楚的看到它的逻辑一 ...
- 011、MySQL取14天前Unix时间戳
#取14天前时间戳 SELECT unix_timestamp( DATE_SUB( curdate( ), INTERVAL DAY ) ); 效果如下: 不忘初心,如果您认为这篇文章有价值,认同作 ...
- Eclipse 不能调试的问题
现象 弹出 Cannot connect to VM Console 中的输出是: ERROR: transport error 202: connect failed: Connection ref ...
- JS 选择电脑中的文件目录
按钮调用方法function CarryOut(){ var inputObj=document.createElement('input') inputObj.setAttribute('id',' ...