在之前校招面试中,sql被问到频率是真的高,当初为了能够在sql这块加分,看了不少书籍,在网上也找了不少资料,走了不少弯路,庆幸的是,每次面试官问到sql相关知识,我基本都能对答如流,而且还能从一个小的知识点扯出一大堆的那种,所以呢,今天我想详细给大家分享一下我都学习了啥,文中会给出书籍 + 看过的资料。
sql 入门随便找一个教程就可以了,我看的是《SQL Server 从入门到精通》《SQL注入攻击与防御》这两本书,跟着书敲代码即可,感觉一两周周时间就可以快速刷完了,反正命令不用死记硬背,需要用的时候,翻开书本会用就行了,后面去刷一刷 sql 的练习题,
入门阶段最重要的就是要大致知道 sql 有哪些关键字,还有就是关键字直接的执行顺序,例如像 join,have,order by,聚合函数等等,知道个大概就行,之后要多练习,否则很容易一问三不知,至于那里练习,我上面已经跟大家说了。
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息
192.168.1.110
1100 0000 1010 1000 0000 0001
子域名:
www.baidu.com、 map.baidu.com、 tieba.baidu.com
http://localhost/school/url.php?id = 1
user=admin&password=123456
"select * from test where user = ” + user + " and password = ” + password
如何结束一个SQL?
点查询分析器上的红方块,或者直接终止进程.不过,SQL2000这样做,语句就丢失了,但是2005在打开查询分析器时会提示是否恢复.
如何忽略后续语句?
void Func(int _flag)
{
try
{
if (_flag & 1> 0)
{
_falg &= ~1;
statement1
}
if (_flag & 2> 0)
{
_falg &= ~2;
statement2
}
if (_flag & 4> 0)
{
_falg &= ~4;
statement3
}
...
}
catch (Exception ex)
{
//如何返回使继续下意语句的执行
//即:如果statement1出错,不理会,继续执行statement2...
Func(_falg);
}
}
什么语句可以包含两个以上的select?
1.
select * from test where class = 1 or class = 2 order by id desc
2.
const String strconn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=Z:\test.mdb";
OleDbConnection conn=new OleDbConnection(strconn);
DataSet ds=new DataSet();
conn.Open();
string sql="select * from test where class = 1 order by id desc";
OleDbCommand cmd=new OleDbCommand(sql,conn);
OleDbDataAdapter adapter1=new OleDbDataAdapter(cmd);
adapter1.Fill(ds,"class1");
sql="select * from test where class = 2 order by id desc";
adapter1.SelectCommand.CommandText = sql;
adapter1.Fill(ds,"class2");
conn.Close();
哈希破解
哈希算法可以检验信息是否是相同的,这样的优势可以节省重复文件传送的时间。
举一个生活中很平常的例子,我们在生活工作中会使用一些软件给别人传送文件数据,如果有人传送了一份文件给一个人,然后又有一个人传送了相同的文件给了另外一个人,那么这个社交软件在第二次传送文件的时候会对比两次传送的哈希值,发现是相同的,该软件就不会再次上传文件给服务器了。
除此之外,哈希算法还可以检验信息的拥有者是否真实。
比如,我们在一个网站注册一个账号,如果网站把密码保存起来,那这个网站不论有多安全,也会有被盗取的风险。但是如果用保存密码的哈希值代替保存密码,就没有这个风险了,因为哈希值加密过程是不不可逆的
子域名挖掘
URL采集