microcorruption-3-Hanoi
Hanoi
多了一个login函数,其实功能相似,题目提示密码是8-16位,接下来继续看关键函数test_password_valid;
4454 <test_password_valid>4454: 0412 push r44456: 0441 mov sp, r44458: 2453 incd r4445a: 2183 decd sp445c: c443 fcff mov.b #0x0, -0x4(r4)4460: 3e40 fcff mov #0xfffc, r144464: 0e54 add r4, r144466: 0e12 push r144468: 0f12 push r15446a: 3012 7d00 push #0x7d446e: b012 7a45 call #0x457a <INT>4472: 5f44 fcff mov.b - ...
microcorruption-2-Sydney
Sydney
题目类似,还是看关键函数check_password;
448a <check_password>448a: bf90 4560 0000 cmp #0x6045, 0x0(r15)4490: 0d20 jnz $+0x1c4492: bf90 706c 0200 cmp #0x6c70, 0x2(r15)4498: 0920 jnz $+0x14449a: bf90 6528 0400 cmp #0x2865, 0x4(r15)44a0: 0520 jne #0x44ac <check_password+0x22>44a2: 1e43 mov #0x1, r1444a4: bf90 6269 0600 cmp #0x6962, 0x6(r15)44aa: 0124 jeq #0x44ae <check_password+0x24>44ac: 0e43 clr r1444ae: 0f4e ...
pwn-college-binary-file
Binary File
这一章节参考《程序员的自我修养:链接、装载与库》,链接
microcorruption-1-New-Orleans
New Orleans
程序和之前的题目相似,关键的地方仍然在check_password;
第一次输入密码先随便输入,这里输入12345678;
44bc <check_password>44bc: 0e43 clr r1444be: 0d4f mov r15, r1344c0: 0d5e add r14, r1344c2: ee9d 0024 cmp.b @r13, 0x2400(r14)44c6: 0520 jne #0x44d2 <check_password+0x16>44c8: 1e53 inc r1444ca: 3e92 cmp #0x8, r1444cc: f823 jne #0x44be <check_password+0x2>44ce: 1f43 mov #0x1, r1544d0: 3041 ret44d2: 0f43 ...
microcorruption-0-tutorial
Tutorial
第一关,试试水。
看汇编代码可以看到是一个密码检测的程序,关键代码如下:
4484 <check_password>4484: 6e4f mov.b @r15, r144486: 1f53 inc r154488: 1c53 inc r12448a: 0e93 tst r14448c: fb23 jnz #0x4484 <check_password+0x0>448e: 3c90 0900 cmp #0x9, r124492: 0224 jeq #0x4498 <check_password+0x14>4494: 0f43 clr r154496: 3041 ret4498: 1f43 mov #0x1, r15449a: 3041 ret
而在main函数中,有如下的条件判断:
4450: 0f93 ...
pwn-college-program-interaction
Program Interaction
Linux Process Loading
一个示范程序:
// cat.cint main(int argc, char *argv[]){ char buf[1024]; int n; int fd = argc == 1 ? 0 : open(argv[1], 0); while ((n = read(fd, buf, 1024)) > 0 && write(1, buf, n) > 0);}
当执行cat /flag时,会依次发生:
进程创建
程序装载
程序初始化
程序运行
程序读取参数和环境
程序功能执行
程序终止
下面将讨论前三个:进程创建,程序装载,程序初始化;
create process
在启动一个进程前,先来简要了解进程包含的一些结构属性;
struct of process
对于Linux而言,每个Linux进程包含:
状态state:描述进程当前处于何种状态
running
waiting
stopped
zombie
优先级priorit ...
pwn-college-getting-start
Getting Start
What is Computer Systems Security
A chain is only as strong as its weakest link. --木桶效应
Complex modern computer -> with great complexity comes great vulnerability
Hackers:
Reconnaissance
Little network-facing infrastructure
Low public profile
Professional external security practices
Gaining a foothold
A target
Internal reconnaissance
passive network listening
careful, slow active network scanning
Gaining influence in the network
Total compromise
Gloating
What ...
router_vuln_overflow
路由器溢出漏洞
缓冲区溢出漏洞是路由器研究的核心内容之一;
MIPS堆栈原理
和x86架构有相似的地方,但是也有很大的区别。
MIPS32与X86的对比
大多数Linux嵌入式操作系统的路由器使用MIPS指令系统,该指令系统属于精简指令系统,这里列出其在函数调用上与x86的一些相似和区别;
栈操作
栈与x86一样是向低地址增长的;
没有EBP指针(有$FP寄存器,不太有用),这就导致调用函数或者返回时,需要指定偏移量,将当前栈指针向下移动n bit,开辟出的空间就是调用函数的栈帧区域,此后栈指针就不能移动了(否则现场恢复不了);
参数传递
前4个参数通过寄存器$a0~$a3传递,超过四个参数的时候,多余参数被放入调用函数的空间;
返回地址
x86使用call时会将当前执行为之压入堆栈保存,MIPS则将返回地址存入$RA寄存器中,而不是放在堆栈中;
函数调用的栈布局
有关概念
叶子函数
非叶子函数
如果一个函数A中不再调用其他任何函数,那么当前的函数A就是一个叶子函数,否则则为一个非叶子函数。
数据结构里树结构的理解方式。
函数调用过程
当函数A调用函数B时,具 ...
router-vuln-backdoor
路由器后门漏洞
通过后门,可以直接控制路由器,进一步发起DNS劫持、窃取信息等攻击行为;
关于路由器后门
后门指绕过安全控制而获取对程序或系统访问权的方法;
在安全新信息系统设计原则中,木桶原则是十分关键的,即:需要对信息均衡、全面地进行保护;
在路由器后门中有几个类别:
开发人员为了方便管理和控制路由器而留下的
发布时遗留的安全漏洞
产商对路由器调试的高级接口登陆设置认证过于简单
人为蓄意留下
一些后门事件
D-Link路由器后门:如果浏览器User Agent中包含特殊字符串“xmlset_roodkcableoj29940ybtide",共接着将可以绕过密码验证直接访问路由器的Web界面
Linksys TheMoon蠕虫:Linksys路由器存在漏洞,攻击者发送一段shell脚本,使其感染TheMoon蠕虫,感染后的路由器会扫描其他IP地址,在短时间内会zuoweiHTTP服务器供其他被干扰的路由器下载蠕虫代码
NETGEAR路由器
后门漏洞:产商设置并留下的超级用户和口令
Telnet后门未授权访问:DGN2000路由器的TCP端口32764上监听的Teln ...
router-vuln-web
路由器Web漏洞
家用路由器通常都有web管理服务,可以通过管理界面去配置路由器,而这也导致了路由器遭受类似于网站的攻击。
XSS漏洞
跨站脚本攻击,Cross Site Scripting,入侵者在远程Web页面的HTML代码中插入具有恶意目的的数据,当浏览器载入该页面时,插入其中的脚本被解释执行。
路由器相关
假设路由器管理网页中包含一个反射型XSS,可以构件一个利用这个XSS漏洞的URL,将其通过邮件或QQ消息发送给受害者,引诱受害者点击这个URL,从而访问路由器网页。访问路由器网页后,恶意代码在浏览器中执行,会将路由器网页的会话Cookie发送给攻击者,导致不知情的情况下泄露了路由器Cookie,从而攻击者可以获得路由器访问权限。
CSRF
跨站请求伪造,Cross-Site Request Forgery,是一种对网站的恶意利用。通过伪装来自受信任用户的请求达到利用受信任的网站的目的。
路由器相关
只要存在网页,就可能实现CSRF,其能够直接修改路由器参数;
共接着构造一个针对路由器的CSRF链接,欺骗受害者点击该链接,其功能是修改路由器iDNS为一个伪造的DNS服务器,这样 ...