screen 是一款多窗口模拟软件,可以设置lock功能将session锁住,但是这个可以绕过密码检查机制,直接实现无密码登录, 具体过程记录如下:
1. 首先根据screen lock过程中的提示,找到这个提示的地址, 提示如下,要求输入密码。
Screen used by root <root>.
Password:
这个字符在rodata端可以通过如下命令,把所有的字符都写到一个文件里,然后在这里面找:
readelf -p 15 /usr/bin/screen > string
然后发现如下字段
[ 4f30] Screen used by %s <%s>.
Password:^G
这个4f30是相对rodata的偏移,需要知道rodata的基地址, 可以通过如下命令:
readelf -S /usr/bin/screen > sections
找到rodata端的基地址,然后再相加得到最终地址: 0x44d170
2. 在代码段中找到该string的引用
首先把screen代码反汇编出来:
objdump -S /usr/bin/screen > disscreen
然后在反汇编出来的文件里面搜索0x44d170, 得到如下代码片段:
427aa7: 4d 89 e0 mov %r12,%r8
427aaa: b9 70 d1 44 00 mov $0x44d170,%ecx
427aaf: ba c8 00 00 00 mov $0xc8,%edx
427ab4: be 01 00 00 00 mov $0x1,%esi
427ab9: 48 89 ef mov %rbp,%rdi
427abc: 4c 8d ac 24 20 02 00 lea 0x220(%rsp),%r13
427ac3: 00
427ac4: 41 bf 92 a5 44 00 mov $0x44a592,%r15d
427aca: 4c 8b 08 mov (%rax),%r9
427acd: 31 c0 xor %eax,%eax
427acf: e8 3c b7 fd ff callq 403210 <__sprintf_chk@plt>
427ad4: e8 a7 b5 fd ff callq 403080 <__errno_location@plt>
427ad9: 49 89 c6 mov %rax,%r14
427adc: e9 91 00 00 00 jmpq 427b72 <getlogin+0x87f2>
427ae1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
427ae8: 48 8b 15 61 fd 23 00 mov 0x23fd61(%rip),%rdx # 667850 <stdout+0xa7a0>
427aef: 4c 89 ff mov %r15,%rdi
427af2: b9 05 00 00 00 mov $0x5,%ecx
427af7: 48 89 d6 mov %rdx,%rsi
427afa: 48 8d 42 05 lea 0x5(%rdx),%rax
427afe: f3 a6 repz cmpsb %es:(%rdi),%ds:(%rsi)
427b00: 48 8b bc 24 20 02 00 mov 0x220(%rsp),%rdi
427b07: 00
427b08: 40 0f 97 c6 seta %sil
427b0c: 0f 92 c1 setb %cl
427b0f: 40 38 ce cmp %cl,%sil
427b12: be 03 00 00 00 mov $0x3,%esi
427b17: 48 0f 44 d0 cmove %rax,%rdx
427b1b: e8 10 b2 fd ff callq 402d30 <pam_set_item@plt>
427b20: 85 c0 test %eax,%eax
427b22: 0f 85 a0 00 00 00 jne 427bc8 <getlogin+0x8848>
427b28: 48 8b bc 24 20 02 00 mov 0x220(%rsp),%rdi
427b2f: 00
427b30: 31 f6 xor %esi,%esi
427b32: e8 f9 b7 fd ff callq 403330 <pam_authenticate@plt>
427b37: 48 8b bc 24 20 02 00 mov 0x220(%rsp),%rdi
在上面红色部分即pam认证部分,只要这部分返回值正确即可,可以在这里下个断点另$RAX = 0即可
参考:
https://blog.plenz.com/2013-03/locking-a-screen-session.html