sqlmap -u "http://192.168.0.106/get_method/get_data_login/" --data="name=name&password=pass" -D get_method -T user --dump
산출:
[11:27:40] [INFO] the back-end DBMS is MySQL
web application technology: PHP 7.3.27, Apache 2.4.46
back-end DBMS: MySQL >= 5.0 (MariaDB fork)
[11:27:40] [INFO] fetching columns for table 'user' in database 'get_method'
[11:27:40] [INFO] resumed: 'serial'
[11:27:40] [INFO] resumed: 'int(255)'
[11:27:40] [INFO] resumed: 'name'
[11:27:40] [INFO] resumed: 'varchar(255)'
[11:27:40] [INFO] resumed: 'password'
[11:27:40] [INFO] resumed: 'varchar(255)'
[11:27:40] [INFO] resumed: 'timestamp'
[11:27:40] [INFO] resumed: 'timestamp'
[11:27:40] [INFO] fetching entries for table 'user' in database 'get_method'
[11:27:40] [INFO] resumed: '2021-03-26 11:21:25'
[11:27:40] [INFO] resumed: 'hello'
[11:27:40] [INFO] resumed: 'hey'
[11:27:40] [INFO] resumed: '222'
Database: get_method
Table: user
[1 entry]
+-------+--------+----------+---------------------+
| name | serial | password | timestamp |
+-------+--------+----------+---------------------+
| hello | 222 | hey | 2021-03-26 11:21:25 |
+-------+--------+----------+---------------------+
[11:27:40] [INFO] table 'get_method.`user`' dumped to CSV file '/home/istiak/.local/share/sqlmap/output/192.168.0.106/dump/get_method/user.csv'
[11:27:40] [INFO] fetched data logged to text files under '/home/istiak/.local/share/sqlmap/output/192.168.0.106'
[*] ending @ 11:27:40 /2021-03-26/
php
암호:
include 'connection.php';
if($_SERVER['REQUEST_METHOD']=='POST'){
$name=$_POST['name'];
$password=$_POST['password'];
$query = mysqli_query($con,"SELECT * FROM `user` WHERE `name`='$name' && `password`='$password'");
$rows = mysqli_num_rows($query);
if($rows==0){
echo "failure";
}else{
echo "succeed";
}
}
mysqli_close($con);
문제는 이 코드를 실행할 때 sqlmap -u "http://192.168.0.106/get_method/get_data_login/" --data="name=name&password=pass" -D get_method -T user --dump
전송 중인데 data="name=name&password=pass"
데이터베이스에 데이터가 없다는 것입니다.
그리고 이 코드를 실행하면 데이터만 얻습니다.
+-------+--------+----------+---------------------+
| name | serial | password | timestamp |
+-------+--------+----------+---------------------+
| hello | 222 | hey | 2021-03-26 11:21:25 |
+-------+--------+----------+---------------------+
왜 모든 데이터를 얻을 수 없나요? 저도 시도해봤는데 sqlmap -u "http://192.168.0.106/get_method/get_data_login/" --data="name=hello&password=hey" -D get_method -T user --dump
같은 결과가 나왔네요..
답변1
php
먼저 코드를 살펴보세요
include 'connection.php';
if($_SERVER['REQUEST_METHOD']=='POST'){
$name=$_POST['name'];
$password=$_POST['password'];
$query = mysqli_query($con,"SELECT * FROM `user` WHERE `name`='$name' && `password`='$password'");
$rows = mysqli_num_rows($query);
if($rows==0){
echo "failure";
}else{
echo "succeed";
}
}
mysqli_close($con);
sql
이 파일로 무엇을 보내든 이제 코드만 확인하게 됩니다. SELECT * FROM `user` WHERE `name`='$name' && `password`='$password'
사용자 테이블에서 이름 = "사용자가 보낸 내용" 및 비밀번호 = "사용자가 보낸 내용"인 모든 항목을 선택합니다. 그래서 제가 모든 것을 포함하는 목록을 만들지 않았습니다.