我正在编写一个脚本来解决一个要求多个字符串的二进制文件,如以下 c 代码,
我的问题我不能转储“second_pass”,我只能得到“first_pass”。可能是由于使用相同的变量来读取输入。任何帮助请
#include <stdio.h>
int main()
{
int i, lose = 1;
char first[20]="first_pass", input[20];
scanf("%s", input);
for(i=0; i < strlen(first); i++)
{
if(first[i] != input[i])
lose = 0;
}
if(lose)
printf("gg");
else
printf("fail");
char second[20]="second_pass";
scanf("%s", input);
for(i=0; i < strlen(second); i++)
{
//printf("%c = %c\n", second[i], input[i]);
if(second[i] != input[i])
lose = 0;
}
printf("\n");
if(lose)
printf("gg");
else
printf("fail");
}
我的 angr 脚本
import angr
import logging
start_at = 0x400550
fail = (0x400681,0x400751)
success = (0x400680, 0x400740)
p = angr.Project("./a.out", load_options={'auto_load_libs': False})
state = p.factory.blank_state(addr=addr_main)
path = p.factory.path(state)
pathgroup = p.factory.path_group(path)
print "Searching..."
found_state = pathgroup.explore(find=success, avoid=fail)
if found_state.found:
f = found_state.found[0].state
print "Flag: %s" % (f.posix.dumps(0)[0:20],)