国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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題快來圍觀學習!的評論 (共 條)

分享到微博請遵守國家法律
通城县| 彩票| 辽中县| 丰都县| 濮阳市| 定南县| 长泰县| 西城区| 班玛县| 石嘴山市| 聂荣县| 武穴市| 潞西市| 大余县| 营口市| 锦屏县| 安义县| 松桃| 新宾| 新野县| 岢岚县| 临桂县| 阿拉善盟| 淅川县| 岫岩| 承德市| 黄石市| 区。| 九江县| 绿春县| 甘南县| 惠水县| 平定县| 上高县| 兴义市| 枣强县| 嘉兴市| 临海市| 成武县| 邛崃市| 昭觉县|