最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

分享到微博請遵守國家法律
井冈山市| 灵璧县| 大连市| 樟树市| 宁夏| 集贤县| 黔江区| 荥经县| 曲松县| 中方县| 丁青县| 辉县市| 高雄市| 法库县| 衡阳县| 黔江区| 博湖县| 固原市| 高陵县| 万安县| 肥西县| 潍坊市| 泰州市| 嘉兴市| 河曲县| 旺苍县| 仙居县| 鹿泉市| 怀化市| 金门县| 塔河县| 铁力市| 温宿县| 苍溪县| 天峨县| 潍坊市| 闵行区| 阿城市| 烟台市| 朝阳区| 平湖市|