无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

XCTF攻防世界--(新手賽區(qū))第2題快來圍觀學習!

2022-05-20 15:17 作者:rkvir逆向工程學院  | 我要投稿

解題方法寫在代碼注釋里了
題目:

?

#include

#include

//大概閱讀整體代碼,通過最后幾行代碼我們得知我們需要的flag就是代碼中的hash變量

//此時我們逆向推到hash變量的來源

//1.hash值由fist、second和argv[3]三個變量來決定,那我們就跟蹤這三個變量

//2.fist變量在第二個if語句中,提示如果first不等于0xcafe的話就退出程序,那我們按照作者意思肯定要讓程序執(zhí)行到顯示flag

//那就必須使first=0xcafe

//3.接下來我們再找著second變量,發(fā)現(xiàn)second在第三個if語句,提示如果second % 5 == 3 || second % 17 != 8的話就退出,我們目的

//就是執(zhí)行到最后,那我們就直接用窮舉法找到一個數(shù)滿足second % 5 != 3 && second % 17 == 8

//函數(shù):??????????????? unsigned int GetNum = 0;

//??????????????????????????????? do{

//????????? ??????????????????????????????if(GetNum % 5 != 3 && GetNum % 17 == 8)

//??????????????????????????????????????????????????????? {

//??????????????????????????????????????????????????????????????? printf("GetNum:%d",GetNum);

//????????????????????????????? ??????????????????????????????????break;

//??????????????????????????????????????????????????????? }

//??????????????????????????????????????? GetNum++;

//??????????????????????????????????????? }while(1);

//最后得到GetNum = 25,也就是second是25

//4.最后argv[3]可從最后一個if得知argv[3]=h4cky0u

//5.那我們帶進hash中去算

//unsigned int hash =0xcafe * 31337 + (25 % 17) * 11 + strlen("h4cky0u") - 1615810207;

//注意最后一行代碼要以十六進制輸出才能得到flag

//z最后flag為c0ffee

//6.提交顯示正確了

int main(int argc, char *argv[]) {

??????? if (argc != 4) {

??????????????? printf("what?\n");

??????????????? exit(1);

??????? }

?

??????? unsigned int first = atoi(argv[1]);

??????? if (first != 0xcafe) {

??????????????? printf("you are wrong, sorry.\n");

??????????????? exit(2);

??????? }

?

??????? unsigned int second = atoi(argv[2]);

??????? if (second % 5 == 3 || second % 17 != 8) {

??????????????? printf("ha, you won't get it!\n");

??????????????? exit(3);

??????? }

?

??????? if (strcmp("h4cky0u", argv[3])) {

??????????????? printf("so close, dude!\n");

??????????????? exit(4);

??????? }

?

??????? printf("Brr wrrr grr\n");

?

??????? unsigned int hash = first * 31337 + (second % 17) * 11 + strlen(argv[3]) - 1615810207;

?

??????? printf("Get your key: ");

??????? printf("%x\n", hash);

??????? return 0;

}


XCTF攻防世界--(新手賽區(qū))第2題快來圍觀學習!的評論 (共 條)

分享到微博請遵守國家法律
西峡县| 石阡县| 汶川县| 泉州市| 黄龙县| 徐汇区| 高青县| 勐海县| 麻阳| 虎林市| 顺昌县| 宜州市| 治多县| 舟山市| 柞水县| 东丰县| 福建省| 南召县| 来凤县| 汕头市| 昂仁县| 莎车县| 嘉义县| 前郭尔| 乌苏市| 广河县| 伊宁市| 永仁县| 织金县| 岗巴县| 礼泉县| 梅州市| 衡阳县| 洪泽县| 徐水县| 车致| 高陵县| 信宜市| 闸北区| 玉门市| 炎陵县|