BugkuCTF ConsoleApplication 4 문제 풀이 사고방식 및 관련 지식
4650 단어 역공학
알고리즘 은 1 - 8, 8 스 택 등 입 니 다. 하 나 를 누 르 면 3 상 태 를 바 꾸 고 스 크 립 트 를 써 서 폭파 하 세 요!!(문제 출제 자의 생각 을 흉 내 내 중간 과정 을 표현 하고 싶 었 지만, 결국은 자신 이 너무 어 렸 다. 가 벼 이 욕심 한 개의 등 을 두 번 누 르 면 지난번 에 누 른 영향 을 상쇄 할 수 있다. 따라서 한 개의 등 은 두 가지 상황 만 누 르 거나 누 르 지 않 고 한 개의 등 이 여러 번 켜 지 는 경 우 는 없다. 등 8 개 1 누 르 면 1100000 3 후 10110000 누 르 기 1 누 르 면 0110000 이것 과 여덟 개의 등 이 0000000 원 입 니 다. 한 번 만 누 르 세 요. 3 후 0110000. 똑 같은 상황 이에 요. #####그러나 나중에 나 는 한 가지 요 소 를 소홀히 했다. 우리 가 있 는 이곳 의 마지막 등 은 첫 번 째 등 에 영향 을 줄 것 이다. 그것 은 고리 이 고 여기에 두 면 안 된다.
lamp = [0, 0, 0, 0, 0, 0, 0, 0]
a = []
status = True
for i in range(1, 6, 1):
if lamp[i-1] == 0:
lamp[i-1] ^= 1
lamp[i] ^= 1
lamp[i+1] ^= 1
if lamp[7] == 0:
lamp[7] = 1
lamp[0] ^= 1
lamp[1] ^= 1
print(lamp)
lamp[7] = 1
lamp[0] = 1
lamp[1] = 1
#
위의 스 크 립 트 는 전혀 그런 상황 이 아 닙 니 다. od 동적 디 버 깅 으로 돌아 갑 니 다.
사고방식 2:
역방향 이 었 기 때문에 나중에 od 에 들 어가 해결 방안 을 다시 찾 았 습 니 다.
문자열 done the flag is 를 검색 하여 어 셈 블 리 코드 를 찾 습 니 다: 00FDE968 done the flag is 이 주소 의 머리 는 FDE 940 입 니 다. 점프 바로 시작 하 는 곳 에서 콜 명령 을 콜 00FD7AB 4 로 바 꿉 니 다. 바로 게임 성공 이 있 을 자리 에 도 착 했 습 니 다. eax=0046F5D8, (ASCII "zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}")
드디어!!! 메모리 의 각종 mov 작업 은 문 자 를 하나씩 스 택 에 누 르 고 나중에 다시 한 번 전체 인쇄 를 합 니 다. F4 의 역할 은 한 번 순환 하 는 것 이다.
지식 포인트:
。 , ( , , , ) , 。 , : 1 for , , , , impossible!
ACM : ,
#include
#include
#include
using namespace std;
string lockin,lockout;
int L1[35],L2[35],L3[35];
int main(){
int num1=0,num2=0;
cin>>lockin>>lockout;
int len=lockin.length();
for(int i=0;i