WebGoat系列实验Injection Flaws
Numeric SQL Injection
- 下列表单允许用户查看天气信息,尝试注入SQL语句显示所有天气信息。
- 选择一个位置的天气,如Columbia,点击Go!按钮,使用Burp拦截GET请求,将参数station的值由原来的101改为101 or '1' = '1',将报文发送,服务器返回了所有的天气信息。
Log Spoofing
- 实验下方的灰色区域代表了web服务器的登录日志,目标是伪造admin用户登录的日志记录。
- 尝试随意输入一个用户名yangmzh3,点击Login按钮,在日志中出现一行Login failed for username: yangmzh3。
- 构造用户名为yangmzh3%0d%0aLogin succeed for username: admin,%0d字符表示回车CR,%0a字符表示换行LF,伪造了admin用户登录的日志。
XPATH Injection
- 下列表单允许雇员查看个人数据依据薪水信息。已知账户Mike/test123,目标是查看其他雇员的数据信息。
- 用户名与密码输入'or'1'='1,点击Submit按钮,服务器返回了所有雇员的数据信息。
String SQL Injection
LAB: SQL Injection
Stage 1:String SQL Injection
- 尝试使用boss Neville的账户进行登录,验证Neville的个人简介可以查看,其他功能也可以使用。
- 用户名选择Neville,密码输入'or'1'='1,点击Login按钮,发现登录失败。
- 再次输入上述密码,使用Burp拦截GET请求报文,发现发往后台服务器的密码发生了改变,说明前端对不合法的字符进行了URL编码处理。
- 在Burp中把密码修改为'or'1'='1,再次提交,成功使用Neville登录。
Stage 2:Parameterized Query #1
THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOAT
++Stage 3:Numeric SQL Injection++
- 作为雇员Larry,使用SQL注入参数来查看boss Neville的个人简介。
- 使用Larry进行登录,选中Larry Stooge,点击ViewProfile按钮查看Larry个人简介。使用Burp拦截GET请求报文,尝试对参数employee_id进行修改。
- 将id由101改为102,返回An error has occurred.。
- 将id由101改为101' or '1' = '1,返回An error has occurred.。
- 将id由101改为101 or 1 = 1,返回Larry的个人简介。
- 将id由101改为101 or '1' = '1',返回Larry的个人简介。
- 将id由101改为101 or 1 = 1 order by phone desc,返回了Sean Livingston的个人信息。由此判断页面显示的是以用户id作为索引返回的数据表中的当前第一条记录。
- 将id由101改为101 or 1 = 1 order by salary desc,返回了boss的个人信息。
Stage 4:Parameterized Query #2
THIS LESSON ONLY WORKS WITH THE DEVELOPER VERSION OF WEBGOAT
Database Backdoors
- 尝试使用一条额外的SQL语句查询用户ID为101的薪水,并将薪水调高。