拿到题目,依旧还是老样子,查看程序开启的保护和位数

可以看到程序开启了nx保护是32位程序,于是我们把程序放入ida32编译一下

一打开就能看到非常明显的get_flag这个程序,f5观察伪代码

当a1和a1都等于相应的值后就可以获取到flag,再查看main函数

gets存在明显的栈溢出

我刚开始想的是直接在ret处用 v2 = fopen("flag.txt", "rt")的地址覆盖,后来发现远程链接不能获取到flag,所以只好用别的办法

观察汇编代码可以看到,程序将308cd64fh和195719d1h处的值进行比较,所以这俩个地址就是a1和a2的值所以我们可以在ret函数用get_flag的地址覆盖,然后传递上这俩个参数也可以获得flag

完整的exp如下:

注意:0x0804e6a0是程序exit的地址,只有程序能够正常退出才能正确的回显flag(远程感谢一下get_started_3dsctf_2016 - 不会修电脑 - 博客园 (cnblogs.com)

还有第三种方法是通过mprotect函数赋给权限,不过我暂时并未尝试(还是我又菜又懒....)

结束

最新文章

  1. Github .gitignore详解
  2. Java将文件转为字节数组
  3. PLL输出怎么不能配置成我想要的时钟
  4. 12天学好C语言——记录我的C语言学习之路(Day 8)
  5. UIApplication sharedApplication 的常用使用方法-b
  6. python导入matplotlib模块出错
  7. 解决Agent admitted failure to sign using the kye with ssh
  8. 配置Apacheserver
  9. 【Time系列三】简单的计时器(秒表)
  10. js变量的生命周期
  11. Typora - Markdown 语法说明
  12. strlen strcat strcpy strcmp 自己实现
  13. shell 脚本部分变量含义
  14. centos 安装 和 linux 简单命令
  15. Win10系列:JavaScript动画2
  16. java使用代理模拟http get请求
  17. 采用redis 主从架构的原因
  18. 【转】Twitter Storm: 在生产集群上运行topology
  19. Java+FlashWavRecorder实现网页录音并上传
  20. Codeforces768C Jon Snow and his Favourite Number 2017-02-21 22:24 130人阅读 评论(0) 收藏

热门文章

  1. python实现开闭操作
  2. NOIP2021游记(退役记)
  3. myeclipse自带tomcat
  4. [atARC110E]Shorten ABC
  5. [loj3043]线段树
  6. Nginx大厂面试需要掌握多少v1.21.3
  7. 撸了一个可调试 gRPC 的 GUI 客户端
  8. vue3 高阶 API 大汇总,强到离谱
  9. c语言实参与形参的区别
  10. vector.erase();vector.clear();map.erase();