[BUUCTF 2018]Online Tool 给出了源码 审计 <?php if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR']; } if(!isset($_GET['host'])) { highlight_file(__FILE__); } else { $host = $_GET['host']; $host = escapes…
简介  原题复现:https://github.com/glzjin/buuctf_2018_online_tool (环境php5.6.40)  考察知识点:escapeshellarg和escapeshellcmd使用不当导致rce  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 过程 简单审计 菜狗打开页面 看到源码  看到两个函数不知道 看wp吧... 1 <?php 2 3 print_r($_SERV…
Sum类的题目一般这样: input: nums[], target output: satisfied arrays/ lists/ number 拿到题目,首先分析: 1. 是几个数的sum 2. sum是要求等于target还是小于还是大于还是closest 3. 返回的是原数组下标还是其他 对于这类题目,我们经常用双指针的方法.即排序后,左指针指向起点,右指针指向终点. 如果sum等于target,加入结果/总数目+1 如果sum大于target,右指针左移 如果sum小于target,…
Sum类的题目一般这样: input: nums[], target output: satisfied arrays/ lists/ number 拿到题目,首先分析: 1. 是几个数的sum 2. sum是要求等于target还是小于还是大于还是closest 3. 返回的是原数组下标还是其他 对于这类题目,我们经常用双指针的方法.即排序后,左指针指向起点,右指针指向终点. 如果sum等于target,加入结果/总数目+1 如果sum大于target,右指针左移 如果sum小于target,…
最基础的方式要做到非常熟练,要熟练到不思考就能写,但又需明白各处的要求和陷阱 合并两个有序链表的操作,在前面加上一个初始节点,注意while循环和退出时的处理,理解如何处理其中一个链表遍历完的情况 ListNode* merge(ListNode* l1, ListNode* l2) { //采用前面加一个空闲节点的方式来简化代码 ListNode temp(-); ListNode* result = &temp; while (l1 != NULL && l2 != NULL)…
2. Add Two Numbers https://leetcode.com/problems/add-two-numbers/description/ class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode result(-); ListNode* current = &result; ; while(l1!=NULL || l2!=NULL){ ; ; if(l1!=NU…
https://discuss.leetcode.com/topic/30941/here-is-a-10-line-template-that-can-solve-most-substring-problems 总结的还是不错的: int findSubstring(string s){ vector<,); int counter; // check whether the substring is valid , end=; //two pointers, one point to tai…
https://leetcode.com/problems/edit-distance/?tab=Description 真的非常好,也非常典型. https://discuss.leetcode.com/topic/17639/20ms-detailed-explained-c-solutions-o-n-space dp[i][] = i; dp[][j] = j; dp[i][j] = dp[i - ][j - ], ] = word2[j - ]; dp[i][j] = min(dp[i…
// 下一篇:分数和checklist 如何设计题目 教学中的一个问题是老师出题太简单了,题目设计一开始上来就不紧凑,我认为一个好的课程应该上来就给你紧凑感,而不是先上来"轻松2-3周".目前见到的程序性题目有几类,都可以分别作不同层度的扩展设计. 问答类型题目,这类题目最好要有进阶,否则容易变成水题: 基础知识问答 扩展知识问答 高级深度问答 工具类题目,这类题目最好有明确要求: step by step的操作记录,这也是以后写specification的基础训练 对工具原理的理解和…
// 下一篇:分数和checklist 如何设计题目 教学中的一个问题是老师出题太简单了,题目设计一开始上来就不紧凑,我认为一个好的课程应该上来就给你紧凑感,而不是先上来"轻松2-3周".目前见到的程序性题目有几类,都可以分别作不同层度的扩展设计. 问答类型题目,这类题目最好要有进阶,否则容易变成水题: 基础知识问答 扩展知识问答 高级深度问答 工具类题目,这类题目最好有明确要求: step by step的操作记录,这也是以后写specification的基础训练 对工具原理的理解和…