周末比较闲鱼 就两天并做一天啦
一、SQL注入一般流程
注:找到一篇文章写的很好 关于深入了解SQL注入绕过waf和过滤机制
1.寻找注入点
-
目标搜集
使用搜索引擎:
A.无特定目标时:用inurl:.php?id=
其中php可换成jsp/aspx等
B.有特定目标时:用inurl:.php?id=site:目标域名
使用工具爬取
A.如spider(目前还不会用) -
注入识别
A.手工注入
' //单引号
and 1 = 1 或 and '1' = '1 //没有任何变化
and 1 = 2 或 and '1' = '2 //返回不一致了
B.工具注入
sqlmap (sqlmap可与burpsuit结合,已在burpsuit中载入相关扩展包)如
sqlmap --level 4 //级别高时可浏览header中的参数
sqlmap -r filename //数据包
-
流程
A.信息收集(数据库类型、版本等)
B.获取数据
C.提权(执行命令、读文件、写入shell)
二、LC上的一道题
将给定的单链表L: L 0→L 1→…→L n-1→L n, 重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→…
要求使用原地算法,并且不改变节点的值 例如: 对于给定的单链表{1,2,3,4},将其重新排序为{1,4,2,3}.
我的暴力算法:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void reorderList(ListNode *head) {
if(head==nullptr||head->next==nullptr||head->next->next==nullptr)
return ;
ListNode *p,*m,*q;
p = head;
m = p;
q = p;
while(p->next!=m && p->next!=nullptr){
m = head->next;
while(m->next->next!=nullptr){
m = m->next;
}
q = m->next;
m->next = NULL;
q->next = p->next;
p->next = q;
p = q->next;
}
return ;
}
};
就是把最后一个节点往插呗 简单粗暴
终止条件需要判断一下。优点是代码短,缺点是复杂度有点不妥
第一次做题一开始没考虑空链表的情况 以后注意(这让我回想到为什么我蓝桥杯明明自己运行的很好但是最后竟然没得奖)
看到很多大佬用三步走的办法 明天学习一下
感觉用队列和栈也可以做 明天也试试